我在在线教程中看到智能感知发挥了魔力:当您键入对象名称时,它会自动为您完成它。为什么我的 VBE 没有?它适用于属性和方法,但不适用于对象。
我使用的是 Office 2010,也许该功能在早期版本中不可用?
智能感知功能有两个要求:
-
可编译代码- 选择要编译
Debug..Compile VBA Project
菜单选项。如果项目不可编译,智能感知可能会对何时何地呈现自己感到困惑。 -
强类型变量- 变量和对象模型成员必须为强类型才能使智能感知正常工作。
-
这些变量都不是强类型变量,因此它们都没有智能感知:
Dim sht1, sht2 As Variant, sht3 As Object
然而,
Dim sht1 As Worksheet
将获得智能感知 -
某些对象模型成员(如
Excel.ThisWorkbook.Worksheets(1)
(返回Variant
(因为Worksheets
方法可以返回单个Worksheet
或Worksheets
数组(。若要获取智能感知,需要显式声明一个强类型变量,然后使用该变量:'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
如果使用返回在另一个库中定义的类型的成员(如
Excel.Application.VBE
(,则需要添加对该库的引用(在此示例中为VBIDE
(,然后才能声明适当的强类型成员。
-
要在 VBE 中强制使用智能感知功能,只需按 Ctrl+空格键。