Для разработчиков кода Excel VBA это общая концептуальная проблема, мы привыкли обрабатывать пустую ячейку как пустую (""). но на самом деле явно пустая ячейка таблицы Word содержит два невидимых символа (по крайней мере, в слове 2007), то есть chr(13)
& Chr(7)
. его можно проверить с помощью простого оператора, например
MsgBox Len(.Cell(1, 1).Range.Text)
MsgBox Asc(Right(.Cell(1, 1).Range.Text, 1))
MsgBox Asc(Left(.Cell(1, 1).Range.Text, 1))
поэтому, чтобы ваш код работал, его можно изменить на что-то вроде
Sub merge()
Dim x As Integer, i As Integer, S As String
x = ActiveDocument.Tables(1).Rows.Count
With ActiveDocument.Tables(1)
For i = 1 To x
S = .Cell(i, 2).Range.Text
S = Replace(S, Chr(13), "")
S = Replace(S, Chr(7), "")
If S = "" Then
.Cell(Row:=i, Column:=2).merge _
MergeTo:=.Cell(Row:=i, Column:=3)
.Borders.Enable = False
End If
Next i
End With
End Sub
или тестовая строка может быть изменена на
If Len(.Cell(i, 2).Range.Text) = 2 Then
также не мог понять, почему в вашем коде вы повторяете ActiveDocument.Tables(1).Rows.Count+1
, поэтому для тестирования я использовал только For i = 1 To x
person
Ahmed AU
schedule
11.04.2019