VBE 中的 Intellisense 不能完全用于对象

Intellisense in VBE not fully functioning for objects

我在在线教程中看到过 Intellisense 的神奇之处:当您键入对象名称时,它会自动为您完成。为什么我的 VBE 没有?它适用于属性和方法,但不适用于对象。

我使用的是 Office 2010,可能早期版本没有这个功能?

智能感知功能有两个要求:

  1. 可编译代码 - 选择菜单选项Debug..Compile VBA Project进行编译。如果项目不可编译,Intellisense 可能会对何时何地展示自己感到困惑。

  2. 强类型变量 - 变量和对象模型成员必须是强类型才能使 Intellisense 工作。

    • None 这些变量是强类型的,所以 none 其中有 Intellisense:

      Dim sht1, sht2 As Variant, sht3 As Object

      然而,Dim sht1 As Worksheet 将获得 Intellisense

    • 一些对象模型成员,例如 Excel.ThisWorkbook.Worksheets(1) return a Variant(因为 Worksheets 方法可以 return 单个 WorksheetWorksheets 的数组)。为了获得 Intellisense,您需要显式声明一个强类型变量,然后使用该变量:

      'Explicitly declare a strongly typed variable
      Dim sht1 As Worksheet
      'Cast the Variant result to a Worksheet
      Set sht1 = Excel.ThisWorkbook.Worksheets(1)
      With sht1
          'Type a period to invoke Intellisense for the Worksheet object
          Debug.Print .Name
      End With
      

      如果您正在使用在另一个库中定义的 return 类型的成员,例如 Excel.Application.VBE,那么您需要添加对该库的引用(在本例中, VBIDE),然后才能声明适当的强类型成员。

要在 VBE 中强制使用 Intellisense 功能,只需按 Ctrl+Space。