Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Primjeri gotovih makroa. Excel makro primjeri

Primjeri gotovih makroa. Excel makro primjeri

Svrha rada - Naučite osnovne operatore i implementirajte osnovne programske konstrukcije u VBA jeziku.

4.1 Osnovne faze rada sa vba programima u Excel-u

Da biste pripremili i izvršili VBA program, potrebno je da uradite sledeće:

    u Excelu, izaberite komandu iz menija Usluga - Makro - UrednikVisualBasic;

    u prozoru koji se pojavi izaberite komandu iz menija InsertModul... Kreira se modul, odnosno, jednostavno rečeno, otvara se prozor u koji možete unijeti tekst programa.

Na početku modula može se specificirati instrukcija OpcijaEksplicitno... Ako je specificirano, tada će sve varijable koje se koriste u programu morati biti deklarirane u naredbi Dim(za više detalja pogledajte pododjeljak 4.3).

U nekim slučajevima, u zavisnosti od podešavanja VBA okruženja, instrukcija OpcijaEksplicitno se automatski prikazuje na početku modula. Ako programer želi da koristi varijable bez deklarisanja u naredbi Dim, zatim uputstvo OpcijaEksplicitno mora biti uklonjen.

Da biste pokrenuli program za izvršenje, izaberite komandu iz menija Pokreni - Pokreni pod/korisnički obrazac.

4.2 Najjednostavniji primjer vba programa

Primjer 4.1- Program koji podiže navedeni broj a do navedenog stepena b.

Dim a As Single, b As Single

a = InputBox (“Unesite bazu:”)

b = InputBox (“Unesite eksponent:”)

x = a ^ b 'Eksponencijacija

MsgBox (“Rezultat je” & x)

Evo riječi Sub označava početak postupka; njeno ime je u ovom slučaju prajmer4_1 ... VBA program se uvijek sastoji od jedne ili više procedura (u ovom slučaju, jedne).

Znak '(jednostruki navodnik) označava početak komentara. Tekst komentara može biti bilo koji.

Dim- operator deklaracije varijable. U ovom slučaju je naznačeno da su varijable a i b su tipa Single... one. mogu biti i cijeli i razlomci. Tipovi podataka i deklaracije varijabli biće detaljnije razmotreni u Odjeljku 4.3.

InputBox- funkcija za unos vrijednosti varijable. Linija a = InputBox(“Unesite bazu:”) znači da je unesena vrijednost varijable a; poruka se prikazuje na ekranu "Uđite u bazu:"... Linija x = a^ b- operator dodjeljivanja: izračunava se vrijednost desne strane (u ovom slučaju varijabla a podignut na vlast b), a rezultat se dodjeljuje varijabli navedenoj na lijevoj strani (u ovom slučaju varijabli x). Linija MsgBox(“Rezultat je” &x) znači da je poruka prikazana na ekranu "Rezultat je jednak" i vrijednost varijable x.

Napomena - Potpis & u funkciji MsgBox je namijenjen za spajanje nekoliko stavki podataka koje je potrebno prikazati na ekranu, u ovom primjeru - nizova "Rezultat je jednak" i varijabilna x... Slično znak & može se koristiti u funkciji InputBox(primjeri takve upotrebe bit će navedeni u nastavku). Prije znaka & i moraju biti praćene razmacima.

Više VBA naredbi se može staviti u jedan red. Da biste to učinili, razdvojeni su dvotočkama. Dakle, program iz primjera 4.1 mogao bi se napisati, na primjer, ovako:

„Prvi primjer VBA programa

Dim a As Single, b As Single

a = InputBox (“Unesite bazu:”): b = InputBox (“Unesite eksponent:”)

x = a ^ b: MsgBox (“Rezultat je” & x) 'Eksponencijalirajte i ispišite rezultat

Ovaj primjer koristi proceduru koja se zove potprogram. Ovaj postupak počinje riječju Sub... Uvek postoji barem jedna potprogram u VBA programu. Osim toga, postoji još jedna vrsta procedure u VBA - funkcije. Funkcijska procedura počinje riječju Funkcija... Korištenje takvih postupaka će biti razmotreno u pododjeljku 4.9.

(Visual Basic za aplikaciju)

Osnovni programski jezik visokog nivoa (prevodilac)

Vizualni - sadrži vizualne alate za razvoj programa (kodova) koji pojednostavljuju rad korisnika, omogućava vam snimanje kodova pomoću makro snimača.

Aplikacija je aplikacija za softverski sistem MSOffice zajedno sa Word, Access, PowerPoint aplikacijama.

Zašto ti trebaVBA?

    Kombinira (integriše) aplikacije, omogućava vam da upravljate radom drugih aplikacija bez napuštanja Excela, ugrađujete objekte iz drugih aplikacija;

    Radnje koje su dostupne korisniku na radnom listu čine 10% svih mogućnosti Excela, VBA vam omogućava da automatizujete rad vašeg projekta.

VBA spada u broj objektno orijentisanih jezika, odnosno objekti se koriste pri izradi projekata. definicija: kombinovanje podataka i koda u jednu celinu Na primer, element "Dugme" i odgovarajući kod povezan sa ovim dugmetom obezbediće prelazak na drugi list radne sveske.

Glavni objektiVBA:

Aplikacija (sama Excel aplikacija)

Radna sveska (radna sveska je vaš fajl)

WorkSheetFunction (čarobnjak funkcija)

WorkSheet

Domet

Grafikon

Stil

Granica

Enterijer (boja pozadine)

Font

Mnogi od nekih objekata čine porodice– Radne sveske, radni listovi, grafikoni.

Objekti imaju svojstva (radnje na objekte) i metode (radnje samih objekata).

Počnimo sa upoznavanjem alata za vizualizaciju za razvoj projekata u VBA. Ovo je Integrisano okruženje za razvoj aplikacija. Da biste ušli u ovo okruženje, izaberite stavku menija ServiceMacroEditorVBA ili istovremeno pritisnite tastere ALT i F11.

Komponente VBA editora se pojavljuju na ekranu:

Prozor projekta - VBA projekat

Prozor sa svojstvima

Prozor koda

Prozor korisničkog obrasca

Trake sa alatkama

Prozor Project – VBAProject (slika 1) prikazuje strukturu vašeg projekta (fajla). Ovaj prozor se aktivira u VBA editoru odabirom naredbe ViewProjectExplorer ili pritiskom na tipku ProjectExplorer ili pritiskom na Ctrl + R

Rice. 1 Prozor projekta.

Slika 2 Integrisano okruženje za razvoj aplikacija

Prozor koda služi za pohranjivanje koda povezanog s objektom. Svaki objekat ima svoj prozor, tako da svaki radni list ima svoj prozor koda, radna knjiga ima svoj prozor.

Kreiranje prilagođenih funkcija

Prilagođene funkcije se dodaju na standardnu ​​listu WorkSheetFunction. Ove funkcije se kreiraju u posebnom modulu koji prati objekat WorkSheetFunction. Ovaj modul se dodaje projektu pomoću naredbe InsertModule i pojavit će se u prozoru projekta na razini vaše aplikacije. Svi kodovi napisani u ovom modulu će se pojaviti u kategoriji Korisnički definirane funkcije čarobnjaka za funkcije.

Dakle, dodamo modul našem projektu (InsertModule) i upišemo tekst programa u prozor koda ovog modula:

y = Cos ((x + 2) / 2) ^ 2 + Exp (-2 * x) / (x ^ 2 + 1) ^ 0,5

Zatim idemo na radni list "1 graf", u ćeliji c2 ćemo pozvati novu funkciju dodanu glavnoj funkciji - y (x). Rad s ovom funkcijom se ne razlikuje od rada s bilo kojom drugom funkcijom. U prvom koraku potrebno je odabrati y (x) u kategoriji "Korisnički definirane funkcije", u drugom koraku navesti ćeliju A2 kao argumente x. Kao rezultat, formula = y (A2) će biti upisana u ćeliju C2. Prevucite ovu formulu preko cijelog raspona A2: A17 kao što je prikazano na Sl. 3. Naravno, rezultat bi trebao biti isti kao što ste dobili izračunavanjem ove funkcije uobičajenim sredstvima radnog lista.

Slika 3. Funkcija y (x), izračunata na uobičajeni način i korištenjem prilagođene funkcije.

Vba osnovni operatori - uvjetni operatori

Uslovni operatori imaju 2 oblika notacije:

1) Jedan red

IF< условие>ONDA<оператор 1>

IF, THEN, ELSE - nepromjenjive službene riječi, u ugaonim zagradama< >korisnički tekst, ovo je ono što pišete u skladu sa zadatkom, u uglastim zagradama je neobavezni dio, tekst možda nedostaje. Ovaj oblik se obično koristi u slučaju jednostavnih radnji, na primjer, kada se izračunava modul broja y = h = abs (s), možete koristiti sljedeći operator:

