Excel VBA кодиране: Работа с прозорец с код

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

Минимизиране и максимизиране на VBA кодови прозорци

Ако имате няколко отворени проекта, VBE може да има много прозорци с код по всяко време.

Excel VBA кодиране: Работа с прозорец с код

Претоварването на прозореца с код не е приятна гледка.

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

За да увеличите максимално прозорец с код, щракнете върху бутона Увеличи в заглавната му лента (точно до X). Или просто щракнете двукратно върху заглавната лента, за да я увеличите. За да възстановите прозорец с код до оригиналния му размер, щракнете върху бутона Възстановяване. Когато прозорецът е максимизиран, неговата заглавна лента не се вижда, така че ще намерите бутона Възстановяване под заглавната лента на VBE.

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

Можете бързо да превключвате между прозорците на кода, като натиснете Ctrl+F6. Ако повторите тази комбинация от клавиши, продължавате да преминавате през всички отворени прозорци с кодове. Натискането на Ctrl+Shift+F6 преминава през прозорците в обратен ред. (За повече информация вижте тези клавишни комбинации на Excel VBA .)

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

Създаване на VBA модул

Като цяло модулът на Excel VBA може да съдържа три типа код:

  • Декларации: Един или повече изявления за информация, които предоставяте на VBA. Например, можете да декларирате типа данни за променливите, които планирате да използвате, или да зададете някои други опции за целия модул. Декларациите са основно декларации за домакинство. Те всъщност не са екзекутирани.
  • Подпроцедури: Набор от инструкции за програмиране, които при изпълнение изпълняват някакво действие.
  • Функционални процедури: Набор от инструкции за програмиране, които връщат една стойност (подобно по концепция на функция на работен лист, като SUM).

Един VBA модул може да съхранява произволен брой подпроцедури, функционални процедури и декларации. Е, има е ограничение - около 64,000 знака на модул. Малко вероятно е дори да се доближите до ограничението от 64 000 знака. Но ако сте го направили, решението е просто: Просто поставете нов модул.

Как да организирате VBA модул зависи изцяло от вас. Някои хора предпочитат да запазят целия си VBA код за приложение в един VBA модул; други обичат да разделят кода на няколко модула. Това е личен избор, точно като подреждането на мебели.

Получаване на VBA код в модул

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

  • Въведете кода директно.
  • Използвайте макрорекордера на Excel, за да запишете вашите действия и да преобразувате тези действия във VBA код.
  • Копирайте кода от един модул и го поставете в друг.

Директно въвеждане на Excel VBA код

Понякога най-добрият маршрут е най-прекият. Директното въвеждане на код включва... добре, директно въвеждане на кода. С други думи, въвеждате кода с помощта на клавиатурата си. Въвеждането и редактирането на текст в VBA модул работи както бихте очаквали. Можете да избирате, копирате, изрязвате, поставяте и правите други неща с текста.

Използвайте клавиша Tab, за да направите отстъп на някои от редовете, за да направите кода си по-лесен за четене. Отстъпът не е необходим, но е добър навик за придобиване. Докато изучавате кодирането на Excel VBA, ще разберете защо отстъпът на кодовите редове е полезен.

Един ред от VBA код може да бъде толкова дълъг, колкото е необходимо. Въпреки това, може да искате да използвате символите за продължаване на реда, за да разделите дълги редове код. За да продължите един ред код (известен също като израз) от един ред на следващия, завършете първия ред с интервал, последван от долно черта (_). След това продължете изявлението на следващия ред. И не забравяйте пространството. Подчертаване, което не е предшествано от интервал, няма да свърши работа.

Ето пример за едно изявление, разделено на три реда:

Selection.Sort Key1:=Обхват("A1"), _
  Поръчка1:=xlВъзходяща, Заглавка:=xlGuess, _
  Ориентация:=xlTopToBottom

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

Инженерите с бяло покритие, които проектираха VBE, очакваха, че хората ще правят грешки. Следователно VBE има множество нива на отмяна и повторение. Ако сте изтрили изявление, което не трябва да имате, щракнете върху бутона Отмяна на лентата с инструменти (или натиснете Ctrl+Z), докато изявлението се покаже отново. След като отмените, можете да щракнете върху бутона Възстановяване, за да извършите промените, които сте отменили.

