Colecție de macrocomenzi și funcții Excel. Automatizați sarcinile folosind Macro Recorder - Excel. Rezolvarea unei probleme folosind programarea VBA

Macro pentru evidențierea celulei A1 pe fiecare foaie din registrul de lucru activ. Acest lucru face, de asemenea, să se miște ecranul.

Sub A1SelectionEachSheet() Dim i As Integer Application.ScreenUpdating = False For i = 1 To Sheets.Count Sheets(i).Select ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollRow = 1 Range("a1").Select Next Sheets(1) .Selectați aplicația.ScreenUpdating = True End Sub

Macro pentru copierea foii curente de un anumit număr de ori. Util pentru testarea unor macrocomenzi - editări făcute, verificate pe o copie a datelor. Am rămas fără copii — rulați macrocomanda din nou

Sub SimpleCopy() Dim i As Integer, j As Integer i = Application.InputBox("Introduceți numărul de copii ale foii curente") Application.ScreenUpdating = False Pentru j = 1 To i ActiveSheet.Copy after:=Sheets(Sheets) .Count) ActiveSheet .Name = „Copy” & j Next j Application.ScreenUpdating = True End Sub

Creați foi cu titluri dintr-un interval specificat pe o foaie

Sub CreateFromList() Dim cell As Range for each cell In Selection Sheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = cell.Value Celula următoare End Sub

Markros pentru că a trimis o scrisoare cu întârziere. Macrocomandă modificată din cartea lui John Walkenbach Programming VBA profesional

Sub SendLetter() Dim OutApp ca obiect Dim OutMail ca obiect Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon La eroare GoTo cleanup Set OutMail = OutApp.CreateItem(0) La eroare Reluați Next With OutMail .To = " [email protected]" .Subject = "Raport de vânzări" .Atașamente.Add "C:\Test.txt" .Body = "Text e-mail" .DeferredDeliveryTime = Înlocuire(Data, ".", "/") & " 11:00:00 " .send ".Afișează pentru a genera o scrisoare și a o deschide End With On Error GoTo 0 Set OutMail = Nimic curățare: Set OutApp = Nothing End Sub

Macro-cuprins ușor modificată de la Nikolai Pavlov.
Dacă o foaie „Cuprins” există deja în carte, macrocomandă vă solicită să o ștergeți. Dacă nu, creează o foaie „Cuprins” și inserează legături cu numele foilor

Sub TableOfContent() Dim sheet As Worksheet Dim cell As Range Dim Answer As Integer Application.ScreenUpdating = False Cu ActiveWorkbook Pentru fiecare foaie de lucru din ActiveWorkbook.Worksheets Dacă Worksheet.Name = "Cuprins" Apoi Răspuns = MsgBox("Cartul de lucru are un foaie cu numele Cuprins. Ștergeți-o?", vbYesNo) Dacă Răspuns = vbNu Apoi Ieșiți Sub Dacă Răspuns = vbDa Apoi Application.DisplayAlerts = False Worksheet.Delete Application.DisplayAlerts = True End If End If Next End With Sheets(Array) (1)).Selectați foi.Adăugați foi (1).Nume = „Cuprins” cu ActiveWorkbook Pentru fiecare foaie din ActiveWorkbook.Worksheets Dacă foaia.Nume<>„Cuprins” Apoi Setați celulă = Foi de lucru(1).Cellule(foaia.Index, 1) .Foile de lucru(1).Hyperlinkuri.Adăugați ancora:=celulă, Adresă:="", SubAdresă:=""" și foaie .Nume și celulă """ & "!A1".Formulă = foaie.Nume Sfârșit dacă foaia următoare Se termină cu rânduri ("1:1").Delete Application.ScreenUpdating = True End Sub

Sortarea foilor din vrăjitorii VBA. Macro-ul sortează și el cearșafuri ascunse. Nu va funcționa dacă cartea are o structură protejată

