Цикл по неактивным рабочим листам - PullRequest
0 голосов
/ 29 января 2019

Код цикла не появляется на всех листах сразу, если я не перехожу на каждую вкладку и не запускаю его

Dim Sheets As Variant
Dim Sheet As Variant

Sheets = Array("1", "2", "3", "4", "5", "6")

For Each Sheet In ActiveWorkbook.Sheets

If Range("G2").Value = 1 Then Range("h10:h11").Value = 
Range("N10:N11").Value
If Range("G2").Value = 1 Then Range("h14:h22").Value = 
Range("N14:N22").Value
If Range("G2").Value = 1 Then Range("h27:h29").Value = 
Range("N27:N29").Value
Next Sheet

как я могу исправить свой код, чтобы, находясь на вкладке 1, он изменял все остальные вкладки

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Нечто подобное, также проверяет лист и дает возможность пропустить активную таблицу

Sub n()

Dim Shts() As Variant
Dim ws As Worksheet
Dim s As Variant

Shts = Array("1", "2", "3", "4", "5", "6")

For Each s In Shts

    If WORKSHEET_EXISTS(CStr(s)) Then

        '   Exclude the activesheet?
        If s <> ActiveSheet.Name Then

            Set ws = ThisWorkbook.Worksheets(s)
            With ws
                If .Range("G2").Value = 1 Then
                    .Range("h10:h11").Value = .Range("N10:N11").Value
                    .Range("h14:h22").Value = .Range("N14:N22").Value
                    .Range("h27:h29").Value = .Range("N27:N29").Value
                End If
            End With

        '   End of exclude
        End If

    Else

        Debug.Print "Can't find worksheet : " & s

    End If

Next s

Erase Shts

End Sub

Function WORKSHEET_EXISTS(strWorksheetname As String) As Boolean

Dim w As Excel.Worksheet

WORKSHEET_EXISTS = False

On Error GoTo eHandle

Set w = ThisWorkbook.Worksheets(strWorksheetname)

WORKSHEET_EXISTS = True

ExitFunction:

Exit Function

eHandle:

End Function
0 голосов
/ 29 января 2019

Если вы не укажете родительский лист в коде, вы получите только активный лист.Используйте блок с:

Dim Shts As variant
Dim Sheet As Worksheet

Shts = Array("1", "2", "3", "4", "5", "6")

For Each Sheet In ActiveWorkbook.WorkSheets
    With Sheet
        If .Range("G2").Value = 1 Then 
            .Range("h10:h11").Value = .Range("N10:N11").Value
            .Range("h14:h22").Value = .Range("N14:N22").Value
            .Range("h27:h29").Value = .Range("N27:N29").Value
        End If
    End With
Next Sheet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...