Вы можете легко пройтись по всем рабочим листам в рабочей книге, не вводя их имен, используя:
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
'do something
Next sht
Если диапазон, который необходимо скопировать, отличается на каждом рабочем листе, то вы можете найтинапример, заголовки столбцов, которые вы хотите скопировать, получить нужный диапазон и вставить его содержимое в ваш главный рабочий лист.
Если есть определенные листы, которые вы хотите использовать, то вы все равно можете просмотреть все листы.и проверьте, выполняется ли какое-либо условие для определенного листа, например:
For Each sht In ThisWorkbook.Worksheets
If sht.Name = "something" Then
'do something
End If
If Condition Then
'do something
End If
Next sht
Например, на листах, с которых вы хотите скопировать некоторые данные, может быть ячейка «флажка» с определенным значением, назначенным ейкак TRUE
или 1
.Код проверяет содержимое этой ячейки и действует соответствующим образом.
Теперь, если вы хотите сэкономить время, не просматривая все листы (что в любом случае не должно занимать слишком много времени), и избегатьпроверяя условие для каждого листа, вы можете создать пользовательские collection
рабочих листов, состоящих только из тех листов, которые вас интересуют.
Dim sht As Worksheet
Dim shtcol As New Collection
shtcol.Add ThisWorkbook.Worksheets(1)
shtcol.Add ThisWorkbook.Worksheets(2)
shtcol.Add ThisWorkbook.Worksheets(3)
For Each sht In shtcol
'do something
Next sht