Непосредственное окно Excel VBA - 5 замечательных способов его использования!

«Немедленное окно» может быть полезным инструментом при работе с VBA в Excel.

Окно «Немедленное» позволяет быстро выполнять такие действия, как:

  • Получить информацию о файлах Excel (например, количество листов в книге или название книги)
  • Получите отладку и быстро распечатайте информацию
  • Выполнить строку кода за секунды
  • Запустить макрос (или вызвать функцию)
  • Получить информацию о переменных (или установить значение или переменные)

Хотя вам не нужно использовать немедленное окно для работы с VBA в Excel, умение правильно его использовать может сделать вас намного эффективнее.

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

Давайте начнем!

Что такое немедленное окно в Excel VBA?

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

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

Immediate Window делает гораздо больше (как вы увидите позже в этом руководстве). Но для начала давайте представим себе немедленное окно как инструмент, который поможет вам ускорить работу в Excel VBA.

Где найти непосредственное окно?

Когда вы открываете Excel VB-Editor, вы уже можете видеть непосредственное окно как часть VB Editor. И если вы его еще не видите, вы можете легко заставить его появиться.

Ниже приведены шаги, чтобы открыть редактор VB и сделать видимым окно Immediate Window:

  1. Перейдите на вкладку «Разработчик» на ленте Excel (если вы не видите вкладку «Разработчик», нажмите здесь, чтобы узнать, как ее получить)
  2. В группе кода нажмите «Visual Basic». Это откроет редактор VB
  3. В редакторе VB нажмите на опцию «Просмотр» в меню.
  4. Щелкните Немедленное окно. Это приведет к немедленному отображению окна в редакторе VB.

Если вам удобнее работать с ярлыками, ниже приведены некоторые из них, чтобы ускорить выполнение вышеуказанных шагов:

  • Чтобы открыть редактор VB - ALT + F11 (это работает, даже если у вас нет вкладки Разработчик на ленте)
  • Чтобы показать ближайшее окно - Ctrl + G (используйте это, редактор VB открыт)

Примеры использования немедленного окна в Excel VBA

Теперь, когда вы знаете, где найти непосредственное окно, давайте рассмотрим несколько замечательных примеров, где вы можете использовать его при работе с Excel VBA.

Получите информацию о файлах / книгах

«Немедленное окно» - это место, где вы можете задать вопросы о рабочих тетрадях, и оно сразу же даст вам ответ.

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

? ActiveWorkbook.Sheets.Count

Это мгновенно сообщит вам общее количество листов в активной книге.

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

? (знак вопроса) предполагается использовать перед запросом, чтобы VBA мог понять, что вы задаете вопрос. Если вы не используете этот вопросительный знак, немедленное окно не даст вам подробностей / ответа.

Это действительно простой пример, в котором Immediate Window дает вам некоторую информацию и экономит время.

Ниже приведены еще несколько примеров:

Чтобы получить имя активной книги

? ActiveWorkbook.Name

Чтобы получить имя активного листа

? Activesheet.Name

Чтобы получить путь к Рабочей книге (адрес, где она сохранена)

? ActiveWorkbook.Path

Поэтому, если вам что-то нужно об объекте (например, рабочая книга, листы, диаграммы, фигуры, диапазон и т. Д.), Вы можете использовать немедленное окно, чтобы быстро получить эту информацию.

Получить информацию об отладке.

В Excel VBA Debug.Print используется для мгновенного отображения значения переменной в непосредственном окне.

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

Sub DisplayMessage () Debug.Print "Доброе утро" End Sub

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

Например, если вы хотите получить имена всех листов в книге, вы можете использовать следующий код:

Sub GetSheetNames () Для каждого sh в ActiveWorkbook.Sheets Debug.Print sh.Name Next sh End Sub

Приведенный выше код просматривает каждый лист в активной книге и дает имя в ближайшем окне.

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

Если вы используете Отладка.Печать чтобы отладить код, не забудьте удалить его, когда закончите.

Запустить макрос (или функцию)

Хотя есть разные способы запустить макрос в Excel, один из быстрых способов - использовать немедленное окно.

Чтобы запустить макрос, все, что вам нужно сделать, это ввести имя макроса в непосредственном окне и нажать клавишу ввода (чтобы это работало, в конце имени макроса должен быть курсор).

Ниже приведен пример, в котором, как только вы вводите имя макроса в непосредственном окне, он запускает код (где код отображает сообщение «Доброе утро» в непосредственном окне).

Это может быть полезно, если у вас есть код и вы хотите проверить, работает ли он должным образом или нет. У вас может быть одна или несколько строк Debug.Print в коде и запускать макрос прямо из окна.

Он мгновенно покажет вам значения в ближайшем окне, и вы можете проверить, все ли работает нормально или нет.

Вы также можете использовать непосредственное окно для выполнения пользовательских функций.

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

Выполнить строку кода (или несколько строк кода)

В немедленном окне вы также можете запустить строку кода (или несколько строк кода).

Самое приятное в этом то, что вы можете просто открыть непосредственное окно, запустить код и закрыть (в отличие от макроса, который вы должны поместить в окно модуля, а затем выполнить).

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

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

