VBA 的预测文本不起作用

Predictive Text for VBA not working

好吧,这可能是一个非常愚蠢的问题,但我在写作时的预测文本只是偶尔发生。我目前使用的是 Excel 2016。

键入 Range( 打开工具提示:

但是,在 With Sheets(SName) 中键入 .Range( 不会 打开工具提示:

有人可以帮忙吗?非常感谢!

我认为这是正常行为。我与 excel vba 合作的时间更长。如果您删除括号并重写它,预测文本应该会再次出现。

但更有帮助的可能是对象目录

Excel 无法确定对象类型 Sheets(SName) 是什么,因此 IntelliSense 无法提供提示。

这是意料之中的,因为 Sheets 集合包含 Worksheet Chart 对象。这意味着它不知道 Range 集合的参数应该是什么——甚至不知道它 一个集合。 (想想 .Add 方法——每种对象类型都有不同的参数!)

但是,快速测试表明,如果您使用 Worksheets(SName),它仍然 无法识别对象类型 - 即使 [=18= 中的所有对象] 集合是 Worksheet 个对象。

下面的代码允许Excel识别Object类型,从而允许IntelliSense显示:

Option Explicit 'Always put this at the top of your Module!

Sub DataRoll()
    Dim wsTMP As Worksheet, SName As String

    SName = "Testing"

    Set wsTMP = ThisWorkbook.Worksheets(SName)

    With wsTMP
        .Range 'IntelliSense will pop up as soon as you add "("
    End With

    Set wsTMP = Nothing 'Tidy up after ourselves
End Sub

Intellisense 在 VBA 中自动启用,不确定您所说的偶尔发生是什么意思(它不会出现的示例场景将帮助我们更好地理解)

不过您可以尝试以下步骤:

  1. 在编辑器中尝试 Ctrl+Space(这会产生一个可用预测列表)

  2. 或者您可以导航到对象浏览器 (F2),它允许您浏览 class 库和可用对象

请参见下面的屏幕截图(当您在 Sheets( ) 之后按 Ctrl+Space