Utilizarea Recorderului macro în Microsoft Excel

Cuprins:

Anonim

Deschideți Excel și VBE (Visual Basic Editor). Dacă nu a fost modificat, fereastra VBE conține fișierul Project Explorer fereastra și Proprietăți fereastră (acestea pot fi accesate din Vedere meniul).

Project Explorer: Funcționează ca un manager de fișiere. Vă ajută să navigați în jurul codului din registrul de lucru.

Fereastra Proprietăți: Afișează proprietățile obiectului activ în prezent (de ex. Foaia 1) din registrul de lucru curent (de ex.Cartea 1).

În acest articol vom afla cât de ușoară este înregistrarea macro în Excel.

Exercițiul 1: Înregistrarea unui macro.

Acest exercițiu arată ce se întâmplă atunci când este înregistrată o macro și demonstrează diferența dintre înregistrarea referințelor absolute și relative.

1. Pe o foaie de lucru goală într-un registru de lucru nou, selectați celula C10

2. Porniți Macro Recorder cu opțiunea de a salva macro în Acest registru de lucru. În acest moment, VBE creează un nou Module pliant. Este destul de sigur să te uiți la el - acțiunile tale nu vor fi înregistrate. Apasă pe [+] lângă folder și vedeți că VBE are un modul în folder și îl numește Modulul 1. Faceți dublu clic pe pictograma modulului pentru a deschide fereastra de cod. Reveniți la Excel.

3. Asigurați-vă că Referință relativă butonul de pe Opriți înregistrarea bara de instrumente NU este apăsată.

4. Selectați celula B5 și opriți reportofonul.

5. Treceți la VBE și priviți codul:

Gama ("B5"). Selectați

6. Acum înregistrați o altă macro, exact în același mod, dar de data aceasta cu Referință relativă butonul apăsat.

7. Treceți la VBE și priviți codul:

ActiveCell.Offset (-5, -1) .Range ("A1"). Selectați

8. Acum înregistrați o altă macro, dar în loc să selectați celula B5, selectați un bloc de celule 3x3 începând de la B5 (selectați celulele B5: F7)

9. Treceți la VBE și priviți codul:

ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Selectați

10. Redați macrocomenzile, după ce ați selectat mai întâi o celulă diferită de C10 (pentru Macro2 și Macro3, celula de pornire trebuie să fie în rândul 6 sau mai jos - consultați pasul 11 ​​de mai jos)

Macro1 - mută întotdeauna selecția la B5
Macro2 - mută selecția într-o celulă cu 5 rânduri în sus și 1 coloană în stânga celulei selectate.
Macro3 - selectează întotdeauna un bloc de șase celule începând cu 5 rânduri în sus și 1 coloană în stânga celulei selectate.

11. Rulați Macro2, dar forțați o eroare selectând o celulă din rândul 5 sau mai sus. Macrocomanda încearcă să selecteze o celulă inexistentă, deoarece codul său îi spune să selecteze o celulă cu 5 rânduri deasupra punctului de pornire și aceasta este în partea de sus a foii. presa Depanare pentru a fi dus la partea macro care a cauzat problema.

NOTĂ: Când VBE este în modul de depanare, linia de cod care a cauzat problema este evidențiată în galben. Trebuie să „resetați” macro-ul înainte de a putea continua. Apasă pe Resetați butonul de pe bara de instrumente VBE sau accesați Rulați> Resetați. Evidențierea galbenă dispare și VBE iese din modul Debug.

12. Este important să încercați să anticipați astfel de erori de utilizator. Cel mai simplu mod este să modificați codul pentru a ignora pur și simplu erorile și a trece la următoarea sarcină. Faceți acest lucru adăugând linia …

La eroare Reluați în continuare

… imediat deasupra primei linii a macro-ului (sub linia Sub Macro1 ()

13. Aleargă Macro2 ca și înainte, începând prea sus pe foaie. De data aceasta, linia pe care ați introdus-o spune Excel să ignore linia de cod pe care nu o poate executa. Nu există niciun mesaj de eroare și macro-ul iese după ce a făcut tot ce a putut. Utilizați această metodă de gestionare a erorilor cu precauție. Acesta este un macro foarte simplu. O macrocomandă mai complexă probabil nu ar funcționa așa cum era de așteptat dacă erorile ar fi pur și simplu ignorate. De asemenea, utilizatorul nu are nicio idee că ceva nu a mers bine.

14. Modificați codul de Macro2 pentru a include un gestionar de erori mai sofisticat astfel:

Sub Macro2 ()

On Error GoTo ErrorHandler

ActiveCell.Offset (-5, -1) .Range ("A1"). Selectați

Ieșiți din Sub

ErrorHandler:

MsgBox „Trebuie să începeți sub rândul 5”

Sfârșitul Sub

15. De data aceasta, utilizatorului i se prezintă o casetă de dialog când ceva nu merge bine. Dacă nu există nicio eroare, linia Exit Sub determină terminarea macro-ului după ce și-a făcut treaba - altfel utilizatorul ar vedea mesajul chiar dacă nu ar exista nicio eroare.

Îmbunătățirea macro-urilor înregistrate

Modul bun de a învăța elementele de bază ale VBA este de a înregistra o macro și a vedea cum Excel își scrie propriul cod. De multe ori, însă, macro-urile înregistrate conțin mult mai mult cod decât este necesar. Următoarele exerciții demonstrează modul în care puteți îmbunătăți și eficientiza codul care a fost produs de o macro înregistrată.

Exercițiul 2: Îmbunătățirea macro-urilor înregistrate

Acest exercițiu arată că atunci când sunt înregistrate macro-uri, de multe ori se generează mai mult cod decât este necesar. Acesta demonstrează utilizarea declarației With pentru a preciza codul.

1. Selectați orice celulă sau bloc de celule.

2. Porniți înregistratorul de macrocomenzi și apelați Macro FormatCells. Setarea Referințe relative nu va fi relevantă.

3. Accesați Format> Celule> Font și alegeți Times New Roman și roșu.
Mergi la Modele și alegeți Galben.
Mergi la Aliniere și alegeți Orizontal, în centru
Mergi la Număr și alegeți Valută.

4. Faceți clic pe Bine și opriți reportofonul.

5. Faceți clic pe Anula buton (sau Ctrl + Z) pentru a anula modificările aduse foii de lucru.

6. Selectați un bloc de celule și rulați Celule de format macro. Rețineți că nu poate fi anulat! Tastați celulele pentru a verifica rezultatul formatării.

7. Uită-te la cod:

Sub FormatSelection ()

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

Cu Selecție

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientare = 0

.ShrinkToFit = False

.MergeCells = False

Se termina cu

Cu Selection.Font

.Name = "Times New Roman"

.FontStyle = "Regular"

.Mărime = 10

.Strikethrough = Fals

.Superscript = False

.Subscript = False

.OutlineFont = False

.Umbra = Fals

.Underline = xlUnderlineStyleNone

.ColorIndex = 3

Se termina cu

Cu Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

Se termina cu

Sfârșitul Sub

Schimbați fontul în Times New Roman
Schimbați culoarea fontului în roșu
Schimbați culoarea de umplere în Galben
Apasă pe Centru buton
Apasă pe Valută buton

13. Uită-te la cod. Încă primiți o mulțime de lucruri pe care nu le doriți neapărat. Excel înregistrează toate fișierele Mod implicit setări. Cele mai multe dintre acestea sunt șterse în siguranță.

14. Experimentați editarea directă a codului pentru a schimba culorile, fontul, formatul numerelor etc.

Exercițiul 3: Urmăriți înregistrarea unui macro

Acest exercițiu arată că puteți învăța urmărind construirea macro-ului pe măsură ce este înregistrată. Este, de asemenea, un exemplu în care uneori declarația With nu este adecvată.

1. Deschideți fișierul VBA01.xls.

În timp ce această foaie de lucru este vizual OK și poate fi înțeleasă de utilizator, prezența celulelor goale poate provoca probleme. Încercați să filtrați datele și să vedeți ce se întâmplă. Mergi la Date> Filtru> Autofiltru și filtrați după regiune sau lună. Este clar că Excel nu face aceleași ipoteze ca și utilizatorul. Celulele goale trebuie completate.

2. Tiglă ferestrele Excel și VBE (vertical), astfel încât acestea să fie una lângă alta.

3. Selectați orice celulă din date. Dacă este o celulă goală, trebuie să fie adiacentă unei celule care conține date.

4. Porniți înregistratorul de macrocomenzi și apelați macrocomanda FillEmptyCells. Setați să înregistrați Referințe relative.

5. În fereastra VBE găsiți și faceți dublu clic pe modul (Module1) pentru registrul de lucru curent pentru a deschide panoul de editare, apoi opriți fereastra Project Explorer și fereastra Proprietăți (doar pentru a face spațiu).

6. Înregistrați noua macro după cum urmează:

Pasul 1. Ctrl + * (pentru a selecta regiunea curentă)
Pasul 2. Editați> Accesați> Special> Blanks> OK (pentru a selecta toate celulele goale din regiunea curentă)
Pasul 3. Tastați = [Săgeată sus] apoi apăsați Ctrl + Enter (pentru a plasa tastarea în toate celulele selectate)
Pasul 4. Ctrl + * (pentru a selecta din nou regiunea curentă)
Pasul 5. Ctrl + C (pentru a copia selecția - orice metodă va face)
Pasul 6. Editați> Lipiți special> Valori> OK (pentru a lipi datele înapoi în același loc, dar aruncând formulele)
Pasul 7. Esc (pentru a ieși din modul Copiere)
Pasul 8. Opriți înregistrarea.

7. Uită-te la cod:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select

Selection.SpecialCells (xlCellTypeBlanks). Selectați

Selection.FormulaR1C1 = "= R [-1] C"

Selection.CurrentRegion.Select

Selecție.Copie

Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _

False, Transpose: = False

Application.CutCopyMode = Fals

Sfârșitul Sub

8. Rețineți utilizarea spațiului și a sublinierii „_” pentru a indica împărțirea unei singure linii de cod pe o nouă linie. Fără acest lucru Excel ar trata codul ca două afirmații separate.

9. Deoarece această macrocomandă a fost înregistrată cu comenzi bine gândite, există puțin cod inutil. În Lipiți special totul după cuvântul „xlValues” poate fi șters.

10. Încercați macro-ul. Apoi utilizați instrumentul AutoFilter și notați diferența.