我认为答案太复杂了,我必须遗漏一些基本的东西。为了给出上下文,代码和这个宏是由一个在我开始时不再在这里工作的员工编写的。我每月都使用它多次,当我试图运行VBA脚本时,它突然给了我一个错误。
它给了我标准的Run Time Error 91 (Object variable or block variable not set)
。代码具体是:
Dim DataBook As Workbook
Set DataBook = Workbooks.Open(Import_File_Path)
DataBook.Worksheets("Sheet1").Name = "Database"
Application.DisplayAlerts = False
Tool.Worksheets("Database").Delete <-----highlighted error line
Application.DisplayAlerts = True
DataBook.Worksheets("Database").Move before:=Tool.Worksheets(1)
VBA脚本正在尝试从我已生成的Excel工作表中获取原始数据,并导入文件(因此该部分位于Set
行)并执行大量计算以创建更多数据和来自那里的统计数据。然而,我感觉到的问题在于我在这里发布的部分以及对象和变量。
突出显示的错误行是Tool.Worksheets("Database").Delete
。当我向该行添加Watch时,值为Object Variable or With block variable not set
。这让我相信某些东西没有被设定为它应该作为一个对象,但我又是一个VBA新手,我对自己的直觉感到不自信。
为了它的价值,我应该提到我在Watch
的行中添加了另一个DataBook.Worksheets("Sheet1").Name = "Database"
以及该州Subscript out of range
的值。我认为这也可能是一个问题,但是我100%确定我导入的文件中有一个名为Sheet1
的标签。
答案 0 :(得分:4)
您需要一些代码来将工具建立为工作簿。类似的东西:
Dim Tool As Workbook
Set Tool = ActiveWorkbook
答案 1 :(得分:0)
您可以使用
Dim DataBook As Workbook
Set DataBook = Workbooks.Open(Import_File_Path)
DataBook.Worksheets("Sheet1").Name = "Database"
Application.DisplayAlerts = False
DataBook.Worksheets("Database").Delete <-----Change
Application.DisplayAlerts = True
DataBook.Worksheets("Database").Move before:=Tool.Worksheets(1)