Excel VBA运行时错误91

Excel VBA运行时错误91,vba,excel,Vba,Excel,我希望有人能看到下面的编码的问题,它始终会生成运行时错误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 tes

我希望有人能看到下面的编码的问题,它始终会生成运行时错误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)
“最后一行”作业非常有效。我没有问题

错误发生在设置的测试线上。我也尝试过使用DataBodyRange2,1,而不使用单元格。我不认为这是一个超出范围的问题,我也没有玩的参数

我添加了这个set测试行,以帮助调试下面生成相同错误的if语句。我希望我的问题是可能我没有正确设置对象我使用的是sht.listobjects。。。在if语句中。我还试着把电视机拿出来看看是否能用。不走运

我在这个网站和其他网站上看到了很多不同的帮助文章。事实上,我是根据Spreadsheetguru上的内容修改的

我现在已经到了坚持我所写的没有错的地步,我的耳朵里冒出了蒸汽。。。是的,我知道那是错误的,而且从来没有帮助过

有没有想过我做错了什么???提前感谢

如果一个新表不包含任何数据,那么它的dataodyrange就是Nothing。将任何数据添加到表中时,DataBodyRange设置为一个范围,即使稍后删除数据,它仍将保持初始化状态

在您的情况下,最简单的解决方案可能是在做任何事情之前测试DataBodyRange,即

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


或者使用On Error GoTo并检查错误91。

如果在问题行之前添加这一行,输出是什么?Debug.Print sht.ListObjectsBasic_Data_Table.DataBodyRange为NothingTim-显示为True。test是范围对象吗?表中是否至少有2行数据?不,我没有将测试定义为范围对象。而且,虽然我设置了一个表,其中有一个标题行,下面有一个空行,但我没有在其中放入任何数据,我开始意识到这是我问题的核心。我已经为此工作了几个小时,自从我提交问题以来大约45分钟。我想把空的电子表格作为一个特例来处理,但我想你是在说,Tim的问题也让我明白了这是行不通的-我必须在标题下的表格中至少有一行数据才能工作-对吗?单元格2,1指的是表格数据范围中不包括标题行的第二行。如果只有一行DataBodyRange.Cells2,那么1什么都不是。如果您打算将test设置为第一行,只需将Cells2,1更改为Cells1,1。请注意,您应该将测试声明为范围对象。更快、更小、更干净的代码,而且不会出现混乱。
If sht.ListObjects("Basic_Data_Table").DataBodyRange Is Nothing Then Exit Sub