Незабавен прозорец на Excel VBA - 5 страхотни начина да го използвате!

„Незабавен прозорец“ може да бъде полезен инструмент за работа при работа с VBA в Excel.

Непосредственият прозорец ви позволява бързо да правите неща като:

  • Получаване на информация за файловете на Excel (като например броя на листовете в работна книга или името на работната книга)
  • Получавайте информация за Debug.Print бързо
  • Изпълнете ред код за секунди
  • Стартирайте макрос (или извикайте функция)
  • Получете информация за променливи (или задайте стойността или променливите)

Въпреки че не е необходимо да използвате незабавен прозорец, за да работите с VBA в Excel, знанието как да го използвате добре може да ви направи много по -ефективни.

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

Да започваме!

Какво е незабавен прозорец в Excel VBA?

Непосредственият прозорец е част от редактора на VB, който можете да използвате, за да направите някои бързи неща.

За да ви дам пример, ако имате работна книга с някои скрити работни листове и искате бързо да разберете броя на общите работни листове, можете да направите това за няколко секунди с прозореца Непосредствена.

Непосредственият прозорец прави много повече (както ще видите по -късно в този урок). Но за начало нека просто помислим за непосредствения прозорец като инструмент, който да ви помогне да ускорите работата си в Excel VBA.

Къде да намеря непосредствения прозорец?

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

По -долу са стъпките за отваряне на VB Editor и направяне на непосредствения прозорец видим:

  1. Щракнете върху раздела „Разработчик“ в лентата на Excel (ако не виждате раздела за програмисти, щракнете тук, за да научите как да го получите)
  2. В групата кодове щракнете върху „Visual Basic“. Това ще отвори VB Editor
  3. В редактора на VB щракнете върху опцията „Преглед“ в менюто
  4. Кликнете върху Незабавен прозорец. Това ще накара незабавния прозорец да се покаже във VB Editor.

Ако ви е по -удобно с преките пътища, по -долу са някои, за да ускорите горните стъпки:

  • За да отворите VB Editor - ALT + F11 (това работи дори ако нямате раздел Developer в лентата)
  • За да покажете непосредствения прозорец - Control + G (използвайте този, VB Editor е отворен)

Примери за използване на незабавен прозорец в Excel VBA

Сега, когато знаете къде да намерите непосредствения прозорец, нека видим някои страхотни примери, където можете да го използвате, когато работите с Excel VBA.

Получете информация за файловете/работните книги

„Незабавен прозорец“ е място, където можете да задавате въпроси относно работните тетрадки и то веднага ще ви даде отговор.

Да предположим например, че имате работна книга и искате да знаете колко листа има в работната книга, можете да въведете кода по -долу в непосредствения прозорец и да натиснете клавиша enter.

? ActiveWorkbook.Sheets.Count

Това незабавно ще ви каже общия брой листове в активната работна книга.

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

The? (въпросник) трябва да се използва преди заявката, за да може VBA да разбере, че задавате въпрос. Ако не използвате този въпросник, непосредственият прозорец няма да ви даде подробности/отговор.

Това е наистина прост пример, при който непосредственият прозорец ви дава известна информация и спестява време.

По -долу има още няколко примера:

За да получите името на активната работна книга

? ActiveWorkbook.Name

За да получите името на активния лист

? Activesheet.Name

За да получите пътя на работната книга (адреса, където е записана)

? ActiveWorkbook.Path

Така че, ако имате нужда от нещо за обект (като работна книга, листове, диаграми, форми, диапазон и т.н.), можете да използвате незабавен прозорец, за да получите бързо тази информация.

Вземете информация за Debug.Print

В 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, един от бързите начини е използването на непосредствения прозорец.

За да стартирате макрос, всичко, което трябва да направите, е да въведете името на макроса в непосредствения прозорец и да натиснете клавиша enter (курсорът трябва да е в края на името на макроса, за да работи това).

По-долу е пример, където веднага след като въведете името на макроса в непосредствения прозорец, той изпълнява кода (където кодът показва съобщението „Добро утро“ в непосредствения прозорец).

Това може да бъде полезно, когато имате код и искате да проверите дали работи както се очаква или не. Можете да имате един или повече линии за отстраняване на грешки в кода и да стартирате макроса от непосредствения прозорец.

Той незабавно ще ви покаже стойностите в непосредствения прозорец и можете да проверите дали всичко работи добре или не.

Можете също да използвате непосредствения прозорец за изпълнение на персонализирани функции.

Например в примера по -долу се създава функция за проверка дали числото е четно или нечетно. Можете да стартирате тази функция от непосредствения прозорец, като въведете функцията с необходимия аргумент. В този случай трябва да използвате въпросителен знак, тъй като го питате да не върне стойност, съхранена във функцията.

