正在引用无效的对象变量。 此错误可能由于以下几个原因而发生:
声明变量时未指定类型。 如果在未指定类型的情况下声明变量,则默认为类型
Object。例如,使用声明的
Dim x变量的类型为Object;声明的Dim x As String变量的类型为类型String。小窍门
该
Option Strict语句不允许隐式键入导致类型Object。 如果省略类型,将发生编译时错误。 请参阅 Option Strict 语句。您正尝试引用已设置为
Nothing..尝试访问未正确声明的数组变量的元素。
例如,如果尝试引用数组的元素,则声明为该
products() As String数组的数组products(3) = "Widget"将触发错误。 数组没有元素,并且被视为对象。在初始化块之前,你正在尝试访问块中的
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初始化。