В Word 2016 VBA Я хочу установить затенение каждой ячейки таблицы с помощью цикла. Это, похоже, работает для таблиц размером до 15 * 15. С таблицами, такими как 20 * 20 или больше, Word больше не отвечает. Выполнение программы кажется правильным, хотя при использовании одного шага. Я попробовал это для таблиц ок. 50 * 50. ScreenRefresh и ScreenUpdating, похоже, не имеют никакого влияния. В примере кода установка затенения каждой ячейки на тот же цвет фона только для демонстрации, в конце я хочу применить более сложные настройки.Word VBA 2016, таблица: нет ответа при настройке затенения ячеек с помощью цикла
Sub TableCells_SetBackgroundColors()
' Set background color for each cell in Word table
' Application does not respond if table is larger than about 20*20
' debug single step works in any case
'Application.ScreenUpdating = False
Dim i, k, cntCol, cntRow As Integer
cntCol = 15 ' 20 is not ok
cntRow = 15 ' 20 is not ok
If ActiveDocument.Tables.Count <> 0 Then
ActiveDocument.Tables(1).Delete
End If
ActiveDocument.Tables.Add Range:=Selection.Range, _
numRows:=cntRow, _
NumColumns:=cntCol
Dim myTable As Word.Table
Set myTable = Selection.Tables(1)
With myTable.Borders
.InsideLineStyle = wdLineStyleSingle
.OutsideLineStyle = wdLineStyleSingle
End With
For i = 1 To cntRow Step 1
For k = 1 To cntCol Step 1
myTable.Cell(i, k).Shading.BackgroundPatternColor = wdColorRed
'Application.ScreenRefresh
Next k
Next i
'Application.ScreenUpdating = True
End Sub
Вы только что пробовали ждать, когда приложение больше не ответит? Когда выполнение кода занимает больше времени, то определенное время все офисные приложения показывают это поведение, насколько мне известно, но обычно вы все еще в порядке, если вы просто ждете. –