AKO je x> 0 ONDA y = x DRUGO y = -x

2) U nekoliko redova. U ovom slučaju, uvjetni izraz nužno završava naredbom "ENDIF"

IF<условие>ONDA

<оператор 1>

<оператор 2>

<оператор 3>

<оператор 4>

Ovaj oblik se koristi za složene proračune, na primjer, kada se računaju korijeni kvadratne jednadžbe. Neka je potrebno pronaći korijene jednadžbe a * x 2 + b * x + c = 0. Kao što znate, ako je b 2 -4 * a * c ≥ 0, tada se korijeni izračunavaju po formuli
, ako je b 2 -4 * a * c ≤ 0, tada nema korijena u rasponu realnih brojeva. Uslovni operator koji implementira ovaj algoritam izgleda ovako:

AKO b ^ 2 -4 * a * c> = 0 ONDA

X1 = (-b + (b ^ 2 - 4 * a * c) ^ (1/2)) / (2 * a)

X2 = (-b + (b ^ 2 + 4 * a * c) ^ (1/2)) / (2 * a)

X1 = “NEMA RJEŠENJA”

X2 = “NEMA RJEŠENJA”

Primjeri pisanja prilagođenih funkcija u vba

Primjer 1.

F
unction y (x)

y = Cos ((x + 2) / 2) ^ 2 + Exp (-2 * x) / (x ^ 2 + 1) ^ 0,5

End Funkcija

Primjer 2

Funkcija z (x)

Ako je x< 0 Then

z = (1 + x + x ^ 2) / (1 + x ^ 2)

Ako je x< 1 Then

z = (1 + 2 * x / (1 + x ^ 2)) ^ (1/2)

z = 2 * Abs (0,5 + Sin (x))

End Funkcija

Predavanje 2

    Svojstva, metode i događaji VBA objekata. Primjer procedure koja koristi pojedinačna svojstva objekta Application.

    Kontrolni elementi

    Tipovi varijabli u VBA

    Operatori petlje

    Primjer programa za tabelarne funkcije

Svojstva, metode i događaji VBA objekata. Primjer procedure koja koristi pojedinačna svojstva objekta Application.

Nastavimo naše upoznavanje sa VBA objektnim modelom. Svi objekti su organizirani u hijerarhijskoj strukturi podređenoj objektu "Application" najvišeg nivoa.

Aplikacija . Radne sveske .

Ako je radna sveska (datoteka) "Grafika" aktivna, dovoljno je naznačiti

Radni listovi ("Sadržaj") Opseg ("A1").

Ako radite na listu „Sadržaj“, onda će veza izgledati kao Opseg („A1“).

Svi objekti imaju svojstva, metode i događaje.

Nekretnina ovo je neka karakteristika objekta (boja, oblik, ime, lokacija, vidljivost, itd.) Vrijednost objekta se postavlja na sljedeći način:

Object.Property = vrijednost svojstva

Metoda to je radnja koja se izvodi na objektu (otvaranje, zatvaranje, brisanje). Pravilo pisanja metode:

Objekt. Metoda

Događaj to je akcija koju objekt prepoznaje (klik mišem, dvostruki klik, pritisak na tipku).

Suštinu programiranja u VBA čine dva koncepta – događaj i odgovor na njega. Ako korisnik utiče na sistem (pritiskom na dugme), što je događaj, onda je pomoću VBA moguće programirati odgovor - akciju odgovora.

Evo nekih svojstava, metoda i događaja glavnih objekata.

Nekretnina

Objekat aplikacije

Naslov (naslov objekta)

Zatvori (zaustavi Excel

Nova radna sveska (kreirajte novu radnu svesku)

AutoREcover

Sačuvaj

SheetActivate (idite na radni list)

ReferenceStyle (referentni stil)

Pokreni (izvršenje makroa)

WorkBookOpen (otvorite radnu svesku)

MemoryFree (informacije o slobodnoj RAM memoriji)

Promjenjivo (ponovno izračunavanje na promjenu ćelija radnog lista)

WorkBookBeforeClose (zatvaranje radne knjige)

MemoryTotal (informacije o ukupnoj RAM memoriji)

Izračunaj (obračun u svim otvorenim radnim sveskama)

SheetBeforeDubleClick (dvostruki klik)

MemoryUsed (informacije o zauzetoj RAM memoriji)

IpputBox (unos podataka)

SheetBeforeRightClick (desni klik)

CellDragAndDrop (povucite i ispustite formule u ćelijama)

Msgbox (izlazne poruke)

ActiveCell, ActiveSheet (aktivna ćelija, list)

Ćelije (opseg ćelija)

DisplayFormulaBar (prikaži traku formule)

DisplayScrollBar (prikaz traka za pomicanje)

DisplayStatusBar (prikaz statusne trake)

Svojstva metode aplikacije omogućavaju vam da programski postavite vrijednosti mnogih opcija u prozoru Alati / Opcije. Na primjer, možete koristiti sljedeće procedure da promijenite zadani prikaz prozora programa Excel, promijenite naslov i onemogućite akciju prevlačenja i ispuštanja formula.

Ove procedure se snimaju u modulu "Ova knjiga" i izvršavaju se kada se radna sveska otvara i zatvara, odnosno kada se izvršavaju događaji Open i BeforeClose:

Privatna pod radna knjiga_open ()

„Naslov radne sveske

Application.Caption = "Kisa i Osya su bile ovdje"

"Boja pozadine raspona A1: D1 -crvena

"Granice dometa A1: D1 - isprekidana linija

"prevlačenje CellDragAndDrops je otkazano

Application.CellDragAndDrop = Netačno

'Traka formule je uklonjena

Application.DisplayFormulaBar = False

'Trake za pomicanje su uklonjene

Application.DisplayScrollBars = False

“R1C1 stil veze je postavljen

Application.ReferenceStyle = xlR1C1

"Private Sub Workbook_BeforeClose (Otkaži kao Boolean)

"Prevlačenje CellDragAndDrops je vraćeno

Application.CellDragAndDrop = Tačno

'Traka formule je vraćena

Application.DisplayFormulaBar = Tačno

'Trake za pomicanje su vraćene

Application.DisplayScrollBars = Tačno

'A1 stil veze je vraćen

Application.ReferenceStyle = xlA1

Malo ko zna da se prva verzija popularnog Microsoft Excel proizvoda pojavila 1985. godine. Od tada je prošao kroz nekoliko modifikacija i tražen je među milionima korisnika širom svijeta. U isto vrijeme, mnogi ljudi rade sa samo malim dijelom mogućnosti ovog procesora tablica i čak nemaju pojma kako bi im život mogao olakšati programiranje u Excelu.

Šta je VBA

Programiranje u Excel-u se izvodi pomoću programskog jezika Visual Basic for Application, koji je originalno ugrađen u najpoznatiji procesor tablica iz Microsofta.

Specijalisti pripisuju njegovim prednostima komparativnu lakoću razvoja. Kao što praksa pokazuje, čak i korisnici koji nemaju profesionalne vještine programiranja mogu savladati osnove VBA. Jedna od karakteristika VBA je izvršavanje skripte usred kancelarijskih aplikacija.

  • ponovo idite na red "Makroi";
  • izaberite "Makro 1" na listi;
  • pritisnite "Run" (ista radnja se pokreće pokretanjem kombinacije tipki "Ctrl + hh").

Kao rezultat toga, odvija se radnja koja je izvedena u procesu snimanja makroa.

Ima smisla vidjeti kako izgleda kod. Da biste to učinili, vratite se na red "Makroi" i kliknite "Promijeni" ili "Enter". Kao rezultat toga, završavaju u VBA okruženju. Zapravo, sam makro kod se nalazi između linija Sub Macro1 () i End Sub.

Ako je kopiranje izvršeno, na primjer, iz ćelije A1 u ćeliju C1, tada će jedan od redova koda izgledati kao Raspon (“C1”). U prevodu to izgleda kao "Range (" C1 "). Select, drugim rečima, prenosi se u VBA Excel, u ćeliju C1.

Aktivni dio koda dovršava naredba ActiveSheet.Paste. To znači upisivanje sadržaja odabrane ćelije (u ovom slučaju A1) u označenu ćeliju C1.

Primjer 2

VBA petlje vam pomažu da kreirate različite makroe u Excelu.

VBA petlje vam pomažu da kreirate različite makroe. Pretpostavimo da imamo funkciju y = x + x2 + 3x3 - cos (x). Potrebno je kreirati makro da biste dobili njegov graf. Ovo se može uraditi samo pomoću VBA petlji.

Početna i konačna vrijednost argumenta funkcije uzimaju se kao x1 = 0 i x2 = 10. Osim toga, potrebno je unijeti konstantu - vrijednost za korak promjene argumenta i početnu vrijednost za brojač.

Svi primjeri VBA Excel makroa kreirani su koristeći istu proceduru kao što je gore prikazano. U ovom konkretnom slučaju, kod izgleda ovako:

Uradi Dok x1< x2 (цикл будeт выполняться пока вeрно выражeниe x1 < x2)

y = x1 + x1 ^ 2 + 3 * x1 ^ 3 - Cos (x1)

Ćelije (i, 1) .Vrijednost = x1 (vrijednost x1 se upisuje u ćeliju sa koordinatama (i, 1))

Ćelije (i, 2) .Vrijednost = y (vrijednost y se upisuje u ćeliju sa koordinatama (i, 2))

i = i + 1 (brojac je aktivan);

x1 = x1 + shag (argument se mijenja veličinom koraka);

Kao rezultat pokretanja ovog makroa u Excelu, dobijamo dva stupca, od kojih prvi sadrži vrijednosti za x, a drugi za y.

Zatim se graf iscrtava koristeći ih na standardni način za Excel.

Primjer 3

Za implementaciju petlji u VBA Excel 2010, kao iu drugim verzijama, uz već citiranu Do While konstrukciju, koristi se For.

Razmislite o programu koji kreira kolonu. U svakoj od njegovih ćelija biće upisani kvadrati broja odgovarajućeg reda. Korištenje konstrukcije For će vam omogućiti da je napišete vrlo kratko, bez korištenja brojača.

Prvo morate kreirati makro kao što je gore opisano. Zatim zapisujemo sam kod. Smatramo da nas zanimaju vrijednosti za 10 ćelija. Kod izgleda ovako.

Za i = 1 do 10 Dalje

Komanda je prevedena na "ljudski" jezik kao "Ponovi od 1 do 10 u koracima od jedan".

Ako je zadatak dobiti stupac s kvadratima, na primjer, sve neparne brojeve iz raspona od 1 do 11, tada pišemo:

Za i = 1 do 10 korak 1 Sljedeći.

Ovdje je korak korak. U ovom slučaju, jednako je dva. Po defaultu, odsustvo ove riječi u petlji znači da je korak jedan.

Dobijeni rezultati se moraju pohraniti u ćelije sa brojem (i, 1). Zatim, na svakom početku ciklusa sa povećanjem i za veličinu koraka, broj reda će se automatski povećati. Tako će kod biti optimizovan.

Generalno, kod će izgledati ovako:

Za i = 1 do 10 korak 1 (možete jednostavno napisati Za i = 1 do 10)

Ćelije (i, 1) .Vrijednost = i ^ 2 (tj. vrijednost kvadrata i je upisana u ćeliju (i, 1))

Dalje (u nekom smislu igra ulogu brojača i znači još jedan početak ciklusa)

Ako je sve urađeno ispravno, uključujući snimanje i pokretanje makronaredbe (pogledajte gornje upute), tada će se svaki put kada se pozove dobiti stupac određene veličine (u ovom slučaju koji se sastoji od 10 ćelija).

Primjer 4

U svakodnevnom životu prečesto postoji potreba da se donese ova ili ona odluka, u zavisnosti od nekog stanja. Ne možete bez njih u VBA Excel-u. Primjeri programa u kojima je odabran dalji tok algoritma, a nije unaprijed određen inicijalno, najčešće koriste If… Then (za složene slučajeve) If… Then… END If konstrukciju.

Razmotrimo konkretan slučaj. Pretpostavimo da trebate kreirati makro za "Excel" tako da je ćelija s koordinatama (1,1) napisana:

1, ako je argument pozitivan;

0 ako je argument nula;

1 ako je argument negativan.

Kreiranje takvog makroa za "Excel" počinje na standardni način, korištenjem "vrućih" tipki Alt i F11. Zatim se piše sljedeći kod:

x = Ćelije (1, 1) .Vrijednost (ova komanda dodjeljuje x vrijednost sadržaja ćelije sa koordinatama (1, 1))

Ako je x> 0 Tada su ćelije (1, 1) .Vrijednost = 1

Ako je x = 0 Tada su ćelije (1, 1) .Vrijednost = 0

Ako je x<0 Then Cells(1, 1).Value = -1

Ostaje pokrenuti makro i dobiti potrebnu vrijednost za argument u "Excelu".

VBA funkcije

Kao što ste mogli primijetiti, programiranje u Microsoftovom najpoznatijem procesoru proračunskih tablica i nije tako teško. Pogotovo ako naučite kako koristiti VBA funkcije. Sve u ovom programskom jeziku, kreiranom posebno za pisanje aplikacija u Excelu i Wordu, oko 160 funkcija. Mogu se podijeliti u nekoliko velikih grupa. To:

  • Matematičke funkcije. Primjenjujući ih na argument, dobijaju vrijednost kosinusa, prirodnog logaritma, integralnog dijela itd.
  • Finansijske funkcije. Zahvaljujući njihovom prisustvu i korišćenju programiranja u Excel-u, možete dobiti efikasne alate za računovodstvo i finansijska poravnanja.
  • Funkcije obrade niza. To uključuje Array, IsArray; LBound; UBound.
  • VBA Excel funkcije za string. Ovo je prilično velika grupa. Uključuje, na primjer, funkcije Space za kreiranje stringa s cijelim brojem razmaka ili Asc za pretvaranje znakova u ANSI kod. Svi oni imaju široku upotrebu i omogućavaju vam rad sa stringovima u Excelu, kreirajući aplikacije koje uvelike olakšavaju rad sa ovim tabelama.
  • Funkcije konverzije tipa podataka. Na primjer, CVar vraća vrijednost argumenta Expression pretvarajući ga u tip podataka Variant.
  • Funkcije za rad sa datumima. Oni značajno proširuju standardne mogućnosti Excel-a. Dakle, WeekdayName funkcija vraća ime (puno ili djelomično) dana u tjednu po njegovom broju. Tajmer je još korisniji. Daje broj sekundi koje su protekle od ponoći do određenog trenutka u danu.
  • Funkcije za pretvaranje numeričkog argumenta u različite sisteme brojeva. Na primjer, oktobar daje oktalne brojeve.
  • Funkcije formatiranja. Najvažniji od njih je Format. Vraća Variant s izrazom formatiranim prema uputama datim u opisu formata.
  • itd.

Proučavanje svojstava ovih funkcija i njihove primjene značajno će proširiti opseg primjene "Excela".

Primjer 5

Pokušajmo prijeći na rješavanje složenijih problema. Na primjer:

Dat je papirni dokument izvještaja o stvarnom nivou podrške preduzeća. Obavezno:

  • da razvije svoj šablonski deo pomoću Excel procesora tablica;
  • kreirajte VBA program koji će tražiti početne podatke za njegovo popunjavanje, izvršiti potrebne proračune i popuniti ih u odgovarajuće ćelije šablona.

Razmotrimo jedno od rješenja.

Kreiranje šablona

Sve radnje se izvode na standardnom listu u Excel-u. Slobodne ćelije su rezervisane za unos podataka po mjesecu, godini, nazivu kompanije potrošača, količini proizvoda, njihovom nivou i prometu. Budući da broj kompanija (društva) za koje se sastavlja izvještaj nije fiksan, ćelije za unos vrijednosti prema rezultatima i puno ime specijaliste nisu unaprijed rezervirane. Radnom listu se dodeljuje novo ime. Na primjer, "Օ izvještaji".

Varijabilna

Za pisanje programa za automatsko popunjavanje šablona potrebno je odabrati oznaku. Oni će se koristiti za varijable:

  • NN- broj trenutnog reda tabele;
  • TP i TF - planirani i stvarni promet;
  • SF i SP - stvarni i planirani iznos troškova;
  • IP i IF - planirani i stvarni nivo podrške.

Označimo istim slovima, ali sa "prefiksom" Itog, akumulaciju ukupnog iznosa za ovu kolonu. Na primjer, ItogTP - odnosi se na kolonu tabele pod nazivom „planirani promet“.

Rješavanje problema korištenjem VBA programiranja

Koristeći uvedene oznake, dobijamo formule za odstupanja. Ako trebate izvršiti obračun u % imena (F - P) / P * 100, iu zbiru - (F - P).

Rezultate ovih proračuna najbolje je odmah unijeti u odgovarajuće ćelije u Excel tabeli.

Za činjenične i prognozirane zbrojeve dobijaju se pomoću formula ItogP = ItogP + P i ItogF = ItogF + F.

Za odstupanja koristite = (ItogF - ItogP) / ItogP * 100, ako se obračun vrši u procentima, a u slučaju ukupne vrijednosti - (ItogF - ItogP).

Rezultati se ponovo odmah upisuju u odgovarajuće ćelije, tako da nema potrebe da ih dodjeljujete varijablama.

Prije pokretanja kreiranog programa potrebno je da sačuvate radnu svesku, na primjer, pod imenom "Report1.xls".

Dugme "Kreiraj tabelu izvještaja" mora se pritisnuti samo 1 put nakon unosa informacija zaglavlja. Treba znati i druga pravila. Konkretno, dugme "Dodaj red" mora se pritisnuti svaki put nakon unosa vrednosti za svaku vrstu aktivnosti u tabelu. Nakon unosa svih podataka potrebno je pritisnuti dugme "Završi", a zatim se prebaciti na prozor "Excel".

Sada znate kako riješiti Excel zadatke pomoću makronaredbi. Mogućnost korištenja vba excel-a (pogledajte primjere programa iznad) može biti potrebna i za rad u okruženju trenutno najpopularnijeg uređivača teksta "Word". Konkretno, moguće je pisanjem, kao što je prikazano na samom početku članka, ili pisanjem koda za kreiranje dugmadi menija, zahvaljujući kojima se mnoge operacije nad tekstom mogu izvršiti pritiskom na softverske tipke ili kroz "Pregled" karticu i ikonu "Makroi".

Sljedeći jednostavni primjeri Excel makroa ilustriraju neke od funkcija i tehnika opisanih u Excel VBA vodiču.

Excel makro: primjer 1

U početku ovaj postupak Sub dat je kao primjer korištenja komentara u VBA kodu. Međutim, ovdje također možete vidjeti kako se deklariraju varijable, kako funkcioniraju reference ćelija u Excelu, koristeći petlju Za, uslovni operator Ako i prikazivanje okvira za poruke.

"Sub procedura traži ćeliju koja sadrži navedeni niz" u rasponu ćelija A1: A100 aktivnog lista Sub Find_String (sFindText As String) Dim i As Integer "Cijeli broj tipa Integer, koji se koristi u For petlji Dim iRowNumber As Integer" Cijeli broj tipa Integer za pohranjivanje rezultata iRowNumber = 0 "Pregleda ćelije A1: A100 jednu za drugom dok se ne pronađe niz sFindText For i = 1 Do 100 If Cells (i, 1) .Value = sFindText Then" Ako se pronađe podudaranje sa datim nizom " sačuvajte trenutni broj reda i izađite iz petlje For iRowNumber = i Izađite za kraj If Next i "Obavještavamo korisnika u iskačućem prozoru da li je pronađen red za pretragu" Ako je specificirano red je pronađen, naznačite u kojoj ćeliji je pronađeno podudaranje Ako je iRowNumber = 0 Tada MsgBox "String" & sFindText & "not found" Inače MsgBox "String" & sFindText & "pronađeno u ćeliji A" & iRowNumber End If End Sub

Excel makro: primjer 2

Sljedeća procedura Sub- primjer korištenja petlje Uradi dok... Ovdje također možete vidjeti kako se deklariraju varijable, kako se radi s referencama na Excel ćelije i kako primijeniti uvjetni operator. Ako.

"Sub procedura daje Fibonaccijeve brojeve koji ne prelaze 1000 Sub Fibonacci () Dim i As Integer" Brojač za indikaciju položaja elementa u nizu Dim iFib As Integer "Skladišti trenutnu vrijednost niza Dim iFib_Next As Integer" Pohranjuje sljedeću vrijednost niza Dim iStep As Integer "Skladišti veličinu sljedećeg inkrementa "Inicijaliziraj varijable i i iFib_Next i = 1 iFib_Next = 0" Do While petlja će se izvoditi dok vrijednost "trenutnog Fibonaccijevog broja ne pređe 1000 Do While iFib_Next< 1000 If i = 1 Then "Особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "Сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "Выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "Вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Excel makro: primjer 3

Ova procedura Sub petlje kroz ćelije kolone A aktivni list sve dok ne naiđe na praznu ćeliju. Vrijednosti se zapisuju u niz. Ovaj jednostavan Excel makro demonstrira rad sa dinamičkim nizovima kao i korištenje petlje Uradi do... U ovom primjeru nećemo izvoditi nikakve radnje s nizom, iako se u stvarnoj praksi programiranja, nakon što se podaci upisuju u niz, takve akcije se obično izvode na njima.

"Sub procedura pohranjuje vrijednosti ćelija u koloni A aktivnog lista u nizu Sub GetCellValues ​​() Dim iRow As Integer" Pohranjuje broj trenutnog reda Dim dCellValues ​​() kao dvostruki "Niz za pohranjivanje vrijednosti ćelija iRow = 1 ReDim dCellValues ​​(1 do 10)" Loop Do Until petlja kroz ćelije kolone A aktivnog lista "i izdvaja njihove vrijednosti u niz dok se ne isprazni ćelija Do Until IsEmpty (Cells (iRow, 1))" Provjerite da li niz dCellValues ​​ima dovoljnu veličinu "Ako ne, povećajte niz veličine za 10 koristeći 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

Excel makro: primjer 4

U ovom primjeru, procedura Subčita vrijednosti iz kolone A radni list Sheet2 i izvodi aritmetičke operacije sa njima. Rezultati se zapisuju u ćelije kolone A na aktivnom radnom listu. Ovaj makro demonstrira upotrebu Excel objekata. Posebno se žalba podnosi postupkom Sub prema objektu Kolone, i pokazuje kako se ovom objektu pristupa preko objekta Radni list... Takođe je prikazano da kada se upućuje na ćeliju ili opseg ćelija na aktivnom listu, nije potrebno navesti ime ovog lista prilikom pisanja veze.

"Podprocedura koristi petlju za čitanje vrijednosti u stupcu A radnog lista Sheet2", izvodi aritmetičke operacije sa svakom vrijednošću i upisuje rezultat u "kolona A aktivnog radnog lista (Sheet1) Sub Transfer_ColA () Dim i As Integer Dim Col As Range Dim dVal As Double "Dodijelite kolonu A radnog lista Col varijablu Sheet 2 Set Col = Sheets (" Sheet2 "). Kolone (" A ") i = 1" Koristeći petlju, pročitajte vrijednosti ćelija u Col dok "dok se ne naiđe na praznu ćeliju Do Until IsEmpty (Col.Cells (i)) "Izvodimo aritmetičke operacije na vrijednosti trenutne ćelije dVal = Col.Cells (i) .Value * 3 - 1" Sljedeće komanda upisuje rezultat u kolonu A aktivnog radnog lista "Navedite ime lista u linku nije potrebno jer je ovo aktivni list Ćelije (i, 1) = dVal i = i + 1 Loop End Sub

Excel makro: primjer 5

Ovaj makro prikazuje primjer VBA koda koji prati Excel događaj. Događaj na koji je makro obavezan javlja se svaki put kada se na radnom listu odabere ćelija ili raspon ćelija. U našem slučaju, prilikom odabira ćelije B1, na ekranu se prikazuje prozor sa porukom.

"Ovaj kod prikazuje prozor s porukom ako je ćelija B1 odabrana na trenutnom radnom listu" Privatni pod Radni list_IzborPromjena (ByVal Target As Range) "Provjerite je li odabrana ćelija B1 ako je Target.Count = 1 i Target.Row = 1 i Target. Kolona = 2 Zatim "Ako je odabrana ćelija B1, izvrši potrebnu radnju MsgBox" Izabrali ste ćeliju B1 "Završi ako završi pod

Excel makro: primjer 6

Ovaj postupak ilustruje upotrebu operatora On Error i Nastavi za obradu grešaka. Ovaj kod također pokazuje primjer otvaranja i čitanja podataka iz datoteke.

"Sub procedura postavlja argumente Val1 i Val2 na vrijednosti ćelija A1 i B1" iz radne knjige Data.xlsx koja se nalazi u mapi C: \ Documents and Settings Sub Set_Values ​​(Val1 As Double, Val2 As Double) Dim DataWorkbook As Workbook On Error Idi na ErrorHandling " Otvorite radnu knjigu sa podacima Set DataWorkbook = Workbooks.Open ("C: \ Documents and Settings \ Data") "Dodijelite Val1 i Val2 varijable sa vrijednostima iz navedene radne knjige Val1 = Sheets (" Sheet1 "). Ćelije (1, 1) Val2 = Sheets ("Sheet1"). Ćelije (1, 2) DataWorkbook.Close Exit Sub ErrorHandling: "Ako datoteka nije pronađena, od korisnika će biti zatraženo da stavi željeni fajl" u željenoj fascikli, a zatim nastavite sa izvršavanjem MsgBox makroa "Datoteka Data.xlsx nije pronađena! "& _" Molimo dodajte radnu svesku u fasciklu C: \ Dokumenti i postavke i kliknite na OK "Nastavi kraj Sub

Top srodni članci