Sub SORT_ALL_SHEETS() Application.ScreenUpdating = False: Application.EnableEvents = False Dim iSht As Worksheet, oDict As Object, i%, j% Set oDict = CreateObject("Scripting.Dictionary") " amintiți-vă starea de vizibilitate a fiecărei foi și faceți totul vizibil pentru fiecare iSht din ActiveWorkbook.Sheets oDict.Item(iSht.Name) = iSht.Visible: iSht.Visible = True Next With ActiveWorkbook " sortarea foilor vizibile Pentru i = 1 To .Sheets.Count - 1 Pentru j = i + 1 La .Sheets.Count Dacă UCase(.Sheets(i).Name) > UCase(.Sheets(j).Name) Apoi .Sheets(j).Move Before:=.Sheets(i) Next j Next i End With "restaura starea initiala vizibilitatea fiecărei foi pentru fiecare iSht din ActiveWorkbook.Sheets iSht.Visible = oDict.Item(iSht.Name) Next Application.EnableEvents = True: Application.ScreenUpdating = True End Sub

Importați coloanele „Field1” și „Field2” din foaia „Sheet1” fisier Excel„C:\Manager.xls” prin conexiunea ADODB și inserarea conținutului pornind de la celula A1 a foii curente

Chiar dacă nu știți nimic despre VBA și macrocomenzi, veți fi inspirat să aflați mai multe după ce citiți câteva dintre trucurile și trucurile din această parte. Dacă abia începi să lucrezi cu macrocomenzi, poți găsi informații utile aici.

. .

În articolele anterioare, ați văzut cum Excel îi poate gestiona pe alții aplicații Microsoft precum Word și Outlook. Dar, în același timp, pot fi folosite și alte aplicații Management Excel. De exemplu, ați scris o macrocomandă pentru Word sau Access care creează un tabel Excel, îl umple cu date și apoi îl salvează. Excel nu trebuie neapărat să [...]

. .

Puteți folosi această tehnologie pentru a controla Microsoft Outlook si trimite e-mailuri direct din foaia de calcul sau copiați intrările din caiet. Desigur, caracteristicile Excel sunt astfel încât e-mail tabelul va fi trimis, dar această metodă vă permite doar să trimiteți o parte din tabel. Pentru ca acest cod să funcționeze, trebuie să aveți […]

. .

Această metodă poate fi foarte utilă, de exemplu dacă ai document standard cu tabele pline cu macrocomenzi de date din tabele Excel. Puteți rula macro-ul și datele vor fi transferate în tabelele din document Word. Recent am avut sarcina de a scrie un program pentru a completa un raport despre SLA (Service Level Agreement). Raportează […]

. .

Macro-urile sunt adesea folosite pentru a automatiza funcționarea aplicațiilor. Orice macrocomandă este o secvență de acțiuni înregistrate sub un anumit nume. Dacă atunci când lucrezi cu Microsoft Excel este necesar să efectuați aceeași secvență de operații de mai multe ori (de exemplu, formatarea complexă a celulei curente sau adăugarea linie nouă cu umplerea unora dintre celulele sale cu formule), apoi puteți nota aceste acțiuni și [...]

Lucrul cu cărțile

Macrocomanda 1: Crearea unui nou registru de lucru de la zero
Macro 2. Salvarea unui registru de lucru atunci când o anumită celulă/zonă este modificată
Macro 3. Salvarea registrului de lucru înainte de închidere
Macro 4. Protejarea unei foi de lucru într-un registru de lucru înainte de închidere
Macro 5. Deprotejarea unei foi la deschiderea unui fișier Excel
Macro 6. Deschideți un registru de lucru pe foaia dorită
Macro 7. Deschiderea unui anumit registru de lucru definit de utilizator
Macro 8. Stabiliți dacă cartea este deschisă
Macro 9. Stabiliți dacă o carte există într-un folder
Macro 10. Actualizați toate conexiunile din registrele de lucru deschise
Macro 11. Închideți toate cărțile simultan
Macro 12. Deschideți toate registrele de lucru dintr-un folder
Macro 13. Imprimați toate cărțile dintr-un folder
Macro 14. Nu permiteți închiderea cărții până când celula nu este umplută
Macro 15. Creați copie de rezervă cartea curentă cu data de azi

Lucrul cu foi

