#excel
#excel
Вопрос:
Я хочу, чтобы кнопка заменяла информацию на БОЛЬШИНСТВЕ листов информацией из основного листа при нажатии кнопки. Однако я хочу, чтобы он пропускал некоторые листы.
У меня есть приведенный ниже код, который работает, но есть 2 листа, которые я хочу пропустить при запуске. Как я могу указать, что пропускать листы с именами «Даты» и «Ежемесячно»
Sub Button4_Click()
Dim wsVar As Worksheet
For Each wsVar In ThisWorkbook.Sheets
With wsVar
.Range("B9:M30").Value = Worksheets("BASE").Range("B9:M30").Value
End With
Next wsVar
End Sub
Ответ №1:
Вы можете использовать оператор IF, чтобы проверить имя рабочего листа, а затем действовать соответствующим образом.
For Each wsVar In ThisWorkbook.Sheets
If wsVar.Name = "foo" Or wsVar.Name = "bar" Then
' do nothing
Else
With wsVar
.Range("B9:M30").Value = Worksheets("BASE").Range("B9:M30").Value
End With
End If
Next wsVar
Комментарии:
1. Куда в моем коде пойдет оператор If?
2. Я добавил несколько примеров кода. Настройте foo и bar на листах, которые вы хотите пропустить.
3. Это билет! Спасибо! Я приму ваш ответ, как только он мне позволит.
4. После запроса должно пройти определенное время
Ответ №2:
Этот код исключит все листы, перечисленные в Exclude
массиве. Обратите внимание, что сравнение имен листов выполняется без учета регистра, а начальные или конечные пробелы считаются непреднамеренными и удаляются.
Sub Button4_Click()
Dim wsVar As Worksheet
Dim Exclude() As String
Dim i As Integer
Exclude = Split("Dates,Monthly", ",")
For Each wsVar In ThisWorkbook.Worksheets
With wsVar
For i = UBound(Exclude) To 0 Step -1
If StrComp(wsVar.Name, Trim(Exclude(i))) = 0 Then Exit For
Next i
If i >= 0 Then .Range("B9:M30").Value = Worksheets("BASE").Range("B9:M30").Value
End With
Next wsVar
End Sub
С небольшим изменением вы можете преобразовать эту же функцию для обработки только перечисленных листов. Определить листы для действий положительно, а не отрицательно, — это, вообще говоря, безопасный способ. Но если вы решите это сделать, пожалуйста, также переименуйте массив 🙂