接收编译错误:范围对象上的限定符无效

时间:2016-10-14 02:18:31

标签: vba excel-vba excel

我收到错误消息'编译错误:无效限定符'在下面代码的第二行。

Dim Init_Range() As Range
Dim Init_Mod_Range() As Range

Init_Range = Sheets("Sheet1").ListObjects("Table1").ListColumns(9).DataBodyRange
Init_Mod_Range = Sheets("Sheet1").ListObjects("Table1").ListColumns(8).DataBodyRange

Init_Range.Select
Selection.Clear

我确信我能够选择一个范围,因为如果我切换到下面的代码行,它就会起作用。

Sheets("Sheet1").ListObjects("Table1").ListColumns(9).DataBodyRange.Select
Selection.Clear

有人能告诉我为什么将范围分配给变量会破坏代码吗?也许我应该使用不同的变量类型?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

添加Set

Set Init_Range = Sheets("Sheet1").ListObjects("Table1").ListColumns(9).DataBodyRange

Set Init_Mod_Range = Sheets("Sheet1").ListObjects("Table1").ListColumns(8).DataBodyRange

在处理Object引用时需要使用Set,在处理简单数据类型时可以使用=进行赋值,但是范围和工作表等对象需要Set。

此外,当你声明Init_Range时,我认为你不需要(),这将声明一个范围数组,看起来你只想把它作为一个范围。

答案 1 :(得分:0)

在使用.Select或其他变体之前,需要首先设置像ListObjects和Ranges这样的对象变量:

Set Init_Range = Sheets("Sheet1").ListObjects("Table1").ListColumns(9).DataBodyRange