Изпълнете ред от код (или няколко реда код)

С незабавен прозорец можете също да стартирате ред код (или няколко реда кодове).

Най -хубавото в това е, че можете просто да отворите непосредствения прозорец, да стартирате кода и да го затворите (за разлика от макроса, който трябва да поставите в прозореца на модула и след това да го изпълните).

Случай на използване, при който това може да бъде полезно, е когато искате бързо да разкриете всички листове в работната книга.

По -долу е кодът, който можете да поставите в непосредствения прозорец, за да разкриете всички листове в работната книга. Поставете курсора в края на реда и веднага щом натиснете клавиша за въвеждане, той ще покаже всички листове.

За всеки лист в тази работна книга. Листове: Sheet.Visible = Вярно: Следващ лист

Имайте предвид, че въпреки че това изглежда като един ред код, той се състои от три части.

Всяка част е разделена с: (двоеточие), което действа като прекъсване на ред. Това ви позволява да използвате цикъла For Next в непосредствения прозорец, за да преминете през всеки лист и да промените видимото свойство на 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 UnhideSheets () For i = 1 To Worksheets.Count Debug.Print Sheets (i) .Name Next i End Sub

Горният код просто изброява имената на всички листове в работната книга в непосредствения прозорец.

Ако не искате да изброявате имената на всички листове, а само на листа след 10 -ия лист, можете да поставите точка на прекъсване във втория ред на цикъла (така че нищо след този ред да не се изпълнява) и след това да промените променлива „i“ до 11.

За да промените името на променливата в непосредствения прозорец, въведете следния ред:

i = 11

Това ще гарантира, че първите 10 пъти от цикъла ще бъдат игнорирани и стойността на променливата ви е зададена на 11.

Докинг/Отключване на непосредствения прозорец

Можете да имате незабавен прозорец, закачен към VB Editor - което означава, че той остава на едно място във VB Editor и се движи и оразмерява с него.

Можете също така да го деактивирате, което означава, че е независим от VB Editor и може да бъде преместен като самостоятелен прозорец.

По -долу е показано как можете да промените настройките за докинг за непосредствения прозорец:

  1. Щракнете върху опцията Инструменти в менюто в редактора VB
  2. Кликнете върху „Опции“
  3. В диалоговия прозорец Опции щракнете върху последния раздел - Докинг
  4. Поставете отметка в опцията Незабавен прозорец, за да я направите докируема, и я махнете, за да я откачите.
  5. Щракнете върху OK

Като алтернатива, ако непосредственият прозорец е видим, можете също да щракнете с десния бутон на мишката и да промените докируемото свойство на него.

Закачане означава, че непосредственият прозорец ще стане част от съществуващия прозорец, като се постави на определени места, като лявата част на прозореца или в долната част. Това позволява на скачените прозорци да се движат и оразмеряват заедно.

Непосредственият прозорец не се показва - ето няколко начина да го получите

Може да има няколко причини това да се случи.

Най -честата причина да не виждате незабавен прозорец е, че той не е станал видим. Може да не се вижда по подразбиране и за да се появи, трябва да отидете в опцията Изглед в менюто и да кликнете върху опцията Незабавен прозорец. Това ще гарантира, че е видимо във VB Editor.

Можете също да използвате клавиатурата Control + G, за да се покаже непосредственият прозорец. Използвайте тази клавишна комбинация, докато сте в VB Editor.

Друга причина, поради която може да не виждате непосредствения прозорец, е, че той е минимизиран, сега е толкова затворен, че не можете да го видите (както е докладвано тук). Просто направете бързо сканиране и проверете дали виждате някъде дебнещ малък син/червен квадрат. Можете да задържите курсора върху него и ще видите опция за промяна на размера му.

Ако изобщо не виждате непосредствения прозорец, ето нещо, което е работило за много хора (това често се случва поради промени в разделителната способност на екрана):

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

Получих това от форум тук и също забелязах, че същото се предлага като решение за незабавен прозорец на VBA, който не се показва.

Друго нещо, което можете да опитате, е да направите неотключващия се непосредствен прозорец (отидете на Инструменти -> Опции -> Докинг и премахнете отметката от опцията за незабавен прозорец). Това е работило при някои хора.

Може да ви харесат и следните статии:

  • Работна книга за лични макроси на Excel | Запазване и използване на макроси във всички работни книги
  • Цикли на Excel VBA: За следващо, Направете докато, Направете до, За всеки (с примери)
  • Работа с работни листове с помощта на Excel VBA
  • Създаване на потребителска функция (UDF) в Excel VBA

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave