2014-04-03 145 views
1

我不认为答案太复杂,我必须错过一些基本的东西。为了给出上下文,代码和这个宏是由一个在我开始时不再在这里工作的员工编写的。我每月都用了很多次,今天当我尝试运行VBA脚本时,它突然给了我一个错误。VBA运行时错误91.故障设置对象变量

它给了我标准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

+1

是什么工具?它是什么样的对象? –

+0

工具目前定义为“As ThisWorkbook”。 – user3494029

回答

4

您需要一些代码行来建立工具作为工作簿。喜欢的东西:

Dim Tool As Workbook 
Set Tool = ActiveWorkbook 
+0

非常感谢您的快速回答。在我的编码中,我会放置这些行吗?在“Application.DisplayAlerts”行之前?再次,我是一个新的VBA家伙,所以我不完全确定我在做什么。再次感谢 – user3494029

+1

@ user3494029在您打开新的工作簿之前.......................... –

+0

它的工作!谢谢。我尝试过其他网站,并回答你的问题,很简单,因为它可能是最好的。只是为了让你知道你通过解决这个问题让我度过了一天!谢谢大家 – user3494029

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) 
相关问题