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

Съдържание:

Anonim

Отворете Excel и VBE (редактор на Visual Basic). Освен ако не е променен, прозорецът VBE съдържа Project Explorer прозорец и Имоти прозорец (те могат да бъдат достъпни от Изглед меню).

Project Explorer: Работи като файлов мениджър. Помага ви да се придвижвате из кода във вашата работна книга.

Прозорец със свойства: Показва свойствата на текущо активния обект (напр. Лист 1) от текущата работна книга (напр.Книга 1).

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

Упражнение 1: Записване на макрос.

Това упражнение показва какво се случва при запис на макрос и демонстрира разликата между записването на абсолютни и относителни препратки.

1. На празен работен лист в нова работна книга изберете клетка C10

2. Стартирайте Макро рекордер с опция за запазване на макрос в Тази работна книга. В този момент VBE създава нов Модули папка. Съвсем безопасно е да отидете и да го погледнете - вашите действия няма да бъдат записани. Щракнете върху [+] до папката и вижте, че VBE разполага с модул в папката и го нарече Модул 1. Щракнете двукратно върху иконата на модула, за да отворите кодовия прозорец. Върнете се в Excel.

3. Уверете се, че Относителна справка бутон на Спрете записа лентата с инструменти НЕ се натиска.

4. Изберете клетка В5 и спрете рекордера.

5. Преминете към VBE и погледнете кода:

Обхват ("B5"). Изберете

6. Сега запишете друг макрос, абсолютно по същия начин, но този път с Относителна справка натиснат бутон.

7. Преминете към VBE и погледнете кода:

ActiveCell.Offset (-5, -1) .Range ("A1"). Изберете

8. Сега запишете друг макрос, но вместо да избирате клетка B5, изберете блок от клетки 3x3, започвайки от B5 (изберете клетки B5: F7)

9. Преминете към VBE и погледнете кода:

ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Изберете

10. Възпроизведете макросите, след като първо сте избрали клетка, различна от C10 (за Macro2 и Macro3 началната клетка трябва да е в ред 6 или по -долу - вижте стъпка 11 по -долу)

Макро 1 - винаги премества селекцията в B5
Макро 2 - премества селекцията в клетка с 5 реда нагоре и 1 колона вляво от избраната клетка.
Макро 3 - винаги избира блок от шест клетки, започващи 5 реда нагоре и 1 колона вляво от избраната клетка.

11. Стартирайте Macro2, но форсирайте грешка, като изберете клетка в ред 5 или по -горе. Макросът се опитва да избере несъществуваща клетка, защото кодът й казва да избере клетка на 5 реда над началната точка и това е извън горната част на листа. Натиснете Отстраняване на грешки да бъде отнесен към частта от макроса, която е причинила проблема.

ЗАБЕЛЕЖКА: Когато VBE е в режим на отстраняване на грешки, редът на кода, който е причинил проблема, е маркиран в жълто. Трябва да "нулирате" макроса, преди да можете да продължите. Щракнете върху Нулиране бутон на лентата с инструменти на VBE или отидете на Изпълнение> Нулиране. Жълтото осветяване изчезва и VBE излиза от режим Debug.

12. Важно е да се опитате да предвидите грешка на потребителя по този начин. Най -простият начин е да промените кода, за да игнорирате грешките и да преминете към следващата задача. Направете това, като добавите реда …

На грешка възобновяване на следващо

