5 способов использовать окно VBA Immediate

  1. Где находится ближайшее окно?
  2. Эта пустая коробка волшебна!
  3. # 1 - Получить информацию об активной книге
  4. # 2 - Выполнить строку кода VBA
  5. № 3 - запустить макрос
  6. # 4 - Просмотр информации об отладке
  7. # 5 - Получить или установить значение переменной
  8. Открепить немедленное окно
  9. Скачать
  10. Заключение

Окно VBA Immediate - отличный инструмент, который может помочь любому пользователю Excel, даже если вы не пишете макросы. Узнайте, как получить ответы о своем файле Excel, быстро запустить макросы, отладить код и многое другое. Бесплатный файл для загрузки содержит примеры кода VBA.

VBA Immediate Window - это замечательный инструмент, который позволяет вам получать немедленные ответы о ваших файлах Excel и быстро выполнять код. Он встроен в редактор Visual Basic и имеет множество различных применений, которые могут быть очень полезны при написании макросов, отладке кода и отображении результатов вашего кода.

Каждый пользователь Excel может получить выгоду от Немедленного Окна, даже если вы не пишете макросы. Этот пост объяснит 5 различных применений для Немедленного Окна. Как только вы поймете возможности этого инструмента, вы обнаружите, что используете его постоянно.

Где находится ближайшее окно?

Окно Immediate находится в окне редактора Visual Basic .

Самый быстрый способ добраться до «Немедленного окна» - это:

  1. Нажмите Alt + F11 (удерживая клавишу Alt, затем нажмите клавишу F11) из любой точки Excel. Откроется окно редактора Visual Basic. (Mac версия Fn + Alt + F11)
  2. Нажатие Ctrl + G открывает окно Immediate и помещает текстовый курсор в него. Начните вводить свой код. (Версия для Mac - Ctrl + Cmd + G)

Когда вы откроете VB Editor (Alt + F11), вы можете увидеть, что Immediate Window автоматически появляется в правом нижнем углу. Это его местоположение по умолчанию. Если его там нет, вы можете нажать Ctrl + G или меню View> Immediate Window.

Эта пустая коробка волшебна!

Когда вы щелкнете внутри Немедленного окна, вы увидите пустое поле с мигающим текстовым курсором. На первый взгляд это не выглядит слишком увлекательно, но окно Immediate может быть очень мощным и полезным инструментом .

Думайте об этом как о пустой ячейке на листе. Это довольно скучно, пока вы не добавите формулу, верно? Итак, «Немедленное окно» очень похоже, поэтому давайте рассмотрим 5 примеров, которые помогут вам извлечь максимальную пользу из этой волшебной коробки .

# 1 - Получить информацию об активной книге

Простейшее использование окна «Немедленное» - это быстрое получение информации о рабочей книге, которая в данный момент открыта и активна в фоновом режиме. Вы можете оценить любую строку кода VBA в Immediate Window , и она сразу же даст вам результат.

Например, чтобы узнать, сколько листов в активной книге, введите следующую строку кода в окне «Немедленно» и нажмите клавишу «Ввод».

? Activeworkbook.Worksheets.Count

Ответ будет отображен в следующей строке окна Immediate, прямо под кодом.

Ответ будет отображен в следующей строке окна Immediate, прямо под кодом

Задайте вопрос, любой вопрос ...

Помещение знака вопроса (?) В начале оператора говорит Immediate окну, что мы задаем ему вопрос и ожидаем результата.

В следующем скриншоте показано несколько примеров того, как мы можем использовать окно «Немедленно» для получения значения, формата чисел и цвета заливки активной ячейки.

В следующем скриншоте показано несколько примеров того, как мы можем использовать окно «Немедленно» для получения значения, формата чисел и цвета заливки активной ячейки

Обратите внимание, что Immediate Window отображает intellisense как я печатать. Intellisense - это раскрывающееся меню, в котором отображаются свойства, методы и члены объекта, на который я ссылаюсь. Это позволяет очень быстро и легко вводить код в Immediate Window.

Вы можете скачать бесплатный учебник, который содержит еще несколько полезных примеров.

VBA Immediate Window examples VBA Immediate Window examples.xlsm (109,9 КБ)

# 2 - Выполнить строку кода VBA

Вам не нужно писать целый макрос, если вам просто нужно выполнить одну строку кода для вашей книги.

Удалите вопросительный знак в начале оператора, и Immediate Window выполнит или выполнит эту строку кода.

Selection
Selection.HorizontAlignment = xlCenterAcrossSelection
На изображении выше показано, как отформатировать выделенные ячейки с помощью выравнивания по центру выделения.

Вы также можете использовать следующую строку кода, чтобы сделать лист «очень скрытым».

Рабочие листы («Лист1»). Visible = xlVeryHidden

Другой пример - скрыть содержимое ячейки, сделав цвет шрифта таким же, как цвет заливки (фона).

Range («A1»). Font.Color = Range («A1»). Interior.Color
Range («A1»)

Я использую эту строку кода в Содержание Tab Hound инструмент, чтобы скрыть некоторые настройки, хранящиеся в ячейке A1. Даже если пользователь изменит цвет заливки листа, содержимое в ячейке A1 все равно будет скрыто после выполнения кода.

№ 3 - запустить макрос

Вы можете запустить макрос из окна Immediate, набрав его имя (процедуру) и нажав Enter.

Конечно, вы также можете сделать это, нажав клавишу F5 или кнопку Run Macro в VB Editor, но что если ваш макрос содержит аргументы?

Макрос не может быть запущен изнутри процедуры, если он содержит аргументы. Тем не менее, вы можете вызвать макрос из непосредственного окна.