Macro 16. Adăugați o nouă foaie de lucru și atribuiți un nume
Macro 17. Ștergeți toate foile cu excepția celei active
Macro 18. Ascundeți totul, cu excepția foii de lucru active
Macro 19. Afișați toate foile registrului de lucru
Macro 20. Mutarea foilor de lucru
Macro 21. Sortarea foilor după nume
Macro 22. Grupați foile după culoarea etichetei
Macro 23. Copiați o foaie într-un registru de lucru nou
Macro 24. Creați un nou registrul de lucru pentru fiecare foaie
Macro 25. Imprimarea foilor
Macro 26. Protejați toate foile
Macro 27. Deprotejați toate foile
Macro 28. Crearea unui cuprins
Macrocomanda 29: Faceți dublu clic pentru a mări o foaie de lucru
Macro 30. Selectați coloana de rând activ

Selectarea și modificarea intervalelor

Macro 31. Selectarea și formatarea unui interval
Macro 32. Crearea și selectarea intervalelor denumite
Macro 33. Enumerare folosind un număr de celule
Macro 34. Selectarea și formatarea intervalelor
Macro 35. Inserare linii goaleîn intervalul
Macro 36. Afișați toate linii ascunseși coloane
Macro 37. Eliminarea liniilor goale
Macro 38. Eliminarea coloanelor goale
Macro 39. Selectarea și formatarea tuturor formulelor din registrul de lucru
Macrocomanda 40: Găsiți și selectați primul rând sau coloană goală
Macro 41. Aplicați culoare de umplere suplimentară
Macro 42. Sortați intervalele prin dublu clic
Macro 43. Limitarea intervalului de defilare într-o anumită zonă
Macro 44. Setați automat zona de imprimare a foii

Lucrul cu date

Macro 45. Copiați și lipiți un interval
Macrocomanda 46: Convertiți toate formulele dintr-un interval în valori
Macro 47. Transform valorile textului la numeric
Macro 48. Transformarea unei liniuțe în minus
Macro 49. Șterge spatii suplimentare din toate celulele din interval
Macro 50. Tăiați 5 caractere din stânga în fiecare celulă a intervalului
Macrocomanda 51. Adăugați zerouri lipsă în celulă
Macrocomanda 52. Înlocuiți celulele goale cu zero
Macro 53. Adăugarea de text la începutul sau la sfârșitul unei celule
Macrocomanda 54. Crearea unei macrocomenzi de conversie a datelor
Macro 55. Ștergeți datele (caractere care nu se imprimă)
Macro 56. Selectați duplicate în intervalul de date
Macro 57. Ascunderea liniilor repetate
Macro 58. Ascundeți selectiv săgețile filtrului automat
Macrocomanda 59. Copiați rândurile filtrate într-un nou registru de lucru
Macro 60. Crearea unei noi foi pentru fiecare element din AutoFilter
Macro 61. Afișați coloanele filtrate în bara de stare

Lucrul cu tabelele pivot

Macro-comanda 62: Crearea compatibilităţii inverse masă rotativă
Macro 63. Actualizarea tuturor tabelelor pivot dintr-o carte
Macro 64. Crearea unui „inventar” al tuturor tabelelor pivot ale cărții
Macro-comanda 65. Creați toate tabelele pivot folosind același cache de date
Macrocomanda 66. Ascundeți toate subtotalurile din tabelul pivot
Macro 67. Modificați numele datelor tuturor câmpurilor rezumate
Macro 68. Însumare forțată pentru toate datele rezumate
Macro 69: Aplicați formatul numeric tuturor elementelor de date
Macro 70. Sortarea câmpurilor rezumate în ordine alfabetică
Macro 71. Aplicați sortare personalizată elementelor de date
Macro 72: Punerea protecției pe masa pivotantă
Macrocomanda 73: Aplicați constrângeri de câmp pivot
Macro 74. Îndepărtarea automată fișe cu detalii rezumative
Macro 75: Imprimați un tabel pivot pentru fiecare element de filtru
Macro 76. Creați un fișier nou pentru fiecare element de filtru
Macro 77. Pregătirea unui interval de date pentru un tabel pivot

Lucrul cu diagrame și grafice

Macro 78. Redimensionarea diagramelor pe o foaie de lucru
Macro 79. Conectarea diagramei la un interval specific
Macro 80: Crearea unui set de diagrame disjunse
Macro 81: Imprimați toate diagramele pe o foaie de lucru
Macro 82. Marcarea celor mai bune și cele mai proaste valori pe
Macro 83. Aceleași culori pentru valori pe diagrame diferite
Macro 84. Potrivirea culorii diagramelor cu culoarea intervalelor

Trimiterea de e-mailuri din Excel

