VBA运行时错误91.故障设置对象variables

我不认为答案太复杂了,我只能错过一些基本的东西。 为了给出上下文,代码和这个macros是由一个在我开始时不再在这里工作的员工编写的。 我每个月都用了很多次,今天当我试图运行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行中input该部分),并执行一些计算以从中创build更多的数据和统计信息。 然而,我感觉的问题在于我在这里发布的部分和对象和variables。

突出显示的错误行是“ Tool.Worksheets("Database").Delete 。 当我添加一个监视该行时,该值表明Object Variable or With block variable not set 。 这使我相信有些东西没有被设置为一个对象,但是我又是一个VBA新手,我对我的任何直觉都没有信心。

对于它的价值,我应该提到,我添加了另一个Watch行,说DataBook.Worksheets("Sheet1").Name = "Database"和该值的状态下Subscript out of range 。 我认为这意味着它也可能是一个问题,但是我100%确定有一个标签在我导入的文件名为Sheet1

您需要将Toolbuild立为工作簿的一些代码行。 就像是:

 Dim Tool As Workbook Set Tool = ActiveWorkbook 

您可以使用

 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)