VBE 中的 Intellisense 不能完全用于对象
Intellisense in VBE not fully functioning for objects
我在在线教程中看到过 Intellisense 的神奇之处:当您键入对象名称时,它会自动为您完成。为什么我的 VBE 没有?它适用于属性和方法,但不适用于对象。
我使用的是 Office 2010,可能早期版本没有这个功能?
智能感知功能有两个要求:
可编译代码 - 选择菜单选项Debug..Compile VBA Project
进行编译。如果项目不可编译,Intellisense 可能会对何时何地展示自己感到困惑。
强类型变量 - 变量和对象模型成员必须是强类型才能使 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 单个 Worksheet
或 Worksheets
的数组)。为了获得 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。
我在在线教程中看到过 Intellisense 的神奇之处:当您键入对象名称时,它会自动为您完成。为什么我的 VBE 没有?它适用于属性和方法,但不适用于对象。
我使用的是 Office 2010,可能早期版本没有这个功能?
智能感知功能有两个要求:
可编译代码 - 选择菜单选项
Debug..Compile VBA Project
进行编译。如果项目不可编译,Intellisense 可能会对何时何地展示自己感到困惑。强类型变量 - 变量和对象模型成员必须是强类型才能使 Intellisense 工作。
None 这些变量是强类型的,所以 none 其中有 Intellisense:
Dim sht1, sht2 As Variant, sht3 As Object
然而,
Dim sht1 As Worksheet
将获得 Intellisense一些对象模型成员,例如
Excel.ThisWorkbook.Worksheets(1)
return aVariant
(因为Worksheets
方法可以 return 单个Worksheet
或Worksheets
的数组)。为了获得 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。