Вчера я решил изучить VBA, чтобы облегчить мое преимущество. Это происходит лучше, чем ожидалось, но я уже много часов ломаю зубы по этому коду.excel VBA Цитирование через рабочие листы: ActiveWorkbook.Worksheets (I)?
Я пытаюсь удалить все пустые (кроме заголовка) столбцы, и это на всех листах книги. После многих поисковых запросов мне удалось найти несколько примеров, которые я мог бы приспособить к моим потребностям.
Я использовал этот код: remove columns , а затем попытался петлю ее через листы с помощью дорогой старый Microsoft support
Вместе я frankensteined его в этом:
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim MyRange As Range
Dim iCounter As Long
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
'removecode
' Define the target Range.
Set MyRange = ActiveWorkbook.Worksheets(I).UsedRange
'Start reverse looping through the range.
For iCounter = MyRange.Columns.Count To 1 Step -1
'If entire column is empty then delete it.
If Application.CountA(Columns(iCounter).EntireColumn) = 1 Then
Columns(iCounter).Delete
End If
Next iCounter
'endremovecode
MsgBox ActiveWorkbook.Worksheets(I).Name
Next I
End Sub
Когда я запускаю это, только начальный рабочий лист очищается. Ящик сообщений проделывает все их.
Почему? Что я делаю не так? Я пробовал найти решение, но не те темы здесь, казалось, дали больше ясности.
Благодарим вас за то, что вы ведете меня в правильном направлении.
Лара
не ответ на ваш вопрос, но вы должны рассмотреть возможность изменения вашего цикла к для каждого, например: для каждого WS в ActiveWorkbook.Worksheets. –