Готови ли сте да въведете някакъв реален код? Опитайте следните стъпки:

Създайте нова работна книга в Excel.

Натиснете Alt+F11, за да активирате VBE.

Щракнете върху името на новата работна книга в прозореца на проекта.

Изберете Вмъкване → Модул, за да вмъкнете VBA модул в проекта.

Въведете следния код в модула:

Sub GuessName()
Msg = "Вашето име " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Ако Ans = vbNo Тогава MsgBox "О, няма значение."
Ако Ans = vbYes Тогава MsgBox "Трябва да съм екстрасенс!"
Край под

Позиционирайте курсора навсякъде в текста, който сте въвели, и натиснете F5, за да изпълните процедурата.

F5 е пряк път за Run → Run Sub/UserForm. Ако сте въвели кода правилно, Excel изпълнява процедурата и можете да отговорите на простия диалогов прозорец. Текстът в диалоговия прозорец ще бъде различен от текста, показан тук.

Excel VBA кодиране: Работа с прозорец с код

Процедурата GuessName показва този диалогов прозорец.

Когато въведете кода, посочен в стъпка 5, може да забележите, че VBE прави някои корекции на текста, който въвеждате. Например, след като въведете израза Sub, VBE автоматично вмъква End Sub израза. И ако пропуснете интервала преди или след знак за равенство, VBE вмъква интервала вместо вас. Също така, VBE променя цвета и главни букви на някои текст. Всичко това е напълно нормално. Това е просто начинът на VBE да поддържа нещата спретнати и четими.

Ако сте следвали предишните стъпки, току-що написахте VBA Sub процедура, известна още като макрос. Когато натиснете F5, Excel изпълнява кода и следва инструкциите. С други думи, Excel оценява всяко изявление и прави това, което сте му казали да направи. (Не позволявайте на тази новооткрита сила да ви хрумне.) Можете да изпълните този макрос произволен брой пъти — въпреки че има тенденция да губи привлекателността си след няколко десетки пъти.

За протокола този прост макрос на Excel използва следните концепции:

  • Дефиниране на подпроцедура (първи ред)
  • Присвояване на стойности на променливи (Msg и Ans)
  • Конкатениране (присъединяване) на низ (с помощта на оператора &)
  • Използване на вградена VBA функция (MsgBox)
  • Използване на вградени VBA константи (vbYesNo, vbNo и vbYes)
  • Използване на конструкция If-Then (два пъти)
  • Завършване на подпроцедура (последният ред)

Използване на макрорекордера на Excel VBA

Друг начин да получите код в VBA модул е ​​като запишете вашите действия, като използвате макрорекордера на Excel.

Между другото, няма абсолютно никакъв начин да запишете процедурата GuessName, показана по-горе. Можете да записвате само неща, които можете да правите директно в Excel. Показването на кутия за съобщения не е в нормалния репертоар на Excel. (Това е нещо от VBA.) Записващото устройство на макроси е полезно, но в много случаи вероятно ще трябва да въведете поне някакъв код ръчно.

Ето пример стъпка по стъпка, който показва как да запишете макрос, който вмъква нов работен лист и скрива всички освен първите десет реда и всички освен първите десет колони. Ако искате да опитате този пример, започнете с нова, празна работна книга на Excel и следвайте тези стъпки:

Активирайте работен лист в работната книга.

Всеки работен лист на Excel ще свърши работа.

Щракнете върху раздела Разработчик и се уверете, че Използване на относителни препратки не е маркирано.

Този макрос се записва с помощта на абсолютни препратки.

Изберете Разработчик → Код → Запис на макрос или щракнете върху иконата до индикатора Готов в левия край на лентата на състоянието.

Excel показва диалоговия прозорец за запис на макрос.

В диалоговия прозорец Запис на макрос дайте име на макроса TenByTen, посочете, че искате макросът да се съхранява в Тази работна книга, и натиснете Shift+T за клавиша за бърз достъп.

