Как использовать Immediate Windows в VBA Excel

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

VBA Immediate Window Excel. Определяем количество листов а книге

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

Где находится Immediate Window?

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

Как открыть Visual Basic Editor и Immediate Window в Excel и Mac

Самый быстрый способ добраться до Immediate Window — это:

  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 Window, вы увидите пустое поле с мигающим текстовым курсором. На первый взгляд это не слишком увлекательно, но Immediate Window может быть очень мощным и полезным инструментом.

Что делает окно Immediate

Думайте об этом, как о пустой ячейке на листе. Довольно скучно, пока вы не добавите формулу, верно?

Итак, давайте рассмотрим 5 примеров, которые помогут вам извлечь максимальную пользу из этой волшебной коробки.

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

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

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

?Activeworkbook.Worksheets.Count

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

VBA Immediate Window Excel определяем количество листов через Worksheets.Count

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

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

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

Excel VBA Immediate Window примеры использования вопросительно знака

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

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

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

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

Выполняем строку кода в VBA Immediate Window
 Selection.HorizontalAlignment = xlCenterAcrossSelection 

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

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

Worksheets("Лист1").Visible = xlVeryHidden 

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

 Range("A1").Font.Color = Range("A1").Interior.Color
Скрывает значение ячеек с помощью цвета шрифта (Font и Interior.Color)

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

# 3 — Запустить макрос

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

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

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

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

Запуск VBA Макроса из Immediate Window с использованием аргументов из Excel

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

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

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

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

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

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

Debug.Print xxxxx

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

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

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

Пример работы Debug.Print в VBA Immediate Window

Конечная цель этого макроса может состоять в том, чтобы удалить все пустые листы в книге, но мы могли бы сначала протестировать код перед тем, как фактически удалить какие-либо листы.

Строка Debug.Print создает список пустых листов в Immediate Window, и затем мы можем вручную проверить каждый из этих листов, чтобы убедиться, что они действительно пустые.

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

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

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

Excel Макрос вывода списка всех листов - вычисляем значение переменной в Immediate Window

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

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

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

Открепить Immediate Window

Если вы хотите узнать, как я заставил Immediate Window плавать поверх приложения Excel на некоторых скриншотах.

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

Закрепление VBA Immediate Window

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

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

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

Заключение

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

Оцените статью
Добавить комментарий