循环浏览工作表并根据工作表名称插入公式

时间:2019-03-06 15:36:36

标签: excel vba

我正在尝试遍历工作表并根据工作表名称插入一个公式。下面的代码仅在第一个工作表上循环通过。

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 :(得分:0)

主要问题是循环中的代码未引用工作表,因此默认情况下仅适用于活动工作表。而且这永远不会改变。

如果工作表引用放置在错误的位置,也许您可​​以找出纠正方法。

此外,如果要处理多个打开的工作簿,则应添加工作簿引用以及工作表引用。

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