引用的对象变量无效。 出现此错误的原因可能有多种:
声明变量时未指定类型。 如果声明变量时未指定类型,则它将默认为
Object
类型。例如,使用
Dim x
声明的变量将为Object;
类型;使用Dim x As String
声明的变量将为String
类型。提示
Option Strict
语句不允许隐式键入,否则将得到Object
类型。 如果省略类型,则会发生编译时错误。 请参阅 Option Strict 语句。你正在尝试引用已设置为
Nothing
的对象。你正在尝试访问未正确声明的数组变量的元素。
例如,如果尝试引用数组
products(3) = "Widget"
的元素,声明为products() As String
的数组将触发错误。 该数组没有元素,将被视为对象。你正在
With...End With
块被初始化之前尝试访问该块中的访问代码。With...End With
块必须通过执行With
语句入口点初始化。
注意
在早期版本的 Visual Basic 或 VBA 中,向变量赋值而未使用 Set
关键字(x = "name"
,而不是 Set x = "name"
)也会触发该错误。 Set
关键字在 Visual Basic .Net 中不再有效。
更正此错误
通过将以下代码添加到文件开头将
Option Strict
设置为On
:Option Strict On
运行项目时,对于未指定类型的任何变量,其“错误列表”中将显示编译器错误。
如果不想启用
Option Strict
,请搜索未指定类型的任何变量的代码(Dim x
,而不是Dim x As String
),并将预期类型添加到声明中。请确保未引用已设置为
Nothing
的对象变量。 在代码中搜索关键字Nothing
,并修改代码,以便该对象在被引用前不会设置为Nothing
。在访问任何数组变量之前,请确保已对它们进行维度设置。 可以在首次创建数组(
Dim x(5) As String
,而不是Dim x() As String
)时分配维度,或使用ReDim
关键字在首次访问数组之前设置其维度。请确保通过执行
With
语句入口点初始化With
块。