2016-06-22 219 views
0

我知道這個問題已經經常討論,但我仍然無法找到它的修復程序 。我得到Subscript out of range error,這發生在 開啓和關閉。下標超出範圍錯誤 - Excel VBA

有時程序運行,但有時它會被卡住。

  • 該程序卡在以下行。
  • 與其他工作表相同的聲明沒有這個問題。
  • 我只打開一個工作簿,我更喜歡 使用Activeworkbook而不是指定Excel文件。

    設置shAuditTrail =

enter image description here 我曾嘗試以下

  1. 切換代碼ActiveWorkbook.Sheets( 「審計跟蹤」)來命名Sheet5,而不是工作表的名稱。
  2. 通過打印出 即時窗口中的所有工作表名稱,確保名稱正確。

好吧,我打開並修復該文件後,它似乎工作。對於那些不知道如何打開和修復損壞的工作簿的人,以下是步驟 (來自MS支持)。

this博客提供了一些有關解決同一問題的提示。 (雖然它沒有提供修復工作簿的解決方案。)

我欣賞所有那些迴應並試圖提供幫助的人。

enter image description here

+0

很難說這裏發生了什麼。在你設置它之前變量是空的還是空的?代碼有時可以運行嗎?你完全確定你指的是正確的工作簿? – brettdj

+0

我只打開一個工作簿。並且其他工作表不會發生此錯誤。是的,變量在設置之前是空的。我還能嘗試什麼? – Dombey

+1

現在猜測。建議您選擇所有工作表,右鍵單擊,選擇「移動或複製」,勾選「創建副本」並將其移動到新的工作簿。移動你的代碼。這應該重新生成工作表,並將工作簿的腐敗視爲一種可能性。 – brettdj

回答

3

我只有一個工作簿打開,我更喜歡使用Activeworkbook,而不是指定Excel文件。

如果你的宏永遠只打算在同一Workbook對審計跟蹤Worksheet運行,那麼你應該使用ThisWorkbook

Set shAuditTrail = ThisWorkbook.Worksheets("AuditTrail") 
+0

同意Robin ...最好使用ThisWorkbook。當代碼運行時,如果該工作簿沒有名爲「AuditTrail」的工作表,則可能會打開並激活另一個工作簿,那麼您將得到該錯誤。 – mongoose36

+0

從OP的帖子來看,這不是解決問題的方法。 – brettdj