Предсказательный текст для VBA не работает

Ладно, это может быть очень глупый вопрос, но мой прогнозный текст при написании встречается только изредка. В настоящее время я использую Excel 2016.

Typing Range( открывает подсказку:
Снимок экрана, показывающий, что подсказка отображается правильно
Но, набрав .Range( в With Sheets(SName) не открывается подсказка:
Снимок экрана, показывающий, что подсказка не отображается

Кто-нибудь может помочь? Большое спасибо!

3 ответа

Решение

Excel не может понять, какой тип объекта Sheets(SName) есть, поэтому IntelliSense не может предоставить советы.

Этого следовало ожидать, так как Sheets Коллекция содержит как Worksheet а также Chart Объекты. Это означает, что он не знает, какие аргументы для Range Коллекция должна быть - или даже, что это коллекция. (Подумайте о .Add Метод - разные аргументы для каждого типа объекта!)

Тем не менее, быстрый тест показывает, что он по- прежнему не может определить тип объекта, если вы используете Worksheets(SName) - хотя все объекты в Worksheets коллекция Worksheet объекты.

Следующий код позволяет Excel идентифицировать тип объекта и, следовательно, позволяет отображать 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+Пробел в редакторе (который приводит к списку доступных предсказаний)

  2. В качестве альтернативы вы можете перейти к Обозревателю объектов (F2), который позволяет вам исследовать библиотеки классов и доступные объекты.

См. Снимок экрана ниже, например (когда вы нажимаете Ctrl+Пробел после Sheets( )

Я думаю, что это нормальное поведение. Я работаю с Excel VBA в течение длительного времени. Если снять скобку и переписать ее, предикативный текст должен появиться снова.

Но более полезным может быть объект Catalouge

Другие вопросы по тегам