Для каждого листа в Thisworkbook.Sheets: Sheet.Visible = True: Next Sheet

Обратите внимание: хотя это выглядит как одна строка кода, она состоит из трех частей.

Каждая часть отделяется: (двоеточием), который действует как разрыв строки. Это позволяет вам использовать цикл For Next в непосредственном окне для просмотра каждого листа и изменения свойства visible на TRUE (которое показывает любой скрытый лист).

Получить значения переменных

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

Переменная - это то, что содержит значение, и это значение может изменяться во время выполнения кода. Вы можете использовать немедленное окно для проверки значений этих переменных.

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

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 To 10 k = k + i Next i Debug.Print i, k End Sub

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

Если это не дает ожидаемых результатов, вы можете отладить код.

Многие люди используют окно сообщения при отладке кода. Хотя он работает нормально, я нахожу его немного навязчивым, поскольку он переносит меня в книгу Excel и показывает окно сообщения. С другой стороны, использование немедленного окна для отладки намного удобнее и позволяет мне оставаться в самом редакторе Visual Basic.

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

Установить значение переменной при отладке

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

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

Например, если у вас есть цикл, который выполняется 10 раз, и вы хотите проверить, что происходит, когда цикл выполняется в 8-й раз, вам не нужно выполнять цикл семь раз, чтобы перейти к восьмым итерациям. Вы можете просто добавить точку останова перед циклом и изменить переменную цикла на 8. Теперь, когда вы запустите код, он покажет вам, что происходит, когда цикл запускается в 8-й раз.

Это становится намного более полезным, когда вы пишете сложные коды и хотите отлаживать определенные циклы.

Предположим, у вас есть код, показанный ниже:

Sub Показать таблицы () For i = 1 To Worksheets.Count Debug.Print Sheets (i). Name Next i End Sub

Приведенный выше код просто перечисляет имена всех листов в книге в непосредственном окне.

Если вы не хотите перечислять имена всех листов, а только листы после 10-го листа, вы можете разместить точку останова во второй строке цикла (чтобы ничего не выполнялось после этой строки), а затем изменить переменная 'i' равняется 11.

Чтобы изменить имя переменной в непосредственном окне, введите следующую строку:

я = 11

Это гарантирует, что первые 10 раз цикла будут проигнорированы, а значение вашей переменной будет установлено на 11.

Закрепление / открепление немедленного окна

Вы можете сразу же прикрепить окно к редактору VB - это означает, что оно остается в одном месте в редакторе VB и перемещается и изменяется вместе с ним.

И вы также можете отключить его, что означает, что он не зависит от редактора VB и может быть перемещен как отдельное окно.

Ниже описано, как изменить настройки стыковки для непосредственного окна:

  1. Выберите пункт «Инструменты» в меню редактора VB.
  2. Нажмите "Параметры".
  3. В диалоговом окне «Параметры» щелкните последнюю вкладку - «Стыковка».
  4. Установите флажок «Немедленное окно», чтобы сделать его закрепляемым, и снимите флажок, чтобы его нельзя было закрепить.
  5. Нажмите ОК.

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

Закрепляемое означает, что непосредственное окно станет частью существующего окна, разместив себя в определенных местах, например, в левой части окна или внизу. Это позволяет закрепленным окнам перемещаться и изменяться вместе.

Немедленное окно не отображается - вот несколько способов его получить

Это могло произойти по нескольким причинам.

Самая распространенная причина, по которой вы не видите окно сразу, - это то, что оно не стало видимым. Он может быть не виден по умолчанию, и чтобы он появился, вам нужно перейти к опции «Просмотр» в меню и выбрать опцию «Немедленное окно». Это сделает его видимым в редакторе VB.

Вы также можете использовать клавиатуру Control + G, чтобы немедленно отобразить окно. Используйте это сочетание клавиш, пока вы находитесь в редакторе VB.

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

Если вы вообще не видите непосредственное окно, вот кое-что, что сработало для многих людей (это часто случается из-за изменения разрешения экрана):

  1. Откройте редактор VB
  2. Нажмите Ctrl-G, чтобы переключить фокус на немедленное окно (или выберите опцию View в меню, а затем щелкните на немедленном окне)
  3. Удерживая клавишу ALT, нажмите клавишу пробела. Это покажет раскрывающиеся варианты для немедленного окна.
  4. Нажмите M (для перемещения)
  5. Используйте клавиши со стрелками для перемещения окна
  6. Как только вы выясните, где он находится, увеличьте его

Я получил это на форуме здесь, а также заметил, что то же самое, что предлагается в качестве решения для немедленного окна VBA, не отображается.

Еще одна вещь, которую вы можете попробовать, - это сделать немедленное окно отключаемым (перейдите в Инструменты -> Параметры -> Закрепление и снимите флажок с опции немедленного окна). У некоторых это сработало.

Вам также могут понравиться следующие статьи:

  • Персональная книга макросов Excel | Сохранение и использование макросов во всех книгах
  • Циклы Excel VBA: для «Далее», «Сделать пока», «Сделать до», «Для каждого» (с примерами)
  • Работа с листами с использованием Excel VBA
  • Создание пользовательской функции (UDF) в Excel VBA
wave wave wave wave wave