对象变量或未设置块变量

正在引用无效的对象变量。 此错误可能由于以下几个原因而发生:

  • 声明变量时未指定类型。 如果在未指定类型的情况下声明变量,则默认为类型 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 中不再有效。

更正此错误

  1. Option Strict通过将以下代码添加到文件的开头设置为On

    Option Strict On
    

    运行项目时,编译器错误将显示在 “错误列表 ”中,用于未指定任何类型的变量。

  2. 如果不想启用 Option Strict,请在代码中搜索未指定类型(Dim x 而不是 Dim x As String)的任何变量,并将预期类型添加到声明。

  3. 请确保未引用已设置为 Nothing的对象变量。 在代码中搜索关键字 Nothing,并修改代码,以便在引用对象之前未设置为 Nothing 该对象。

  4. 在访问数组变量之前,请确保对任何数组变量进行维度化。 首次创建数组(Dim x(5) As String 而不是 Dim x() As String)时,可以分配维度,也可以在首次访问数组之前使用 ReDim 关键字设置数组的维度。

  5. 执行语句入口点,确保 With 块已 With 初始化。

另请参阅