Прокрутите таблицы и вставьте формулу на основе имени таблицы - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь перебрать листы и вставить формулу, основанную на названии листа.Приведенный ниже код просто циклично проходит, но только на первом листе.

Sub test()
    Dim wsSheet As Worksheet
    Dim strFormulas As Variant
    Dim Lastrow As Long

    For Each wsSheet In Worksheets
         If wsSheet.Name = "Maintenance Formatting" Or _
              wsSheet.Name = "Fuel Formatting" Then
              strFormulas1 = "=VLOOKUP(C2,[BillingReportMacros.xlsm]Sheet1!$G:$J,4,FALSE)"
              Lastrow = Range("F1").CurrentRegion.Rows.Count + 1

              Range("A2").Formula = strFormulas1
              Range("A2:A" & Lastrow).FillDown
         End If
    Next wsSheet
End Sub

1 Ответ

0 голосов
/ 06 марта 2019

Основная проблема заключается в том, что код в вашем цикле не ссылается на лист, поэтому по умолчанию будет применяться только к активному листу. И это никогда не изменится.

Если ссылка на лист находится не в том месте, возможно, вы сможете решить, как ее исправить.

Кроме того, если вы имеете дело с более чем одной открытой книгой, вы должны добавить ссылки на рабочую книгу, а также ссылки на лист.

Sub test()
    Dim wsSheet As Worksheet
    Dim strFormulas As String
    Dim Lastrow As Long

    For Each wsSheet In Worksheets
        If wsSheet.Name = "Maintenance Formatting" Or wsSheet.Name = "Fuel Formatting" Then
            strFormulas = "=VLOOKUP(C2,[BillingReportMacros.xlsm]'" & wsSheet.Name & "'!$G:$J,4,FALSE)"
            Lastrow = wsSheet.Range("F1").CurrentRegion.Rows.Count + 1
            wsSheet.Range("A2:A" & Lastrow).Formula = strFormulas
        End If
    Next wsSheet

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...