Macro 85. Trimiterea unei cărți active prin poștă (atașament)
Macro 86: Trimiterea unui interval de valori ca atașament
Macro 87. Trimiterea unei foi ca atasament
Macro 88. Trimiteți un e-mail cu un link către fișierele noastre
Macro 89: Trimiterea de e-mailuri adăugând adrese la lista noastră de contacte
Macro 90. Salvarea tuturor atașamentelor într-un folder separat
Macro 91. Salvarea anumitor atașamente într-un folder

Interoperabilitate cu alte aplicații Office

Macro 92. Rularea unei cereri de acces din Excel



Macro 96. Compresie de bază Accesați datele din Excel
Macro 97. Trimitere date Excel la un document Word
Macro 98. Efectuarea unei fuziuni cu un document Word
Macro 99: Trimiterea datelor Excel la o prezentare PowerPoint
Macro 100. Trimitere Diagrame Excelîn prezentările PowerPoint
Macro 101: Conversia unui registru de lucru într-o prezentare PowerPoint

Interoperabilitate cu alte aplicații Office
învață să lucrezi cu Word, Access și PowerPoint
Macro 92. Rularea unei cereri de acces din Excel
Macro 93. Rularea unei macrocomenzi Access din Excel
Macro 94. Deschiderea unui raport Access din Excel
Macro 95. Deschiderea unui formular de acces din Excel

Următorul exemple simple macrocomenzi Excel ilustrați unele dintre caracteristicile și tehnicile descrise în tutorialul Excel VBA.

Macrocomandă Excel: Exemplul 1

Inițial această procedură Sub a fost dat ca exemplu de utilizare a comentariilor în codul VBA. Totuși, aici puteți vedea și cum sunt declarate variabilele, cum funcționează referințele celule Excel, folosind o buclă Pentru, operator condițional Dacăși afișarea unei ferestre de mesaj.

„Procedura Sub caută o celulă care conține șirul specificat „în intervalul de celule A1:A100 din foaia activă Sub Find_String(sFindText As String) Dim i As Integer „Un număr întreg de tip Integer, utilizat într-o buclă For Dim iRowNumber Ca Integer „Un număr întreg de tip Integer pentru stocarea rezultatului iRowNumber = 0 „Se uită prin celulele A1:A100 una câte una până când șirul este găsit sFindText For i = 1 To 100 If Cells(i, 1).Value = sFindText Then” Dacă se găsește o potrivire cu șirul specificat, salvați numărul linia curentă si plecam de la Pentru buclă iRowNumber = i Exit For End If Next i "Informăm utilizatorul într-o fereastră pop-up dacă a fost găsit rândul necesar "Dacă șir dat găsit, indicați în ce celulă a fost găsită potrivirea Dacă iRowNumber = 0 Apoi MsgBox „Rândul „ & sFindText & „ nu a fost găsit” Altfel MsgBox „Rândul „ & sFindText & „ a fost găsit în celula A” & iRowNumber End If End Sub

Macrocomandă Excel: Exemplul 2

Următoarea procedură Sub– exemplu de utilizare a unei bucle Face în timp ce. De asemenea, puteți vedea cum sunt declarate variabilele, lucrând cu referințe de celule Excel și utilizând o instrucțiune condiționată. Dacă.

„Procedura Sub scoate numere Fibonacci care nu depășesc 1000 Sub Fibonacci() Dim i As Integer „Un contor pentru a indica poziția unui element în secvența Dim iFib As Integer „Stochează valoarea curentă a secvenței Dim iFib_Next As Integer „Stochează următoarea valoare a secvenței Dim iStep As Integer „Stochează dimensiunea următorului increment „Inițializați variabilele i și iFib_Next i = 1 iFib_Next = 0 „Bucla Do While va fi executată până când valoarea „numărului actual Fibonacci depășește 1000 Do While iFib_Next< 1000 If i = 1 Then "Un caz special pentru primul element al secvenței iStep = 1 iFib = 0 Altfel „Salvați dimensiunea următorului increment înainte de a suprascrie „valoarea curentă a secvenței iStep = iFib iFib = iFib_Next End If „Ieșiți numărul actual Fibonacci în coloana A din foaia de lucru activă „în rândul cu index i Cells(i, 1).Value = iFib „Calculați următorul număr Fibonacci și creșteți indicele de poziție al elementului cu 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Macrocomandă Excel: Exemplul 3

Această procedură Sub scanează celulele unei coloane A foaie activă până când întâlnește o celulă goală. Valorile sunt scrise într-o matrice. Această macrocomandă simplă Excel arată cum să lucrați cu matrice dinamiceși, de asemenea, folosind o buclă Fă până la. ÎN în acest exemplu nu vom efectua nicio acțiune cu matricea, deși în practica reală de programare, după ce datele sunt scrise în matrice, astfel de acțiuni sunt de obicei efectuate asupra lor.

„Procedura Sub stochează valorile celulei coloanei A a foii active în tabloul Sub GetCellValues() Dim iRow As Integer „Stochează numărul rândului curent Dim dCellValues() As Double „O matrice pentru stocarea valorilor celulei ​​iRow = 1 ReDim dCellValues(1 la 10) „Do Loop Until iterează secvențial prin celulele coloanei A a foii active” și extrage valorile acestora într-o matrice până când se întâlnește o celulă goală. Do Until IsEmpty(Cells( iRow, 1)) „Verificați dacă matricea dCellValues ​​​​are o dimensiune suficientă „Dacă nu, măriți matricea de dimensiune cu 10 folosind ReDim If UBound(dCellValues)< iRow Then ReDim Preserve dCellValues(1 To iRow + 9) End If "Сохраняем значение текущей ячейки в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop End Sub

Macrocomandă Excel: Exemplul 4

În acest exemplu, procedura Sub citește valori dintr-o coloană A fisa de lucru Foaia 2și o face cu ei operatii aritmetice. Rezultatele sunt introduse în celulele coloanei A pe foaia de lucru activă. Această macrocomandă demonstrează utilizarea obiectelor Excel. În special, contestația se realizează prin procedură Sub la obiect Coloane, și arată cum este accesat acest obiect prin intermediul obiectului Fisa de lucru. De asemenea, se arată că la accesarea unei celule sau a unui interval de celule de pe foaia activă, nu este necesar să specificați numele acestei foi atunci când scrieți linkul.

„Procedura Sub, folosind o buclă, citește valorile din coloana A a foii de lucru Sheet2, „efectuează operații aritmetice cu fiecare valoare și scrie rezultatul în „coloana A a foii de lucru active (Sheet1) Sub Transfer_ColA() Dim i As Integer Dim Col As Range Dim dVal As Double "Atribuiți variabilei Col coloana A a foii de lucru Sheet 2 Set Col = Sheets("Sheet2"). Columns("A") i = 1 "Folosind o buclă, citim valorile ​​din celulele coloanei Col până când „până când se întâlnește o celulă goală Do Until IsEmpty(Col.Cells(i))” „Efectuați operații aritmetice pe valoarea celulei curente dVal = Col.Cells(i).Value * 3 - 1" Următoarea comandă scrie rezultatul în coloana A a foii de lucru active „Nu este nevoie să indicați numele foii în link, deoarece aceasta este foaia activă. Cells(i, 1) = dVal i = i + 1 Loop End Sub

Macrocomandă Excel: Exemplul 5

Această macrocomandă arată un exemplu de cod VBA care monitorizează un eveniment Excel. Evenimentul la care este atașată macrocomanda are loc de fiecare dată când o celulă sau un interval de celule este selectată în foaia de lucru. În cazul nostru, atunci când selectați o celulă B1, pe ecran apare o fereastră de mesaj.

"Acest cod arată o fereastră de mesaj dacă în foaia de lucru curentă „Celula B1 este selectată Private Sub Worksheet_SelectionChange(ByVal Target As Range) „Verificați dacă celula B1 este selectată Dacă Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then” Dacă este selectată celula B1, efectuați acțiunea necesară MsgBox „Ați selectat celula B1” End If End Sub

Macrocomandă Excel: Exemplul 6

Această procedură ilustrează utilizarea operatorilor La EroareȘi Relua pentru tratarea erorilor. Acest cod arată, de asemenea, un exemplu de deschidere și citire a datelor dintr-un fișier.

