繁体   English   中英

为什么在引用 VBA 中的另一个工作簿/工作表时出现下标超出范围错误 9?

[英]Why am I getting a Subscript Out of Range Error 9 when referencing another Workbook/Worksheet in VBA?

我有一个宏(在主工作簿内),它使用.value2从另一个工作簿/工作表获取数据。

我在代码中尝试了不同的更改。 我仔细检查了两个工作簿是否都打开了。 但是,我不断得到下Subscript out of range (Error 9)

Sub NielsenScorecard_DataPaste()
    Dim WbNielsenScorecard As Workbook
    Set WbNielsenScorecard = Workbooks("Nielsen Scorecard_Template.xlsm")

    TotalUS_DataPaste
End Sub

Sub TotalUS_DataPaste()

  **Subscript out of range (Error 9)**
    With Workbooks("Power Query - Meijer_Walmart_Total US xAOC.xlsm").Worksheets("PQTotalUS")
        Dim Data(0) As Variant
            'Copy Data Range
            Data(0) = .Range(.Cells(.Rows.Count, "A").End(xlUp), "AA2").Value2
    End With

    'Worksheet Code Name within this Workbook 
    With wsTotalUS
        Debug.Print wsTotalUS.Name
        .AutoFilter.ShowAllData
        .Range("A2:AA" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row).ClearContents
            With .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Resize(UBound(Data(0)))
                .Resize(ColumnSize:=UBound(Data(0), 2)).Value2 = Data(0)
            End With
    End With

End Sub

VBA 打印屏幕

您可以通过其代号引用工作表,但它是一种不同的格式,并且必须在ThisWorkbook中。 一个缺点是您无法通过代号引用另一个工作簿中的工作表。 Worksheets("PQ Total US").ActivatePQTotalUS.Activate 如果您的目标是缩短代码并且不必重复长名称,那么另一种选择是执行以下操作:

Dim wb1 as Workbook
Dim ws1 as Worksheet
Set wb1 = Workbooks("Power Query Meijer_Walmart_Total US xAOC.xlsm")
Set ws1 = wb1.Worksheets("PQ Total US")

With ws1
     'Do something
End with

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM