Пропуск рабочих листов без утверждений IF - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть некоторый код здесь, но я хотел бы пропустить имена рабочих листов Aggregated, Collated Results, Template, End.Я попытался добавить оператор If, чтобы пропустить их, но мне это не нравится.

Sub FillBlanks()
    Dim ws As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range

    For Each ws In Worksheets
        Set rng2 = ws.Range("L1:AB40")

        On Error Resume Next
        Set rng1 = rng2.SpecialCells(xlBlanks)
        on error goto 0

        if not rng1 is nothing then
            Application.Iteration = True
            rng1.FormulaR1C1 = "=AVERAGE(R[-1]C,R[1]C)"
            Application.Iteration = False
            rng2.Value = rng2.Value
        end if    
    Next ws 
End Sub

1 Ответ

0 голосов
/ 22 ноября 2018

Если вы добавите имена листов, которые вы хотите пропустить, в строку worksheetsToSkip = array("... (ниже), то приведенный ниже код должен пропустить указанные листы.

Option Explicit

Sub FillBlanks()

    Dim ws As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range

    Dim worksheetsToSkip As Variant
    worksheetsToSkip = Array("Aggregated", "Collated Results", "Template", "End")

    For Each ws In Worksheets
        If IsError(Application.Match(ws.Name, worksheetsToSkip, 0)) Then
             Set rng2 = ws.Range("L1:AB40")

             On Error Resume Next
             Set rng1 = rng2.SpecialCells(xlBlanks)
             On Error GoTo 0

            If Not rng1 Is Nothing Then
                 Application.Iteration = True
                 rng1.FormulaR1C1 = "=AVERAGE(R[-1]C,R[1]C)"
                 Application.Iteration = False
                 rng2.Value = rng2.Value
            End If
        End If
    Next ws
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...