„Procedura Sub atribuie argumentelor Val1 și Val2 valorile celulelor A1 și B1” din registrul de lucru Data.xlsx aflat în folderul C:\Documents and Settings Sub Set_Values(Val1 As Double, Val2 As Double) Dim DataWorkbook As Workbook On Error GoTo ErrorHandling " Deschideți registrul de lucru cu setul de date DataWorkbook = Workbooks.Open ("C:\Documents and Settings\Data") "Atribuiți variabilelor Val1 și Val2 valori din registrul de lucru dat Val1 = Sheets("Sheet1) ").Cells(1, 1) Val2 = Sheets("Sheet1").Cells(1, 2) DataWorkbook.Close Exit Sub ErrorHandling: „Dacă fișierul nu este găsit, utilizatorului i se va cere să plaseze fișierul care sunt caută" în folderul doritși după aceea continuați să executați macrocomanda MsgBox „Fișierul Data.xlsx nu a fost găsit!” & _ „Vă rugăm să adăugați registrul de lucru în folderul C:\Documents and Settings și faceți clic pe OK” Reluare End Sub

Bună ziua

Vreau să dedic acest articol unei secțiuni atât de uriașe a MS Excel precum macrocomenzile sau, mai degrabă, să începem de la început și să vedem cum să creați o macrocomandă în Excel, pentru ce este și cum să o utilizați în munca dvs.

După cum știți de la propria experiență, atunci când lucrați cu o macrocomandă există o mulțime de „rutină”, adică se efectuează aceleași operațiuni și acțiuni care sunt necesare pentru a obține rezultatul, aceasta poate fi completarea aceluiași tip de tabele sau formulare, prelucrarea datelor, similare rapoarte săptămânale, lunare etc. Dar utilizarea macrocomenzilor vă va permite să efectuați aceste acțiuni în mod automat folosind Capabilitati Excel la maxim, aruncând aceste operațiuni de rutină și monotone pe umerii puternici ai Excel. De asemenea, motivul utilizării macrocomenzilor poate fi adăugarea oportunitățile necesare, care nu au fost încă implementate în specificații standard Excel (de exemplu, rezultate, colectarea datelor pe o singură foaie etc.).

Dacă nu ați auzit niciodată de o macrocomandă, cea mai precisă definiție a acesteia ar fi: acestea sunt acțiuni pentru care sunt programate o anumită secvențăși scris într-un mediu de programare în limbaj Visual Basic pentru aplicații (VBA). Rularea unei macrocomenzi se poate face de mai multe ori și acest lucru va forța Excel să efectueze orice secvență de acțiuni de care avem nevoie și care pur și simplu nu ne place sau nu dorim să le facem manual. În ciuda varietății mari de limbaje de programare pentru întregul complex Microsoft Office VBA este standardul și funcționează în orice aplicație de suită de birou.

Deci, există 2 moduri de a crea o macrocomandă în Excel:

Creați o macrocomandă în Excelfolosind un macro recorder

În primul rând, să clarificăm ce este un macro recorder și ce legătură are o macro cu el.

Macro recorder este un mic program încorporat în Excel care interpretează orice acțiune a utilizatorului în coduri de limbă Programare VBAși scrie în modulul software comenzile care au fost obținute în timpul procesului de lucru. Adică, dacă creăm raportul zilnic de care avem nevoie cu macro recorder pornit, macro recorder va înregistra totul în comenzile sale pas cu pas și, ca urmare, va crea o macro care va crea un raport zilnic automat.

Această metodă este foarte utilă pentru cei care nu au abilitățile și cunoștințele de lucru în mediul de limbaj VBA. Dar o astfel de ușurință de execuție și înregistrare a unei macrocomenzi are dezavantajele sale, precum și avantajele sale:

  • Un macro recorder poate înregistra doar ceea ce poate atinge, ceea ce înseamnă că poate înregistra acțiuni numai atunci când butoanele, pictogramele, comenzile de meniu și tot ce poate fi folosit; astfel de opțiuni nu sunt disponibile pentru el;
  • Dacă a fost făcută o eroare în timpul perioadei de înregistrare, aceasta va fi de asemenea înregistrată. Dar puteți folosi butonul de anulare ultima actiune, ștergeți ultima comandă pe care ați scris-o incorect în VBA;
  • Înregistrarea în macro recorder se efectuează numai în limitele ferestrei MS Excel, iar dacă închideți programul sau porniți altul, înregistrarea va fi oprită și nu va mai fi efectuată.

