Я довольно новичок в VB и имею, вероятно, простую проблему - мне нужно пройти все листы в книге и удалить все диаграммы (разбросанные вокруг), выберите последнюю строку, которая имеет данные, перемещается назад и удаляет пустые строки. Я попробовал что-то, что я собрал из StackOverflow и даже с сайта MS, но ничего не работает.Excel VB - цикл Foreach внутри цикла Foreach (цикл через листы, удаление пустых строк)
Sub DeleteChartsRowsAllSheets()
Dim Ws As Worksheet, chtObj As ChartObject, i As Long
For Each Ws In ThisWorkbook.Worksheets
For Each chtObj In Ws.ChartObjects
chtObj.Delete
Next
'We turn off calculation and screenupdating to speed up the macro.
With Application
'Turn off screen updating and calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
For i = Selection.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
Selection.Rows(i).EntireRow.Delete
End If
Next i
'Turn screen updating and calculation back on
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
Next Ws
End Sub
Любые советы? :)
Удивительный, он работает! Нужно ли это «прокручивать листы» или я могу опустить его (часть «Далее Ws»)? –