… непосредствено над първия ред на макроса (под линията Sub Macro1 ()

13. Бягай Макро 2 както преди, започвайки твърде високо на листа. Този път въведеният от вас ред казва на Excel да игнорира реда код, който не може да изпълни. Няма съобщение за грешка и макросът излиза, след като направи всичко възможно. Използвайте този метод за справяне с грешки с повишено внимание. Това е много прост макрос. По -сложният макрос вероятно няма да работи както се очаква, ако грешките просто бъдат игнорирани. Освен това потребителят няма представа, че нещо се е объркало.

14. Променете кода на Макро 2 за да включите по -сложен манипулатор на грешки по този начин:

Подмакрос 2 ()

На грешка GoTo ErrorHandler

ActiveCell.Offset (-5, -1) .Range ("A1"). Изберете

Изход от Sub

ErrorHandler:

MsgBox "Трябва да започнете под ред 5"

End Sub

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

Подобряване на записаните макроси

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

Упражнение 2: Подобряване на записаните макроси

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

1. Изберете всяка клетка или блок от клетки.

2. Стартирайте макрорекордера и извикайте макроса FormatCells. Настройката Относителни референции няма да бъде уместна.

3. Отидете на Формат> Клетки> Шрифт и изберете Times New Roman и червен.
Отидете на Модели и изберете Жълто.
Отидете на Подравняване и изберете Хоризонтално, в центъра
Отидете на Номер и изберете Валута.

4. Щракнете Добре и спрете рекордера.

5. Щракнете върху Отмяна бутон (или Ctrl+Z), за да отмените промените в работния лист.

6. Изберете блок от клетки и стартирайте FormatCells макрос. Обърнете внимание, че не може да бъде отменено! Въведете клетките, за да проверите резултата от форматирането.

7. Вижте кода:

ПодформатSelection ()

Selection.NumberFormat = "$#, ## 0.00"

С избор

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Ориентация = 0

.ShrinkToFit = False

.MergeCells = невярно

Край с

С Избор.Шрифт

.Name = "Times New Roman"

.FontStyle = "Редовен"

.Размер = 10

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

. Сянка = невярно

.Underline = xlUnderlineStyleNone

.ColorIndex = 3

Край с

С Избор. Интериор

.ColorIndex = 6

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

Край с

End Sub

Променете шрифта на Times New Roman
Променете цвета на шрифта на червен
Променете цвета на запълване на Жълто
Щракнете върху Център бутон
Щракнете върху Валута бутон

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

14. Експериментирайте с редактиране директно в кода, за да промените цветовете, шрифта, числовия формат и т.н.

Упражнение 3: Гледайте запис на макрос

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

1. Отворете файла VBA01.xls.

Докато този работен лист визуално е ОК и може да бъде разбран от потребителя, наличието на празни клетки може да причини проблеми. Опитайте да филтрирате данните и да видите какво се случва. Отидете на Данни> Филтър> Автофилтър и филтрирайте по регион или месец. Ясно е, че Excel не прави същите предположения, които прави потребителят. Празните клетки трябва да бъдат запълнени.

2. Покрийте прозорците на Excel и VBE (вертикално), така че да са един до друг.

3. Изберете всяка клетка в данните. Ако е празна клетка, тя трябва да е в съседство с клетка, съдържаща данни.

4. Стартирайте макрорекордера и извикайте макроса FillEmptyCells. Зададено за запис Относителни препратки.

5. В прозореца VBE намерете и щракнете двукратно върху модула (Module1) за текущата работна книга, за да отворите прозореца за редактиране, след което изключете прозореца Project Explorer и прозореца Properties (само за да освободите място).

6. Запишете новия макрос, както следва:

Етап 1. Ctrl+* (за да изберете текущия регион)
Стъпка 2. Редактиране> Отидете на> Специални> Празни> OK (за да изберете всички празни клетки в текущия регион)
Стъпка 3. Въведете = [UpArrow] след това натиснете Ctrl+Enter (за да поставите въвеждането във всички избрани клетки)
Стъпка 4. Ctrl+* (за да изберете отново текущия регион)
Стъпка 5. Ctrl+C (за да копирате селекцията - ще е подходящ всеки метод)
Стъпка 6. Редактиране> Специално поставяне> Стойности> OK (за да поставите данните обратно на същото място, но да изхвърлите формулите)
Стъпка 7. Esc (за да излезете от режим на копиране)
Стъпка 8. Спрете записа.

7. Вижте кода:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select

Selection.SpecialCells (xlCellTypeBlanks) .Select

Избор.Формула R1C1 = "= R [-1] C"

Selection.CurrentRegion.Select

Избор. Копиране

Selection.PasteSpecial Paste: = xlValues, Операция: = xlNone, SkipBlanks: = _

False, Транспониране: = False

Application.CutCopyMode = False

End Sub

8. Обърнете внимание на използването на интервалите и долната черта „_“, за да обозначите разделянето на един ред код на нов ред. Без това Excel ще третира кода като две отделни изявления.

9. Тъй като този макрос е записан с добре обмислени команди, има малко излишен код. В Специална паста всичко след думата „xlValues“ може да бъде изтрито.

10. Изпробвайте макроса. След това използвайте инструмента за автоматично филтриране и отбележете разликата.