MyTetra Share
Делитесь знаниями!
5 способов использования Immediate Window в VBA Excel
12.10.2019
20:14
Раздел: !Закладки - VBA - Меню VB-справка

5 способов использования Immediate Window в VBA Excel

Источник: https://excelpedia.ru/makrosi-v-excel/vba-immediate-window-excel


5 способов использования Immediate Window в VBA Excel

Автор Дмитрий Якушев На чтение8 мин. Просмотров153

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

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

Содержание

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

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

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

Самый быстрый способ добраться до 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 может быть очень мощным и полезным инструментом.

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

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

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

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

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

?Activeworkbook.Worksheets.Count

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

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

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

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

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

Вы можете скачать файл с несколькими полезными примерами.

VBA Immediate Window Examples.xlsm (109.9 KB)

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

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

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


1

Selection.HorizontalAlignment = xlCenterAcrossSelection

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

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


1

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

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


1

Range("A1").Font.Color = Range("A1").Interior.Color


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

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

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

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

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

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

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

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

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

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

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

VBA Immediate Window Examples.xlsm (109.9 KB)

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

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

Debug.Print xxxxx

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

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

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

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

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

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

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

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

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

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

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

Открепить Immediate Window

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

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

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

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

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

Скачать файл

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

VBA Immediate Window Examples.xlsm (109.9 KB)

Заключение

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

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования