Коришћење Макро снимача у програму Мицрософт Екцел

Преглед садржаја:

Anonim

Отворите Екцел и ВБЕ (Висуал Басиц Едитор). Осим ако је промењен, прозор ВБЕ садржи Пројецт Екплорер прозор и Некретнине прозор (њима се може приступити из Поглед мени).

Пројецт Екплорер: Ради као менаџер датотека. Помаже вам да се крећете око кода у радној свесци.

Прозор својстава: Приказује својства тренутно активног објекта (нпр. Схеет1) тренутне радне свеске (нпр.Књига1).

У овом чланку ћемо сазнати колико је једноставно снимање макроа у Екцелу.

Вежба 1: Снимање макроа.

Ова вежба показује шта се дешава када се макро забележи и показује разлику између бележења апсолутних и релативних референци.

1. На празном радном листу у новој радној свесци изаберите ћелију Ц10

2. Покрените Макро снимач са опцијом за чување макроа у Ова радна свеска. У овом тренутку ВБЕ ствара нову Модули фолдер. Сасвим је сигурно отићи и погледати то - ваше радње неће бити снимљене. Кликните [+] поред фасцикле и видите да ВБЕ има модул у фасцикли и да му даје име Модул1. Двапут кликните на икону модула да бисте отворили прозор са кодом. Вратите се на Екцел.

3. Уверите се да је Релативна референца дугме на Заустави снимање трака са алаткама НИЈЕ притиснута.

4. Изаберите ћелију Б5 и зауставите диктафон.

5. Пређите на ВБЕ и погледајте код:

Распон ("Б5"). Изаберите

6. Сада снимите још један макро, на потпуно исти начин, али овај пут са Релативна референца притиснуто дугме.

7. Пребаците се на ВБЕ и погледајте код:

АцтивеЦелл.Оффсет (-5, -1) .Ранге ("А1"). Одаберите

8. Сада снимите други макро, али уместо да изаберете ћелију Б5, изаберите блок ћелија 3к3 почевши од Б5 (изаберите ћелије Б5: Ф7)

9. Пребаците се на ВБЕ и погледајте код:

АцтивеЦелл.Оффсет (-5, -1) .Ранге ("А1: Б3"). Изаберите

10. Репродукујте макрое, након што сте прво изабрали ћелију различиту од Ц10 (за Мацро2 и Мацро3 почетна ћелија мора бити у реду 6 или испод - погледајте корак 11 испод)

Макро1 - увек помера избор на Б5
Мацро2 - помера избор у ћелију 5 редова нагоре и 1 колону лево од изабране ћелије.
Мацро3 - увек бира блок од шест ћелија који почиње 5 редова нагоре и 1 колона лево од изабране ћелије.

11. Покрените Мацро2, али исфорсирајте грешку одабиром ћелије у реду 5 или више. Макро покушава да одабере непостојећу ћелију јер му код говори да одабере ћелију 5 редова изнад почетне тачке, а то је с врха листа. Притисните Отклањање грешака да се пребаци на део макроа који је изазвао проблем.

НАПОМЕНА: Када је ВБЕ у режиму отклањања грешака, ред кода који је изазвао проблем означен је жутом бојом. Морате "ресетовати" макро пре него што наставите. Кликните Ресетовање дугме на ВБЕ траци са алаткама или идите на Покрени> Ресетуј. Жута ознака нестаје и ВБЕ излази из режима отклањања грешака.

12. Важно је покушати предвидети овакву грешку корисника. Најједноставнији начин је да модификујете код тако да једноставно игноришете грешке и пређете на следећи задатак. Учините то додавањем линије …

На Грешка Настави даље