Пример ниже представляет собой простой макрос, который вводит текущую дату (сейчас) в ячейку и меняет цвет шрифта на синий (Color = vbBlue). Этот макрос требует, чтобы ему были переданы два аргумента: имя рабочего листа и адрес ячейки, где будет введена отметка даты.

Этот макрос требует, чтобы ему были переданы два аргумента: имя рабочего листа и адрес ячейки, где будет введена отметка даты

Для такого макроса вы обычно будете вызывать его из другого макроса и указывать аргументы в макросе, который его вызывает. Но если вы просто хотите проверить макрос, содержащий аргументы, вы можете использовать Immediate Window для его вызова.

Это отлично подходит для написания и отладки кода. Возможно, вы не захотите запускать весь стек процедур (макросов) в коде, но вы можете использовать Immediate Window, чтобы вызывать только тот конкретный макрос, над которым вы работаете.

В приведенном выше примере показано, как можно указать аргументы после имени макроса. Для аргументов, которые являются строковыми переменными (текст), вам необходимо заключить переменную в кавычки.

Как вы можете видеть на изображении, intellisense доступен в Immediate Window, что позволяет легко указать аргументы для макроса.

Код на изображении выше включен в бесплатный образец файла, который вы можете скачать ниже.

VBA Immediate Window examples VBA Immediate Window examples.xlsm (109,9 КБ)

# 4 - Просмотр информации об отладке

Вы когда-нибудь видели в Интернете код VBA, в котором есть строка, подобная следующей?

Debug.Print xxxxx

С этим «xxxxx» является некоторой переменной, которую код вычисляет или производит.

Debug.Print говорит VBA напечатать эту информацию в Immediate Window. Это может быть полезно, когда вы хотите увидеть значение переменной в определенной строке вашего кода, без необходимости хранить переменную где-то в книге или показывать ее в окне сообщения. Это особенно полезно, когда вы пишете или отлаживаете код.

Пример ниже представляет собой макрос, который проходит по всем листам в книге и проверяет, является ли каждый лист пустым (не используется). Если лист пустой, он отображается в окне немедленного использования с помощью Debug.Print.

Конечная цель этого макроса может состоять в том, чтобы удалить все пустые (пустые) листы в книге, но мы могли бы сначала протестировать код перед тем, как фактически удалить какие-либо листы. Строка Debug.Print создает список пустых листов в «Немедленном окне», и затем мы можем вручную проверить каждый из этих листов, чтобы убедиться, что они действительно пустые.

# 5 - Получить или установить значение переменной

Немедленное окно также можно использовать для получения ответов о выполняемой в данный момент процедуре (макросе). Если вы просматриваете свой код (F8) или добавляете точку останова (F9) или добавляете строку STOP в свой код, тогда код будет приостановлен. Когда код приостановлен, вы можете использовать Immediate Window для получения информации о любых переменных или объектах, на которые есть ссылки в коде.

В следующем примере показан макрос, который создает список всех листов в активной книге. Существует множество различных способов написания этого кода, но в этом примере я использую переменную «lSht» в цикле «For Next» для циклического перемещения по рабочим листам, а затем добавляю имя листа на активный лист.

Существует множество различных способов написания этого кода, но в этом примере я использую переменную «lSht» в цикле «For Next» для циклического перемещения по рабочим листам, а затем добавляю имя листа на активный лист

Я добавил точку останова (F9) в коде, чтобы приостановить код при выполнении этой строки. Когда код приостановлен, Immediate Window можно использовать для оценки или изменения переменных. На изображении выше я использовал знак вопроса, чтобы проверить значение переменной lSht. Затем я использовал переменную, чтобы получить имя листа, который в данный момент обрабатывается в цикле.

Наконец, я изменил переменную lSht на 5, используя знак равенства (lSht = 5). Это позволит эффективно пропустить некоторые листы в цикле, потому что я изменил переменную с 2 на 5.

Это простой пример, но Immediate Window может пригодиться при пошаговом выполнении кода.

Открепить немедленное окно

Пит задал отличный вопрос в комментариях ниже. Он хотел знать, как я заставил Immediate Window плавать поверх приложения Excel на некоторых скриншотах.

Этот скринкаст покажет вам, как вы можете отсоединить Immediate Window.

Этот скринкаст покажет вам, как вы можете отсоединить Immediate Window

Вот пошаговые инструкции:

  1. Щелкните левой кнопкой мыши и удерживайте верхнюю панель непосредственного окна.
  2. Перетащите его из окна VB Editor. Непосредственное окно становится свободным плавающим окном, которое вы можете поместить поверх Excel.
  3. Чтобы повторно закрепить его, дважды щелкните на верхней панели окна.

Вы можете сделать это с любым из окон в редакторе VB, включая окна Project, Properties, Locals и Watch. Многие разработчики настраивают свой VB Editor не так, как макет по умолчанию. Некоторые предпочитают, чтобы окна проекта и свойств располагались справа, а не слева. Окно VB Editor дает вам большую гибкость для настройки вашего представления.

Скачать

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

VBA Immediate Window examples VBA Immediate Window examples.xlsm (109,9 КБ)

Заключение

Immediate Window - очень универсальный инструмент, который действительно может помочь при написании и отладке макросов. Это отличный способ получить быстрые ответы о вашем файле или приложении. Если вы новичок в VBA, Immediate Window будет очень полезен, когда вы начнете изучать и писать код.

Для чего вы используете Immediate Window? Пожалуйста, оставьте комментарий ниже с вашими предложениями или любыми вопросами.

Где находится ближайшее окно?
Где находится ближайшее окно?
Это довольно скучно, пока вы не добавите формулу, верно?
Конечно, вы также можете сделать это, нажав клавишу F5 или кнопку Run Macro в VB Editor, но что если ваш макрос содержит аргументы?
Для чего вы используете Immediate Window?