Pentru a activa macro recorder-ul pentru înregistrare, trebuie să efectuați următorii pași:


Următorul pas în lucrul cu înregistrarea macro va fi configurarea parametrilor acestuia pentru înregistrarea ulterioară a macro-ului; acest lucru se poate face în fereastră „Înregistrați o macrocomandă”, Unde:

  • Câmp pentru numele macrocomenzii- poți scrie un nume pe care îl înțelegi în orice limbă, dar trebuie să înceapă cu o literă și să nu conțină semne de punctuație sau spații;
  • Câmp de comandă rapidă de la tastatură- va fi folosit de dvs. în viitor pentru pornire rapidă macro-ul dvs. În cazul în care trebuie să înregistrați unul nou, această opțiune va fi disponibilă în meniu „Instrumente” - „Macro” - „Macro” - „Run” sau pe filă "Dezvoltator" apăsând un buton "Macro-uri";
  • Câmpul „Salvare în...”.— puteți specifica locația în care va fi salvat textul macro (dar nu trimis) și există 3 opțiuni:
    • "Această carte"— macro-ul va fi scris în modulul registrului de lucru curent și poate fi executat numai dacă este dat Caietul de lucru Excel va fi deschis;
    • "O carte noua"— macro-ul va fi salvat în șablonul pe baza căruia se creează un șablon gol în Excel O carte noua, ceea ce înseamnă că macro-ul va deveni disponibil în toate registrele de lucru care vor fi create pe acest computer de acum înainte;
    • „Cartea macro personală”- este un registru de lucru cu macrocomandă special numit „Personal.xls”și este folosit ca o bibliotecă specială de stocare a macrocomenzilor. La pornire, macrocomenzile din registrul de lucru „Personal.xls” sunt încărcate în memorie și pot fi lansate în orice registru de lucru în orice moment.
  • Câmpul „Descriere”.- aici puteți descrie ce ar trebui să facă macro-ul și cum, de ce a fost creată și ce funcții are, acesta este un câmp pur informativ, care se numește memorie.

Odată ce ați rulat și înregistrat macrocomanda, completând totul acțiunile necesare, înregistrarea poate fi oprită cu comanda „Opriți înregistrarea” iar macro-ul dvs. va fi creat folosind macro recorder-ul.

Creați o macrocomandă în Excelîn editorul Visual Basic.

În această metodă, ne vom uita la cum să creați o macrocomandă în Excel prin editorul de programe VBA care, așa cum am spus mai sus, este încorporat în orice versiune de Excel.

Lansarea editorului de programe VBA are loc diferit, în funcție de versiunea programului dvs. Excel:

  • în versiunile de Excel 2003 și ulterioare, avem nevoie în meniu "Serviciu", selectați elementul "Macro"și apăsați „Editor Visual Basic”;
  • în versiunile de Excel 2007 și ulterioare, avem nevoie de pe filă "Dezvoltator" apasa butonul „Editor Visual Basic”. Dacă nu găsiți această filă, trebuie să o activați selectând elementul de meniu „Fișier” - „Opțiuni” - „Personalizare panglică” iar în caseta de dialog, utilizați caseta de selectare pentru a activa fila "Dezvoltator".

În fereastra care se deschide, se vede interfața editorului VBA, aici totul este scris în engleză și nu există localizări, nu trebuie să o cauți, ci doar să o accepți și să lucrezi, mai ales că este doar de neînțeles la început, apoi totul va fi familiar.

Deci, cum să lucrați în editorul VBA, unde este ce este stocat și cum să creați o macrocomandă în Excel. Întrebări de această natură apar imediat de îndată ce îl vedeți pe editor, iar acum le vom lua în considerare pe toate.

Toate macrocomenzile noastre vor fi stocate în așa-numitul module software. În oricare dintre cărți versiuni Excel putem crea orice module softwareîn orice cantitate și plasați în ele toate macrocomenzile pe care le creăm. Un modul poate conține orice număr de macrocomenzi de care aveți nevoie sau le creați. Modulele sunt disponibile în fereastră „Explorator de proiect”și sunt situate în colțul din stânga sus al editorului de macro-uri (puteți apela și cu combinația de taste CTRL+R).

Modulele de program din editorul VBA există în mai multe tipuri și sunt obișnuite opțiuni diferite si situatii:


