Вставлять значения только в определенные листы, используя функцию NEXT - PullRequest
0 голосов
/ 27 января 2020

У меня есть следующий VBA для вставки значения в каждый лист, кроме Sheet1, Sheet5, Sheet8:

Sub Insert_Values()
Dim b As Worksheet
For Each b In Worksheets
    If b.CodeName <> "Sheet1" _
    And b.CodeName <> "Sheet5" _
    And b.CodeName <> "Sheet8" _
    Then
        Dim Range As Range
        Set Range = b.Range("B2:C4")
        b.Select
        Range.Value = 1
    End If
Next b

End Sub

Все это прекрасно работает.


Однако теперь я хочу изменить код, чтобы он работал совсем наоборот.
Следовательно, только в Sheet1, Sheet5 и Sheet8 значения вставляются.
Я пытался go с этим:

Sub Insert_Values()
Dim b As Worksheet
For Each b In Worksheets
    If b.CodeName = "Sheet1" _
    And b.CodeName = "Sheet5" _
    And b.CodeName = "Sheet8" _
    Then
        Dim Range As Range
        Set Range = b.Range("B2:C4")
        b.Select
        Range.Value = 1
    End If
Next b
End Sub

Однако, когда я запускаю этот код, ничего не происходит.
Ни на одном из листов значения не вставляются.
Что мне нужно изменить в моем коде, чтобы он работал?

1 Ответ

0 голосов
/ 27 января 2020

Кодовое имя листа не может быть Sheet1 и Sheet5 и Sheet8. Вы хотите Or, а не And.

Более короткий способ сделать это может быть следующим:

For Each b in Array(Sheet1, Sheet5, Sheet8)
    b.Range("B2:C4").Value = 1
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...