簡體   English   中英

Excel VBA運行時錯誤91

[英]Excel VBA Run-Time Error 91

我希望有人可能會看到下面的編碼問題,該編碼始終生成運行時錯誤91,對象變量或未設置變量。

我有以下幾點:

Dim sht As Worksheet
Dim LastRow As Long, UseRow As Long
Set sht = ThisWorkbook.Worksheets("Basic Data History")
LastRow = sht.ListObjects("Basic_Data_Table").Range.Rows.Count
UseRow = LastRow
Set test = sht.ListObjects("Basic_Data_Table").DataBodyRange.Cells(2, 1)

LastRow分配工作完美。 我沒有問題。

該錯誤發生在Set測試行上。 我也嘗試過使用DataBodyRange(2,1),而不使用“單元”。 我也不認為這不是超出范圍的問題(我玩過參數)。

我添加了此“設置測試”行,以幫助調試下面的“ if”語句,該語句生成相同的錯誤。 我希望我的問題是可能我沒有正確設置對象(我在if語句中使用了sht.listobjects ...)。 我還嘗試取出“設置”以查看是否可行。 沒運氣。

我在此站點和其他站點上查看了許多不同的幫助文章。 我實際上是根據TheSpreadsheetGuru上的內容對此進行了修改。

我現在已經達到了“堅持不懈”的地步,我寫的東西沒有錯,而且我的耳朵里冒出了蒸汽……是的,我知道那是錯誤的,永遠不會有幫助。

關於我在做什么錯的任何想法嗎??? 提前致謝!!!

如果表不包含任何數據,則其DataBodyRange為Nothing。 當您向表中添加任何數據時,DataBodyRange會設置為一個范圍,即使以后刪除該數據,它也將保持初始化狀態。

在您的情況下,最簡單的解決方案可能是在執行任何操作之前先測試DataBodyRange,即

If Not sht.ListObjects("Basic_Data_Table").DataBodyRange Is Nothing Then 
   your code here
End if

要么

If sht.ListObjects("Basic_Data_Table").DataBodyRange Is Nothing Then Exit Sub

或使用“出現錯誤時轉到”並檢查錯誤91。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM