Excel 2010 VBA编辑器中的自动完成功能

4

我刚开始接触VBA。在Excel 2010的编辑器中,按下CTRL + Space可以自动完成。

但有时它不起作用。例如,当我输入“ActiveSheet.”时,无法查看该对象可能具有的方法和变量。

但是当我输入:

Set sheet = Workbooks.Open(file, True, True)
sheet.

当我按下CTRL+Space时,可以看到所有可能性。谢谢你的帮助!

尝试在这里查找。 - TheEngineer
http://www.pcreview.co.uk/forums/why-no-intellisense-activesheet-t4031852.html - chancea
好的,我是对的,因为计算机不知道ActiveSheet的类型是什么,所以没有自动完成的可能性,对吗? - mrbela
这个回答解决了你的问题吗?[自动完成/下拉框用于第一个句号之后的参数] (https://stackoverflow.com/questions/60387950/autocomplete-drop-down-box-for-arguments-past-the-first-full-stop) - Zev Spitz
1个回答

6
VBA仅在数据类型明确的情况下提供属性和方法。ActiveSheet可能是Worksheet对象、Macrosheet或其他一些我记不清的东西。
如果您打开对象浏览器(F2),查找ActiveSheet或Sheets类的Item属性,您会发现它们返回一个Object数据类型。Object是一种通用数据类型,可以保存任何对象(有点像Variant)。因为VBA不知道Object背后的对象是什么,所以它不能给您列出属性和方法的列表。
您无法通过使用“Set sheet = ...”来获取该列表,而是因为在代码中先前声明了sheet为Worksheet(可能)。虽然Sheet.Item(和Activesheet)返回一个Object,但是当您将某物声明为Worksheet时,就不存在歧义了。

RE VBA只在数据类型没有歧义时提供属性和方法。 -- ActiveSheet 属性的数据类型没有歧义,它的数据类型明确为 Object - Zev Spitz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接