2013-09-26 3 views
0

Я ищу способ удаления пустых строк в комментариях с помощью VBA. У меня есть файл Excel с множеством поврежденных комментариев, содержащий пустые строки, и один проход один за другим не является вариантом.Удалить пустые строки в комментарии в Excel с помощью VBA

Я не определил команду для редактирования строк в комментариях и не знаю, с чего начать, поэтому у меня нет кода, чтобы показать вам, ребята. Но я думаю в строке:

For Each comment In ActiveSheet.Comments 
    "REMOVE EMPTY ROWS" <-- What to put here? 
Next comment 

Надеюсь, что вы все равно можете мне помочь!

EDIT: Все мои пустые строки в конце комментария, как это:

enter image description here

+0

Для этого в google есть много готового кода. Вы пытались Google? – Santosh

+0

Конечно, я пробовал Google! Но я ничего не нашел, – andysando

ответ

3

Я нашел ответ. Похоже, что это не пустые строки, это просто размер комментария, который каким-то образом изменился. Таким образом, этот код зафиксировал это:

Sub Comments_AutoSize() 

Dim MyComments As Comment 
Dim lArea As Long 
For Each MyComments In ActiveSheet.Comments 
    With MyComments 
    .Shape.TextFrame.AutoSize = True 
    If .Shape.Width > 300 Then 
     lArea = .Shape.Width * .Shape.Height 
     .Shape.Width = 200 
     .Shape.Height = (lArea/200) * 1.1 
    End If 
    End With 
Next 
End Sub 
1

Предположим, что ваш комментарий выглядит следующим образом

enter image description here

Вы могли бы попробовать это

Sub RemoveEmptyLinesInComments() 

    Dim c As Comment 
    For Each c In ActiveSheet.Comments 
     c.Text Text:=Replace(c.Text, vbLf, Chr(32)) 
    Next c 

End Sub 

для достижения

enter image description here

Update

Ok, после того, как вы изменили свой вопрос и изменили значение с прилагающимися деталями Ive придумали другой код в виде раствора. Попробуйте

Sub RemoveEmptiesFromComments() 

    Dim c As Comment 
    For Each c In ActiveSheet.Comments 
     Dim v As Variant 
     v = Split(c.Text, Chr(32)) 
     Dim i As Long, s As String 
     For i = LBound(v) To UBound(v) - 1 
      s = s & Chr(32) & v(i) 
     Next i 
     Dim rng As Range 
     Set rng = c.Parent 
     c.Delete 
     rng.AddComment Text:=s 
     rng.Comment.Shape.TextFrame.AutoSize = True 
    Next c 

End Sub 
+0

Хмм, не получилось, чтобы это сработало. Все мои пустые строки находятся в конце комментария, см. Мой отредактированный вопрос выше, не имеет значения? – andysando

Смежные вопросы