… непосредно изнад прве линије макроа (испод линије Суб Мацро1 ()

13. Трчи Мацро2 као и раније, почевши превисоко на листу. Овај пут линија коју сте унели говори Екцелу да игнорише ред кода који не може да изврши. Нема поруке о грешци и макро напушта све што је могао. Ову методу руковања грешкама користите опрезно. Ово је врло једноставан макро. Сложенији макро вероватно не би функционисао очекивано ако се грешке једноставно занемаре. Такође, корисник нема појма да је нешто пошло по злу.

14. Измените код Мацро2 како би се укључио софистициранији ручник грешака:

Подмакро2 ()

Укључено Грешка Иди на ЕррорХандлер

АцтивеЦелл.Оффсет (-5, -1) .Ранге ("А1"). Одаберите

Екит Суб

ЕррорХандлер:

МсгБок "Морате почети испод 5. реда"

Енд Суб

15. Овај пут се кориснику приказује дијалошки оквир када нешто пође по злу. Ако нема грешке, линија Екит Суб узрокује да се макро заврши након што је обавио свој посао - у супротном ће корисник видети поруку чак и да нема грешке.

Побољшање снимљених макроа

Добар начин да научите основе ВБА је да снимите макро и видите како Екцел пише свој код. Међутим, често снимљени макрои садрже много више кода него што је потребно. Следеће вежбе показују како можете побољшати и поједноставити код који је произвео снимљени макро.

Вежба 2: Побољшање снимљених макроа

Ова вежба показује да се приликом снимања макроа често генерише више кода него што је потребно. Он демонстрира употребу наредбе Витх за прецизирање кода.

1. Изаберите било коју ћелију или блок ћелија.

2. Покрените макро рекордер и позовите макро ФорматЦеллс. Поставка Релативне референце неће бити релевантна.

3. Идите на Формат> Ћелије> Фонт и изабрати Тимес Нев Роман и Ред.
Иди на Паттернс и изабрати Иеллов.
Иди на Усклађивање и изабрати Хоризонтално, центар
Иди на Број и изабрати Валута.

4. Кликните У реду и зауставите диктафон.

5. Кликните на Поништи дугме (или Цтрл+З) да бисте поништили промене на радном листу.

6. Изаберите блок ћелија и покрените ФорматЦеллс макро. Имајте на уму да се то не може поништити! Упишите ћелије да бисте проверили резултат обликовања.

7. Погледајте код:

ПодформатСелецтион ()

Селецтион.НумберФормат = "$#, ## 0.00"

Витх Селецтион

.ХоризонталАлигнмент = клЦентер

.ВертицалАлигнмент = клБоттом

.ВрапТект = Нетачно

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

.СхринкТоФит = Нетачно

.МергеЦеллс = Нетачно

Завршити

Витх Селецтион.Фонт

.Наме = "Тимес Нев Роман"

.ФонтСтиле = "Редовно"

.Величина = 10

.Стрикетхроугх = Фалсе

.Суперсцрипт = Нетачно

.Субсцрипт = Нетачно

.ОутлинеФонт = Нетачно

.Схадов = Нетачно

.Ундерлине = клУндерлинеСтилеНоне

.Индекс боја = 3

Завршити

Витх Селецтион.Интериор

.Индекс боја = 6

.Паттерн = клСолид

.ПарттернЦолорИндек = клАутоматиц

Завршити

Енд Суб

Промените фонт у Тимес Нев Роман
Промените боју фонта у Ред
Промените боју испуне у Иеллов
Кликните Центар дугме
Кликните Валута дугме

13. Погледајте код. И даље добијате много ствари које не желите. Екцел бележи све Уобичајено подешавања. Већина њих је безбедно за брисање.

14. Експериментишите са директним уређивањем кода да бисте променили боје, фонт, формат броја итд.

Вежба 3: Гледајте како се снима макро

Ова вежба показује да можете научити гледајући израду макроа током снимања. То је такође пример када понекад исказ Витх није одговарајући.

1. Отворите датотеку ВБА01.клс.

Иако је овај радни лист визуелно у реду и корисник га може разумети, присутност празних ћелија може изазвати проблеме. Покушајте да филтрирате податке и видите шта ће се догодити. Иди на Подаци> Филтер> Аутофилтер и филтрирајте према региону или месецу. Јасно је да Екцел не даје исте претпоставке као и корисник. Празне ћелије треба попунити.

2. Положите Екцел и ВБЕ прозоре (вертикално) тако да буду један поред другог.

3. Изаберите било коју ћелију унутар података. Ако је празна ћелија, мора бити у близини ћелије која садржи податке.

4. Покрените макро рекордер и позовите макро ФиллЕмптиЦеллс. Постављено за снимање Релативне референце.

5. У прозору ВБЕ пронађите и двапут кликните на модул (Модул 1) за тренутну радну свеску да бисте отворили окно за уређивање, а затим искључите прозор Пројецт Екплорер и прозор Својства (само да бисте направили простор).

6. Нови макро снимите на следећи начин:

Корак 1. Цтрл+* (за избор тренутног региона)
Корак 2. Измени> Иди на> Посебно> Празнине> ОК (да бисте изабрали све празне ћелије у тренутном региону)
Корак 3. Укуцајте = [Стрелица горе] затим притисните Цтрл+Ентер (да бисте унели текст у све изабране ћелије)
Корак 4. Цтрл+* (да поново изаберете тренутни регион)
Корак 5. Цтрл+Ц. (да копирате избор - било која метода ће бити довољна)
Корак 6. Уреди> Посебно залепи> Вредности> У реду (да залепите податке на исто место, али одбаците формуле)
Корак 7. изаћи (за излазак из режима копирања)
Корак 8. Зауставите снимање.

7. Погледајте код:

Суб ФиллЕмптиЦеллс ()

Селецтион.ЦуррентРегион.Селецт

Селецтион.СпециалЦеллс (клЦеллТипеБланкс) .Селецт

Селецтион.ФормулаР1Ц1 = "= Р [-1] Ц"

Селецтион.ЦуррентРегион.Селецт

Селецтион.Цопи

Селецтион.ПастеСпециал Пасте: = клВалуес, Операција: = клНоне, СкипБланкс: = _

Фалсе, Транспосе: = Фалсе

Апплицатион.ЦутЦопиМоде = Нетачно

Енд Суб

8. Обратите пажњу на размак и доњу црту „_“ за означавање раздвајања једног реда кода на нови ред. Без овога Екцел би код третирао као две одвојене изјаве.

9. Пошто је овај макро снимљен добро осмишљеним командама, мало је непотребног кода. У Специјална паста све иза речи „клВалуес“ може да се избрише.

10. Испробајте макро. Затим користите алат АутоФилтер и забележите разлику.