Макросът може да се изпълни, когато натиснете Ctrl+Shift+T.

Щракнете върху OK, за да започнете да записвате. Excel автоматично вмъква нов VBA модул в проекта, който съответства на активната работна книга.

От този момент нататък Excel преобразува вашите действия във VBA код. Докато записвате, иконата в лентата на състоянието се превръща в малък квадрат. Това е напомняне, че записът на макроси работи. Можете също да щракнете върху тази икона, за да спрете записа на макроси.

Щракнете върху иконата Нов лист вдясно от последния раздел на лист.

Excel вмъква нов работен лист.

Изберете цялата колона K (11-та колона) и натиснете Ctrl+Shift+стрелка надясно; след това щракнете с десния бутон върху избрана колона и изберете Скрий от контекстното меню.

Excel скрива всички избрани колони.

Изберете целия ред 11 и натиснете Ctrl+Shift+стрелка надолу; след това щракнете с десния бутон върху произволен избран ред и изберете Скрий от контекстното меню.

Excel скрива всички избрани колони.

Изберете клетка A1.

Изберете Разработчик → Код → Спиране на записа или щракнете върху бутона Спиране на записа в лентата на състоянието (малкия квадрат). Excel спира да записва вашите действия.

За да видите този новозаписан макрос, натиснете Alt+F11, за да активирате VBE. Намерете името на работната книга в прозореца на проекта. Виждате, че проектът има посочен нов модул. Името на модула зависи от това дали сте имали други модули в работната книга, когато сте започнали да записвате макроса. Ако не сте го направили, модулът се казва Module1. Можете да щракнете двукратно върху модула, за да видите прозореца с код за модула.

Ето кода, генериран от вашите действия:

Под TenByTen()
'
' TenByTen макрос
'
' Клавишна комбинация: Ctrl+Shift+T
'
  Sheets.Add After:=ActiveSheet
  Колони("K:K").Изберете
  Диапазон(Избор, Избор. Край(xlToRight)).Избор
  Selection.EntireColumn.Hidden = Вярно
  Редове("11:11"). Изберете
  Диапазон(Избор, Избор. Край(xlDown)).Избор
  Selection.EntireRow.Hidden = Вярно
  Диапазон("A1").Изберете
Край под

За да опитате този макрос, активирайте всеки работен лист и натиснете клавиша за бърз достъп, който сте задали в стъпка 4: Ctrl+Shift+T.

Ако не сте задали клавиш за бърз достъп на макроса, не се притеснявайте. Ето как да покажете списък с всички налични макроси и да стартирате този, който искате:

Изберете Разработчик → Код → Макроси. Вентилаторите на клавиатурата могат да натискат Alt+F8.

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

Изберете макроса в списъка (в този случай TenByTen).

Щракнете върху бутона Run.

Excel изпълнява макроса и получавате нов работен лист с десет видими реда и десет видими колони.

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

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

Копиране на VBA код

Последният метод за получаване на код в VBA модул е да го копирате от друг модул или от друго място (като уебсайт). Например процедура под или функция, която пишете за един проект, може да бъде полезна и в друг проект. Вместо да губите време за повторно въвеждане на кода, можете да активирате модула и да използвате нормалните процедури за копиране и поставяне на клипборда. (Вероятно ви харесват клавишните комбинации Ctrl+C за копиране и Ctrl+V за поставяне.) След като поставите кода в VBA модул, можете да промените кода, ако е необходимо.

Между другото, в мрежата ще намерите много примери за VBA код. Ако искате да ги изпробвате, изберете кода в браузъра си и натиснете Ctrl+C, за да го копирате. След това активирайте модул и натиснете Ctrl+V, за да го поставите.

Когато копирате код от уебсайт, той понякога изисква известно коригиране. Например знаците за кавички могат да бъдат „интелигентни кавички“ и те трябва да бъдат преобразувани в прости знаци за кавички. И понякога дълги опашки се увиват. Грешните твърдения са лесни за забелязване във VBE, защото се появяват в червено.


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

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

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

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

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

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

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

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

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]