De fapt, macro-ul în sine, atunci când lucrează într-un modul standard, arată astfel:

Să ne uităm la un exemplu de macrocomandă funcțională:

  • Toate macrocomenzile în obligatoriu va începe cu operatorul Sub, urmat de numele macrocomenzii și de o listă de argumente între paranteze. În cazurile în care nu există argumente, parantezele trebuie lăsate necompletate;
  • Toate macrocomenzile trebuie să se termine cu operatorul End Sub;
  • Date care sunt între operatori SubȘi End Sub, este corpul macro-ului care va rula atunci când macro-ul este rulat. În exemplu, macro-ul verifică și, la introducerea datelor, le găsește în lista bazei de date și afișează valoarea specificată de criterii.

După cum puteți vedea, a doua metodă este mai dificil de utilizat și de înțeles dacă nu aveți experiență în programare în general sau în VBA în special. Este foarte dificil să înțelegeți și să vă dați seama ce comenzi sunt introduse și cum, ce argumente folosește pentru ca macro-ul să înceapă să-și facă treaba automat. Dar cel care umblă va stăpâni drumul, așa cum spuneau vechii înțelepți, și de aceea nu trebuie să renunți, ci să urmezi poruncile bunicului Lenin...

Crearea unui buton pentru a rula macrocomenzi în bara de instrumente

După cum am spus mai devreme, puteți apela o procedură macro combinație fierbinte taste, dar este foarte obositor să vă amintiți ce combinație este atribuită cui, așa că cel mai bun pariu ar fi să creați un buton pentru a rula macro-ul. Butoanele pot fi create de mai multe tipuri, și anume:


Această metodă este disponibilă pentru orice versiune de MS Excel și constă în faptul că vom plasa butonul direct pe foaia de lucru ca obiect grafic. Pentru a face acest lucru aveți nevoie de:

  • În MS Excel 2003 și mai vechi mergi la meniu "Vedere", alege „Bara de instrumente”și apăsați butonul "Formulare".
  • În MS Excel 2007 și versiuni ulterioare ai nevoie pe filă "Dezvoltator" deschide meniul drop-down "Introduce"și selectați un obiect "Buton".

După toate acestea, trebuie să desenați un buton pe foaia dvs. în timp ce țineți apăsat butonul stâng al mouse-ului. După finalizarea procesului de desenare, se va deschide automat o fereastră în care va trebui să selectați macrocomanda care trebuie să fie executată atunci când faceți clic pe butonul dvs.

Cum se creează funcții personalizate în VBA

În principiu, crearea așa-numitelor funcții definite de utilizator nu este foarte diferită de crearea unei macrocomenzi obișnuite într-un modul de program standard. Diferența dintre aceste concepte este că macro-ul va efectua acțiunile conținute în ea cu obiecte carte sau foaie (acestea sunt formule, celule etc.), dar funcția utilizator funcționează doar cu valorile pe care le primește de la noi. iar acestea sunt argumentele date inițiale pentru calcule.

De exemplu, pentru a crea funcție personalizată taxa pe valoarea adăugată, alias TVA, trebuie să deschidem editorul nostru VBA și să adăugăm modul nou, selectați din meniu "Introduce" paragraf "Modul"și introduceți acolo textul pentru funcția noastră: Trebuie remarcat faptul că principala diferență dintre o funcție și o macro este antetul Funcţieînlocuit Subși există o listă completă de argumente, în exemplul nostru aceasta este Suma. Odată ce codul nostru a fost introdus, acesta va deveni disponibil în fereastra standard Function Wizard, care se află în meniu "Formulele", paragraful „Inserare funcție”.
Și selectați o categorie « Definit de utilizator» în care va fi afișată funcția noastră scrisă „NDS”.
După selectarea funcției noastre, puteți plasa cursorul pe celula cu argumentul, care va conține suma pentru care calculăm TVA, totul se întâmplă ca la o funcție obișnuită.
Și asta e tot pentru mine! Chiar sper că articol despre cum să creați o macrocomandă în Excel ți-a fost clar și util. Aș fi foarte recunoscător pentru comentariile voastre, deoarece acesta este un indicator de lizibilitate și mă inspiră să scriu articole noi! Distribuie ce ai citit prietenilor tăi și da like!