2014-04-03 146 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) 
相關問題