【问题标题】:Unable to set excel VBA worksheet variable无法设置 excel VBA 工作表变量
【发布时间】:2019-06-01 07:39:59
【问题描述】:

我正在尝试将源工作表变量设置为另一个工作簿(DataSource1.xlsx)中的目标工作表变量,目的是最终使用它来读取目标工作表并执行一些计算,但它使我的下标超出范围错误。

这是我的代码

Sub GenerateReport()

Dim source As Worksheet

Dim path As String    
Set source= Workbooks(ThisWorkbook.path & "\DataSource1.xlsx").Sheets("Sheet1")

'path = ThisWorkbook.path

'Set wb = Workbooks.Open(ThisWorkbook.path & "\DataSource1.xlsx")

Dim one As Integer

one = 10

End Sub

文件都放在同一个文件夹中,我检查了没有命名或路径错误,为什么会出现这种情况?

编辑

这是我的项目在 GSerg cmets 之后的样子

【问题讨论】:

    标签: excel vba ex


    【解决方案1】:

    如果工作簿已经打开,则需要按名称引用,不带路径:

    Set source = Workbooks("DataSource1.xlsx").Sheets("Sheet1")
    

    如果工作簿还没有打开,需要先打开:

    Set source = Workbooks.Open(ThisWorkbook.path & "\DataSource1.xlsx").Sheets("Sheet1")
    

    【讨论】:

    • @Computernerd 在哪方面?
    • 我得到同样的错误,下标超出范围错误
    • @Computernerd 您在调用Workbooks.Open 时不会收到此错误。这意味着您正在尝试引用尚未打开的工作簿,或者该工作簿已打开但它没有 Sheet1
    • 哦,所以我必须先打开工作簿才能引用它?
    • @Computernerd 这就是我上面提到的If the workbook is not opened yet, you need to open it first 的意思。
    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多