2016-08-23 56 views
1

我是VBA的新手。我在智能感知方面遇到了问题,但在这里我没有找到任何答案,似乎人们有与我不同的问题。VBA智能感知只显示后的第一个阶段,没有水平后打字第一

每当我键入: 文件路径= ActiveWorkbook.ActiveSheet.Cells(5,6).value的

它works--这是一个有效的命令,但我想学习,如果我这样做:

Filepath = ActiveWorkbook。

然后intellisense出现,ActiveSheet将在那里。但如果我把另一个。活动工作表之后,其他选项不会出现,这意味着单元格不会作为选项提供。所以就好像在第一个Intellisense之后没有其他方法/属性。

但是,如果我是做这样的事情:

暗淡MySheet的工作作为工作表

设置MySheet的工作= ActiveWorkbook.ActiveSheet

,然后我做MySheet的工作。 intellisense会为此提出并向我展示“单元格”和其他选项,但不会低于此水平。任何帮助,将不胜感激。

+0

这是因为Activesheet可能是一个图表。通过将其声明为工作表,您可以为Intellisense提供更多信息。 –

回答

4

ActiveSheet实际上是Object,而不是Worksheet(使用F2检查VBE中的对象浏览器)。所以Intellisense不知道它是一个Worksheet,并不知道它有什么成员。当你明确地将它设置为Worksheet变量时,它知道变量的类型并可以使用它来确定关联的成员。

Object Explorer

ActiveSheetObject因为Chart对象也可以有自己的片材,并且如果Chart片当前被激活,这将是ActiveSheet值。这与Workbook.WorksheetsWorkbook.Sheets都存在相同的原因 - 前者仅为Worksheet对象,而后者也可包含Chart对象。因此,Sheets(1)也返回Object,因此键入ActiveWorkbook.Sheets(1).也不会触发Intellisense。

相关问题