Varijabilne vrste Visual Basic. Visual Basic programski jezik

Zbog Visual basic može odrediti varijabilni tip od nje značenje(cm. Varijanta), tada tip varijable možda neće biti deklarisan (nije naveden). Kako god, deklaracija varijable je pravilo dobre programske prakse, a takođe vam omogućava da izbegnete neke greške u programu, kao što su nejednako pisanje imena varijable na različitim mestima u programu, nepoštovanje tipova podataka u proračunima.

Varijabla je deklarirana na početku kodnog prozora ili na početku postupka koristeći operatera Dim sa takvim unosom:

Dim VariableName kao VariableType

Riječi su specificirane kao tip varijable Byte, Long, String i drugi iz tabele tipova (vidi gore).

Na primjer:
Zatamnite kao bajt
Deklarisana varijabla A tip bajtova. U takvu varijablu možete staviti broj od 0 do 255. Kada pokušate dodijeliti varijablu više doći će do greške, a broj ima frakcijski dioće biti zaokruženo.

Dim b As String
Deklarisana varijabla b tip String. Ova varijabla će sadržavati tekst (iako tekst mogu biti brojevi, ali 2 plus 3 je 23).

Kada deklarišete više varijabli, možete ih nabrojati koristeći zarez:
Dim a kao bajt, b kao string

Nakon linije za deklaraciju, možete dodijeliti vrijednost varijabli.

Na primjer:
Zatamnite kao bajt
a=5

Visual Basic vam takođe omogućava da kreirate sopstvene tipove podataka. Ova karakteristika je važna kada imate posla sa grupom elemenata podataka koji su međusobno povezani, ali pripadaju različitim kategorijama podataka. Možete kreirati vlastite tipove (UDT - korisnički definirani tip) s naredbom Structure i deklarirati varijable povezane s ovim novim tipovima pomoću Dim naredbe. Ali imajte na umu da izraz Struktura ne može biti lociran u proceduri događaja - mora se nalaziti na vrhu koda obrasca zajedno sa drugim deklaracijama varijabli ili u kodu modula.

Na primjer, sljedeća deklaracija kreira prilagođeni tip podataka pod nazivom Employee koji može pohraniti imena, datum rođenja i datum zaposlenja datog zaposlenika:

Struktura Employee Dim Name As String Dim DateOfBirth As Date Dim HireDate As Date End Struktura

Kada je tip podataka kreiran, možete ga koristiti u kodu za obrazac ili u procedurama događaja modula. Sljedeće izjave koriste novi tip Employee. Prva izjava kreira varijablu pod nazivom ProductManager tipa Employee, a druga naredba postavlja komponentu Name ove varijable na ime "Eric Cody":

Dim ProductManager Kao Employee ProductManager.Name = "Eric Cody"

Zvuči kao postavljanje svojstava, zar ne? Visual Basic koristi istu notaciju za odnose između objekata i svojstava kao i za odnose između korisnički definiranih tipova podataka i varijabilnih komponenti.

Konstante: varijable koje se ne mijenjaju

Ako varijabla u vašem programu sadrži vrijednost koja se nikada ne mijenja (kao što je broj pi, koji je fiksni matematički entitet), možete razmisliti o spremanju te vrijednosti kao konstante, a ne kao varijable. Konstanta je smisleno ime koje zamjenjuje broj ili test string koji se nikada ne mijenja. Konstante su korisne jer povećavaju čitljivost programskog koda, smanjuju broj softverske greške i olakšati globalne promjene u kodu. Konstante se ponašaju kao varijable, ali ne možete promijeniti njihovu vrijednost dok je program pokrenut. Oni su deklarisani sa ključnom reči Const, kao što je prikazano u sledećem primeru:

Const Pi kao duplo = 3,14159265

Ova izjava kreira konstantu pod nazivom Pi koja se može koristiti u programskom kodu umjesto vrijednosti pi. Da biste konstantu učinili dostupnom svim objektima i procedurama događaja na vašem obrascu, postavite ovu izjavu na vrh koda vašeg obrasca, zajedno sa drugim deklaracijama varijabli i strukture koje su obuhvaćene svim procedurama događaja vašeg obrasca. Da bi konstanta bila dostupna iz svih obrazaca i programskih modula (ne samo iz Form1), kreirajte konstantu u kodu modula tako što ćete joj dodati prefiks sa ključna riječ javnosti. Na primjer:

Public Const Pi As Double = 3,14159265

U sljedećoj vježbi koristit ćemo konstante u proceduri događaja.

Korištenje konstante u proceduri događaja
  1. Iz menija Datoteka odaberite Otvori, a zatim kliknite Projekt. Pojavit će se okvir za dijalog Open Project.
  2. Otvorite projekat Constant Tester koji se nalazi u fascikli c:\vbnet03sbs\ch.5\konstantni tester.
  3. Ako obrazac projekta nije prikazan, kliknite na Form1.vb u Solution Exploreru, a zatim kliknite na dugme View Designer. Obrazac će se pojaviti u Windows Forms Designeru Konstantno testiranje. Constant Tester je "kostur" programa. Korisničko sučelje je završeno, ali morate unijeti programski kod.
  4. Dvaput kliknite na dugme Show Constant forme. Procedura događaja Button1_Click pojavljuje se u uređivaču koda.
  5. Unesite sljedeće izjave u proceduru događaja Button1_Click:

    Const Pi As Double = 3,14159265 Label1.Text = Pi

    Savjet. Odaberite lokaciju vaših deklaracija na osnovu načina na koji planirate koristiti konstante ili varijable. Obično programeri pokušavaju da obim deklaracija zadrže što manjim, ali u isto vrijeme, on bi trebao biti dostupan u svim dijelovima koda gdje je to potrebno. Na primjer, ako je konstanta potrebna samo u jednoj proceduri događaja, morate staviti deklaraciju te konstante unutar te procedure događaja. Međutim, ako ga morate učiniti dostupnim svim procedurama događaja vašeg obrasca, stavite njegovu deklaraciju na vrh koda vašeg obrasca.

    Da biste pokrenuli program, kliknite na dugme Start na standardnoj traci sa alatkama.

    Kliknite na dugme Show Constant. Pi konstanta će se pojaviti u polju oznake, kao što je prikazano ispod.

    Da biste zaustavili program, kliknite na dugme Izlaz.

    Konstante su korisne u programskom kodu, posebno kada se računa matematičke formule. Sljedeći odjeljak opisuje kako koristiti operatore i varijable za pisanje formula.

PROGRAMIRANJE LANGUAGE VISUAL BASIC. VRSTE PODATAKA. OPIS VARIJABLI, KONSTANTI, NIZOVA

tip podataka je način na koji se podaci pohranjuju i predstavljaju u kompjuterskom sistemu.

Sljedeće vrste podataka mogu se pohraniti i obraditi u jeziku Visual Basic.

Bajt je nenegativan cijeli broj. Prihvata vrijednosti od 0 do 255, zauzima 1 bajt.

Boolean - logička vrijednost. Uzima jednu od dvije vrijednosti True i False, zauzima 2 bajta.

Valuta - decimalni prošireni broj. Koristi se za izvođenje novčanih obračuna sa fiksnim brojem decimalnih mjesta, zauzima 8 bajtova. (Do 15 cifara lijevo od decimalnog zareza i do 4 znamenke desno od decimalnog zareza).

Datum - datum. Koristi se za pohranjivanje datuma/vremena, zauzima 8 bajtova.

Dvostruko - decimalni broj dvostruke preciznosti, zauzima 8 bajtova.

Integer - kratka cjelobrojna vrijednost, zauzima 2 bajta. Koristi se za predstavljanje cijelih brojeva u rasponu od -32768 do 32767.

Long - dug cijeli broj, zauzima 4 bajta. Koristi se za predstavljanje cijelih brojeva u rasponu od -2147483648 do 2147483647.

Jednostruki - decimalni broj normalne preciznosti, zauzima 4 bajta. Koristi se za predstavljanje negativnih brojeva u rasponu od -3,402823E 38 do -1,401298E-45 i za predstavljanje pozitivnih brojeva u rasponu od 1,401298E-45 do 3,402823E 38.

String - niz varijabilne dužine. Zauzeta memorija linearno ovisi o broju znakova u nizu.

String * length - niz konstantne dužine.

Varijanta - proizvoljna vrijednost. Koristi se za pohrana podataka bilo koje vrste. Zauzima 16 bajtova plus jedan bajt po karakteru ako je vrijednost niz.

Objekat - objekat. Koristi se samo za pohranjivanje referenci na objekte, zauzima 4 bajta.

Varijabilna je imenovano područje memorije dizajnirano za pohranjivanje podataka koji se mijenjaju tokom izvršavanja programa. Za pristup sadržaju ove memorijske oblasti dovoljno je znati naziv varijable.

Ime varijable (identifikator) je niz znakova koji ovu varijablu razlikuje od drugih programskih objekata (identificira varijablu u programu).

Prilikom imenovanja varijabli, moraju se poštovati sljedeća pravila:

Prvi znak imena mora biti slovo. Preostali znakovi su slova i brojevi (velika i mala slova se razlikuju). Možete koristiti znak "_";

  • znak "." se ne može koristiti u nazivu;
  • broj znakova u imenu ne bi trebao biti veći od 255;
  • ime varijable ne smije se podudarati sa rezerviranim (uslužnim) riječima jezika.

Visual Basic ima sljedeće karakteristike. deklaracije tipa varijabli.

  1. Varijabla se možda uopće ne deklarira. U ovom slučaju, zadani tip će biti Variant. Međutim, to može dovesti do sporog, neefikasnog rada programa i rasipnog korištenja memorije.
  2. Varijabla se može deklarirati eksplicitno koristeći izraz definicije varijable:Dim VariableName [ As VariableType],
    na primjer: Dim d as Long.
    Da uvijek eksplicitno deklarirate varijable, koristite opciju Option Explicit u (Općenito) (Deklaracije) odjeljku postojećih obrazaca, modula ili klasa. Nakon postavljanja ove opcije, Visual Basic zahtijeva eksplicitnu deklaraciju varijabli, a ako se nedeklarirana varijabla koristi u kodu, generiraće poruku o grešci.
  3. Varijabla se može deklarirati implicitno:

    Sa operatorom deklaracije tipa:

DefType Početno slovo [- Završno slovo];

Umjesto OrgType, naznačena je jedna od ključnih riječi koje označavaju tip:

Deflnt (za tip Integer);
- DefLng (za tip Long);
- DefSng (za pojedinačni tip);
- DefStr (za tip String) i tako dalje;

Tip varijable se ponekad može zaključiti iz sufiksa pridruženog imenu varijable. Samo šest tipova varijabli može imati sufikse:

- % - Cjelobrojni tip;
- & - Dugi tip;
- ! - Jednostruki tip;
- # - Dvostruki tip;
- $ - Vrsta stringa;
- @ - Vrsta valute.

Ako se varijabla čiji je tip implicitno označen sufiksom pojavljuje više puta u programu, tada se sufiks može specificirati samo jednom, prvi put kada se varijabla koristi u programu.

Konstante- količine čije se vrijednosti ne mogu mijenjati. Kao i varijable, konstante su deklarirane na početku teksta programskog koda od strane operatora:

Const ConstantName = Vrijednost, na primjer: Const Pi = 3,14159

Samo konstantne vrijednosti i njihove kombinacije, uključujući aritmetičke i/ili logičke operatore, mogu se koristiti kao vrijednost.

niz je skup elemenata određenog tipa, od kojih svaki ima svoj serijski broj, koji se naziva indeks.

Definiciju niza izvodi operator:

Dim Ime varijable([LowerLimitTo]
Gornja granica) .

Na primjer: Dim b (a do 15) - deklaracija niza b, koji se sastoji od 15 elemenata.

Visual Basic, podrazumevano, indeksira elemente niza počevši od nule, tj. indeks 0 označava prvi element niza, indeks 1 drugi, itd. Naredba Option Base 1 vam omogućava da specificirate indeksiranje niza od 1. Ovaj izraz mora biti u (Općenito) (Deklaracije) sekciji.

U ovom dijelu ćete naučiti o vrstama podataka kojima VBA može manipulirati, kako VBA pohranjuje privremene podatke, kako kombinirati varijable i konstante za kreiranje novih vrijednosti i naučiti kako uključiti ugrađene funkcije u izraze.

Laboratorijski rad broj 3. Pregled VB tipova podataka. varijable i

konstante. Kompatibilnost tipa podataka. operator dodjeljivanja. Aritmetički i logički operatori. Ugrađene funkcije

Svrha lekcije: Znati tipove podataka. Znati kako kreirati varijable. Znati kako dodijeliti tipove podataka varijablama. Biti u stanju kreirati imenovane konstante. Znajte obim

varijable i konstante. Znati konverziju tipa. Znati kako koristiti operator dodjeljivanja. Poznavati aritmetičke i logičke operacije. Znati kako koristiti konkatenaciju nizova. Znati kako koristiti ugrađene VBA funkcije. Materijali za lekciju: MS Excel 2003.

Pregled tipova podatakaVisualBasic (VB)

Prije nego što naučite o varijablama, trebali biste razumjeti kako VBA pohranjuje različite vrste informacija. VBA, kao i većina drugih programskih sistema, razdvaja obrađene podatke na brojeve, datume, tekst i druge tipove. Tip podataka(podaci tip) je termin koji se odnosi na određene vrste podataka koje VBA pohranjuje i kojima može manipulirati. U tabeli. 9 generalizovanih tipova VBA podaci, pokazuje koliko memorije svaki tip zauzima, ukratko opisuje tipove podataka i daje raspon vrijednosti koje tip može pohraniti.

Tabela 9– VBA tipovi podataka

Unesite ime

Veličina inbajtova

Cjelobrojni pozitivni brojevi od 0 do 255

Cijeli brojevi od -32768 do 32767

Dugi cijeli brojevi od -2147483648 do 2147483647

Realni brojevi obične preciznosti sa

floating point.

Negativni brojevi:

od -3,402823E38 do -1,401298E-45.

pozitivni brojevi:

od 1.401298E-45 do 3.402823E38

Realni brojevi dvostruke preciznosti sa

floating point.

Negativni brojevi:

od -1,79769313486232E308 do

4.94065645841247E-324.

pozitivni brojevi:

od 4.94065645841247E-324 do

1.79769313486232E308

Brojevi sa najviše 15 cifara ispred decimalnog zareza i 4 cifre iza nje (jedinice valute). -922337203685477.5808 do 922337203685477.5807

Za pohranjivanje logičkih vrijednosti; može sadržavati samo True (True) ili False (False) vrijednosti

Unesite ime

Veličina inbajtova

Opis i raspon vrijednosti

Za pohranjivanje kombinacije podataka o datumu i vremenu. Raspon datuma može biti od 1. januara 100. do 31. decembra 9999. godine. Vremenski raspon od 00:00:00 do 23:59:59

String (niz promjenjive dužine)

10 bajtova + Koristi se za pohranjivanje teksta. Može biti dužina niza od 0 znakova do (približno) 2 milijarde znakova

String (niz

fiksna dužina)

Dužina Koristi se za pohranjivanje teksta. Mogu li nizovi (jedan sadrži od jednog do (približno) 65400 bajtova po karakteru)

16 bajtova + 1 bajt/znak

Tip Variant može pohraniti bilo koju drugu vrstu podataka. Opseg varijantnih podataka ovisi o stvarnim podacima koji se pohranjuju. U slučaju teksta, opseg odgovara vrsti stringa; u slučaju brojeva, opseg je isti kao kod tipa Double

Koristi se za pristup bilo kojem objektu koji prepoznaje VBA. Pohranjuje adresu objekta u memoriju

U tabeli. 9 naišli ste na reprezentaciju podataka tzv eksponencijalna notacija(naučnim notacija), koji se koristi za prikazivanje na vanjskim uređajima (monitor, pisač, itd.) vrlo velikih i vrlo malih brojeva u kompaktnom formatu. U eksponencijalnom zapisu vrijednosti se pišu bez vodećih ili završnih nula, a nalazi se samo jedna znamenka lijevo od decimalnog zareza. Broj se množi sa 10 do određenog stepena kako bi se pokazalo gdje se decimala zapravo nalazi.

VBA ima šest različitih tipova numeričkih podataka: bajtova, Integer, Dugo, Single, Dvostruko I Valuta. Numerički tipovi podataka se koriste za pohranjivanje (i manipuliranje) brojevima u različitim formatima, ovisno o specifičnom tipu.

Obično VBA program (kao i svaki drugi program) "donosi" odluke provjeravajući da li su različiti uvjeti tačni. Da bi se pojednostavili uslovi testiranja i osigurali da se rezultati takvog testiranja sačuvaju, VBA obezbeđuje Boolean tip podataka. Boolean vrijednosti Istinito I False pozvao boolean(Boolean) vrijednosti. Njihovo ime je povezano sa imenom matematičara koji je razvio sistem matematičke logike. VBA boolean tip podataka se također naziva tipom podataka. Boolean. VBA boolean tip zahtijeva dva bajta memorije i može imati jednu od dvije vrijednosti: Istinito ili False. Ako prikažete tip Boolean na ekranu, VBA će ga automatski konvertovati u niz koji sadrži bilo koju reč Istinito, ili False. Booleove vrijednosti se dobijaju kao

rezultat operacije poređenja.

VBA koristi tip Datum za pohranjivanje datuma i vremena. Nema potrebe da brinete o tome kako VBA pohranjuje podatke o tipu. Datum, - možete jednostavno prikazati, sačuvati ili manipulirati datumima; VBA automatski upravlja svim detaljima pretvaranja serijskog broja u godinu, mjesec, dan i vrijeme. VBA tip Datum je tip uzastopni datumi(serial datumi). Uzastopni datumi pohranjuju datum kao broj dana od datog datuma početka. Osnovni datum za VBA tip Datum je 30. decembra 1899. godine. VBA koristi negativne brojeve za predstavljanje datuma prije 30.12.1899. i pozitivne brojeve za datume nakon 30.12.1899. Broj 0 predstavlja sam datum 30.12.1899. U ovoj shemi, 1. januar 1900. je napisan kao 2 (1.1.1990. je 2 dana nakon 30.12.1899.), ali -2 je datum 28.12.1899. (dva dana prije 30.12.1899.) . Da biste to potvrdili, napišite jednostavnu proceduru.

Vježba 1. Napišite proceduru koja prikazuje poruku o datumu.

Za ovo:

Napišite proceduru (listing 3):

Listing 3 Proceduratest datuma

1 Sub DateTest()

2 Dim d As Date 3

Kao rezultat ove procedure, osnovni datum će biti prikazan na ekranu (slika 15).

Rice. 15 U sekvencijalnoj vrijednosti datuma, cijeli broj (cifre lijevo od decimalnog zareza) je ukupan broj dana od osnovnog datuma. VBA serijski datum može imati cifre desno od decimalnog zareza; ovi brojevi označavaju doba dana kao dio dana. Jedan sat je 1/24 dana (približno 0,0416. Slično, jedan minut je 1/1440 dana, a drugi je 1/86400 dana. Možete oduzeti jedan datum od drugog, dodati datumu ili oduzmite brojeve da biste ga promijenili.vrijednosti.Na primjer, ako trebate odrediti broj dana između dva datuma, samo oduzmite raniji datum od kasnijeg.Zato što su to vrijednosti tipa Datum, VBA "zna" da je svrha izračunavanja da dobije razliku u danima između ova dva datuma. Slično tome, ako trebate odrediti datum 60 dana nakon određenog datuma, jednostavno dodajte 60 tom datumu.

VBA ima nekoliko ugrađenih procedura (opisanih u ovom dijelu) za odvojeno izdvajanje godine, mjeseca, dana, sata, minuta i sekunde iz varijabla tipa Datum.

Pozivaju se svi tekstualni podaci pohranjeni u VBA programu linije(žice). Nizovi u VBA se pohranjuju pomoću tipa podataka String. Stringovi su tako nazvani jer se tekstualni podaci obično tretiraju kao nizovi znakova. Linija može sadržavati tekstualni znakovi bilo koje vrste: slova abecede, brojevi, znakovi interpunkcije ili različiti simboli. Postoje dvije kategorije stringova: nizovi promjenjive dužine koji rastu ili se smanjuju u veličini i nizovi fiksne dužine koji uvijek ostaju iste veličine. Svi stringovi u VBA su stringovi promenljive dužine, osim ako ne navedete string fiksne dužine. Većina podataka za unos korisnika (in dijaloški okviri, ćelije radnog lista) je niz podataka. Takođe, pošto možete prikazati samo tekst na ekranu, svi ostali tipovi podataka moraju biti konvertovani u nizove podataka pre nego što ih možete prikazati. Mnoge ugrađene VBA procedure (npr msgbox) koriste niz podataka u svim ili nekim od svojih argumenata. VBA pruža nekoliko operatora za konkatenacija(konkatenirati), odnosno spajanje i upoređivanje nizova. VBA takođe ima nekoliko ugrađenih rutina koje pomažu u izdvajanju podnizova iz dužih nizova, pronalaženju znakova ili riječi u nizu, mijenjanju velikih i malih slova u nizu itd. Ovaj dio opisuje VBA string operatore i procedure za manipulaciju VBA stringovima.

Tip podataka Varijanta je poseban tip podataka koji može pohraniti bilo koji od tipova prikazanih u tabeli. 9, osim tipa Objekat. VBA koristi tip Varijanta za sve varijable, osim ako eksplicitno ne deklarirate tip varijable, kao što je opisano kasnije u ovom odjeljku. Unesite podatke Varijanta preuzimaju karakteristike specifične vrste koju trenutno pohranjuju. Na primjer, ako je tip podataka Varijanta sadrže podatke niza, Varijanta uzima karakteristike tipa String. Ako je tip podataka Varijanta sadrže brojeve, Varijanta poprima karakteristike nekog numeričkog tipa, obično − Dvostruko, iako vrste Varijanta takođe može imati karakteristike tipa Integer, Dugo, Single ili Valuta. Iako tipovi Varijanta su zgodne i štede dio posla prilikom pisanja procedura, zahtijevaju više memorije od bilo kojeg drugog tipa podataka, s izuzetkom velikih stringova. Osim toga, matematičke operacije i operacije poređenja nad podacima tipa Varijanta sporije su od sličnih operacija nad podacima bilo kojeg drugog tipa. Općenito, trebali biste izbjegavati korištenje varijabli Varijanta: ako se oslanjate na varijable poput Varijanta, možda ćete razviti naviku neurednog programiranja i biti će vam teško pronaći i popraviti greške u svojim programima.

Varijable

Varijabilna(varijable) je ime koje programer daje oblasti

kompjuterska memorija koja se koristi za pohranjivanje neke vrste podataka. VBA varijable mogu pohraniti bilo koji od tipova podataka navedenih u tabeli 1. 9.

Identifikator(identifikator) je ime koje dajete elementima u procedurama i modulima koje kreirate, kao što su varijable. Termin identifikator se zasniva na činjenici da imena koja kreirate identifikuju specifične lokacije u memoriji (u slučaju imena varijable), grupe instrukcija (u slučaju imena makroa ili procedure) ili druge elemente programa.

Imena varijabli nije "osjetljivo na velika i mala slova"(ne slučaj- osjetljivo), odnosno pisanje imena varijable velikim slovima ili velika slova nije bitno.

Najlakši način da kreirate varijablu je da je koristite u VBA naredbi. VBA kreira promenljivu i rezerviše memoriju za memorijsku lokaciju varijable kada se ta varijabla prvi put pojavi u iskazu (obično izraz koji pohranjuje vrijednost podataka u varijablu).

Poziva se pohranjivanje vrijednosti podataka u varijablu dodjela varijabli(dodjeljivanje the varijable ili izradu an zadatak). Dodjela se vrši pomoću operatora dodjeljivanja, predstavljenog znakom jednakosti (=). Sljedeći red je primjer dodjeljivanja vrijednosti varijabli:

Ovaj operator pohranjuje numeričku vrijednost 25 na memorijsku lokaciju specificiranu imenom varijable MyVar.

Poziva se kreiranje varijable pomoću nje u izjavi implicitna deklaracija varijable(implicitno varijable deklaracija). Korišćenjem varijable u izjavi, vi implicitno kažete (deklarišete) VBA da želite da kreirate tu varijablu. Sve varijable koje VBA kreira implicitnom deklaracijom varijable imaju tip podataka Varijanta. Implicitna deklaracija varijable poznata je i kao deklaracija varijable "u letu"(on- the- letjeti).

Implicitna deklaracija varijabli je zgodna, ali ima potencijalne probleme. Na primjer, kada imate varijablu imenovanu MyVar a kasnije pogriješite u nazivu kucanjem MVar. U zavisnosti od toga gde se pogrešno ime varijable pojavljuje u vašem kodu, VBA može da izazove grešku tokom izvođenja ili jednostavno kreira novu varijablu. Ako VBA kreira novu varijablu, možda ćete imati probleme koje je vrlo teško otkriti.

Iz ovih i drugih razloga, VBA vam daje mogućnost da radite eksplicitno(eksplicitno) deklaracija varijabli.

Da biste eksplicitno deklarirali varijable, koristite VBA naredbu Dim sa sljedećom sintaksom:

Dim ime1 [, ime2 ]

imeN je bilo koji važeći identifikator varijable. Sve varijable koje kreirate pomoću ovog obrasca za ključnu riječ Dim, su varijable

tip Varijanta.

Varijabla se može deklarirati samo jednom u jednoj proceduri ili modulu. Budući da naredba Dim dolazi ispred bilo koje izjave koja zapravo koristi varijablu, možete je postaviti bilo gdje u proceduri. U praksi programiranja, dobro je pravilo prikupiti sve eksplicitne deklaracije varijabli na jednom mjestu na početku procedure.

Zadatak 2. Izmijenite proceduru hello excel iz prethodnog dijela, koristeći eksplicitnu definiciju varijable.

Za ovo:

promenite proceduru hello excel (listing 4):

Listing 4 Procedurahello excel

1 Sub HelloExcel()

2 Dim HelloMsg " varijabla za MsgBox 3

Operater Dim (na liniji 2) Listinga 4 deklarira varijablu HelloMsg i rezerviše memorijsku oblast za to (u ovom potprogramu HelloMsg je varijabla tipa Varijanta). Red 2 uključuje komentar na kraju koji ukazuje na svrhu ove varijable. Red 4 je dodjela varijabli HelloMsg linije "Zdravo,excel!" . Zatim (u redu 5) varijabla HelloMsg se koristi kao jedan od argumenata procedure MsgBox. Funkcija MsgBox prikazuje isti okvir sa porukom kao i prije. Iako MsgBox sada prima svoj prvi argument od varijable, ova varijabla sadrži iste informacije o nizu koje su prethodno (u listinama prethodnog dijela) upisane direktno u naredbu MsgBox.

Sve varijable u VBA, bez obzira da li su deklarirane implicitno ili eksplicitno, su tipa Variant osim ako ne navedete tip varijable u izjavi koja je deklarira. Za najavu otkucano varijabla i njen tip pomoću operatora Dim dodajte ključnu riječ As nakon varijable, a zatim unesite naziv tipa podataka za tu varijablu. Ovdje je opća sintaksa za korištenje operatora Dim kada deklarirate upisane varijable:

Dim varnamel [, varname2 ]

varnameN predstavlja bilo koje važeće ime VBA varijable, a tipN - bilo koji naziv VBA tipa podataka.

Jednom kada je deklarirana tipizirana varijabla, bez obzira da li je varijabla deklarirana eksplicitno ili implicitno, i kako je tip specificiran, ta varijabla zadržava isti tip sve dok postoji. Ne možete ponovo deklarirati varijablu ili redefinirati njen tip.

Uz implicitnu deklaraciju, također možete specificirati tip varijable dodavanjem

poseban znak tzv simbol definicije tipa(tip- definicija karakter) do kraja imena varijable. U tabeli. Tabela 10 navodi simbole definicije VBA tipa i tipove koje oni predstavljaju. Tabela 10– Simboli za definiciju tipa

Tip

Simbol definicije

Tip

Simbol definicije

IntegerDugo

ValutaDvostruko

Znakovi definicije tipa mogu se pojaviti samo na kraju naziva varijable. Iako biste trebali znati koji su simboli definicije tipa i kako se koriste, rijetko ih trebate koristiti - korištenje naredbe Dim sa ključnom riječi As je mnogo lakše i jasnije. Većina VBA programera ne koristi simbole za definiciju tipa.

Zadatak 3. Izmijenite proceduru hello excel iz zadatka 3, koristeći definiciju tipizirane varijable.

Za ovo:

promenite proceduru hello excel (listing 5):

Listing 5 Procedurahello excel

1 Sub HelloExcel()

2 Dim HelloMsg kao niz 3

    HelloMsg = "Zdravo Excel!"

    Title$ = "Moj prvi program"

    MsgBox HelloMsg, Title$

Ova verzija procedure hello excel radi na skoro isti način kao i prethodni. Red 1 sadrži deklaraciju procedure. Izjava 2. reda Dim eksplicitno deklarira varijablu HelloMsg. Od operatera Dim uključuje ključnu riječ As i ukucajte ime String, varijabla HelloMsg ima tip String. Red 4 dodeljuje tekst poruke varijabli niza HelloMsg. Red 5 implicitno deklarira varijablu Naslov$ i istovremeno promenljivoj dodeljuje naslovni tekst okvira za poruku. Jer ime varijable Naslov$ ima karakter definicije tipa za string na kraju, ova varijabla je također tipa String. Konačno, red 6 koristi izraz MsgBox za prikaz okvira za poruke; u ovoj izjavi i tekst poruke i naslovna traka prozora su varijable: HelloMsg I Naslov$, odnosno.

Nakon dodavanja karaktera definicije tipa varijabli, morate uključiti karakter definicije tipa svaki put kada koristite ime varijable.

Da li su deklarirane varijable tipa ili ne String koristeći operatera Dim ili dodavanjem znaka za definiciju tipa $, varijable stringa koje kreirate su nizovi promenljive dužine prema podrazumevanim postavkama.

Varijable stringova promjenljive dužine mijenjaju dužinu ovisno o dužini stringa koji je pohranjen u varijabli. Ponekad ćete možda morati da koristite liniju fiksna dužina(fiksno- dužina). Žice fiksne dužine uvijek imaju istu dužinu. Sljedeći red prikazuje opću sintaksu za kreiranje niza fiksne dužine:

Dim varname Kao niz * N

varname je bilo koje važeće ime varijable, a N je bilo koji broj od 1 do 65400 znakova

Opseg: varijabilna dostupnost

Termin obim(obim) se odnosi na opseg VBA procedure ili modula gde je dostupna data varijabla, procedura ili drugi identifikator. Ovaj dio opisuje dva osnovna nivoa opsega: proceduralni i modularni. Varijable, procedure i identifikatori koji su dostupni samo unutar procedure imaju opseg na nivou procedure, dok oni koji su dostupni svim procedurama u modulu imaju opseg na nivou modula.

Varijabla deklarirana u proceduri dostupna je samo toj proceduri. Na primjer, varijabla HelloMsg iz reda 2 Listinga 5 dostupan je samo u proceduri hello excel; nijedna druga procedura nema pristup ovoj varijabli.

Stoga kažemo da je varijabla HelloMsg Ima proceduralni obim(procedura- nivo obim). U stvari, varijabla HelloMsg postoji samo u trenutku kada VBA zapravo izvršava proceduru hello excel.

Zadatak 4. Kreirajte dvije procedure čiji su opseg varijable proceduralnog nivoa.

Za ovo:

Unesite dvije kompletne procedure (listing 6):

Listing 6 Procedurahello excel

1 Sub HelloExcel()

2 Dim HelloMsg kao niz 3

    HelloMsg = "Zdravo Excel!"

    MsgBox HelloMsg, "Moj prvi program"

8 Sub HelloDave()

9 Dim HelloMsg kao niz 10

    HelloMsg = "Zdravo Excel!"

    MsgBox HelloMsg, "Još jedan okvir za poruke"

Redovi 1-6 sadrže isti postupak hello excel iz Listinga 4, koji radi potpuno isto. Modulu je dodana procedura HelloDave, koji počinje na liniji 8 Listinga 6. Procedura HelloDave radi isto kao i procedura hello excel, samo prikazuje drugačiju tekstualnu poruku i naslov u svom dijaloškom okviru. U redovima 2 i 9, obje procedure koriste izraz Dim za deklarisanje lokalno imenovanih varijabli HelloMsg.

Ponekad je potrebno da nekoliko procedura ima pristup istoj varijabli. Obično je efikasnije izračunati vrijednost jednom, pohraniti je u varijablu, a zatim tu varijablu koristiti u više procedura nego izračunavati istu vrijednost iznova i iznova.

VBA vam omogućava da deklarirate varijable koje su dostupne za više procedura. Kada je varijabla dostupna svim procedurama u modulu, kaže se da varijabla ima opseg. modularni nivo(modul nivo). VBA ograničava opseg varijable na nivou modula na modul u kojem je varijabla deklarisana (VBA pruža načine da se još više proširi opseg varijable; ove metode su opisane kasnije).

Da bi varijabla bila dostupna svim procedurama u određenom modulu, stavite naredbu Dim za to na početku modula, prije bilo kakve deklaracije procedure.

Vježba 1

Kreirajte dvije procedure i jednu deklaraciju varijable na razini modula (premjestite na red 1 izjavu Dim sa promenljivom HelloMsg uklanjanje redova 2 i 9 iz liste 6).

Ime varijable mora biti jedinstveno unutar svog opsega. Međutim, moguće je uključiti varijable s istim imenom drugačije nivoi opsega. Kada varijable imaju isto ime, ali različite opsege, VBA koristi varijablu sa najviše lokalni(lokalni) opseg.

Zahtijeva eksplicitnu deklaraciju varijable

Iako je implicitna deklaracija varijabli (deklariranje varijabli jednostavnim njihovim korištenjem) zgodna, postoje neki problemi s tim. Kada su varijable implicitno deklarirane, postoji rizik od nenamjernog kreiranja nove varijable kada zaista trebate koristiti postojeću ili korištenja postojeće varijable kada korisnik namjerava kreirati novu. Obje ove situacije dovode do grešaka u kodu koje je vrlo teško ući u trag.

Da bi bilo lakše otkriti greške vezane za implicitnu deklaraciju varijabli u bilo kojem trenutku, VBA pruža naredbu OpcijaEksplicitno. Koristeći OpcijaEksplicitno VBA zahtijeva da sve varijable budu deklarirane (pomoću Dim) prije nego ih upotrebite u modulu.

Da biste postavili način u kojem VBA zahtijeva eksplicitnu deklaraciju za sve varijable u modulu, dodajte naredbu OpcijaEksplicitno u područje deklaracije modula, odnosno na početku modula, prije bilo koje deklaracije varijable ili procedure. Komanduje kao OpcijaEksplicitno, su pozvani direktive kompajlera(kompajler direktive).

Tim OpcijaEksplicitno utiče samo na modul u kojem se pojavljuje. Ako projekt koji sadrži ovaj modul sadrži i druge module, naredba ne utječe na njih OpcijaEksplicitno. Morate uključiti naredbu Option Explicit u svaki modul koji zahtijeva eksplicitne deklaracije varijable.

Jer inkluzija OpcijaEksplicitno za sve module je vrlo korisno, VB Editor pruža način da se ova naredba automatski uključi u svaki novi modul kada se kreira. Da bi VB Editor dodao komandu OpcijaEksplicitno u svakom novom modulu, slijedite ove korake:

y izaberite komandu Alati/ Opcije (Servis/Parametri); VB editor prikazuje okvir za dijalog Opcije;

i kliknite na karticu Urednik (Urednik) za prikaz opcija za uređivanje, ako je potrebno;

y potvrdite izbor u polju za potvrdu Zahtevaj varijabla Deklaracija (Eksplicitna deklaracija varijabli);

u izaberite uredu. VB editor zatvara okvir za dijalog Opcije.

Vježba 2

Postavite naredbu na automatsko omogućavanje Opcija Eksplicitno svakom novom modulu kada se kreira.

Konstante

Konstantno(konstantan) je vrijednost u VBA programu koja se ne mijenja. Primjeri procedura koje su već navedene iznad koriste konstante niza tipa "Zdravo,excel!" I "Moj prvi program". Ovakve konstante se nazivaju doslovne konstante(doslovno konstante) jer je literalna vrijednost upisana direktno u kod.

Takođe možete pisati literalne numeričke konstante i datume u VBA kodu; primjeri numeričkih literalnih konstanti uključuju brojeve 25 , 3.14 . Primjeri doslovnih datumskih konstanti uključuju datume #12/31/96# ili #28. oktobar 1997.#(Više o pisanju datumskih konstanti ćete naučiti kasnije u ovom dijelu).

VBA vam omogućava da kreirate imenovane konstante(imenovani konstante). Imenovana konstanta, kao i varijabla, ima dato ime; ovo ime predstavlja određenu nepromjenjivu vrijednost. Međutim, za razliku od varijable, vrijednost imenovane konstante se nikada ne mijenja. Sljedeći red pokazuje opću sintaksu za deklariranje imenovanih konstanti:

Konst ime = valuel [operater ime2… ] _

[, pathez =vrijednost3 [operater ime4 ] … ]

imeN predstavlja bilo koji važeći identifikator, vrijednostN – bilo koju vrijednost podataka: numerički, string ili datum, a operater je aritmetička operacija ili operacija poređenja između dva imena prethodno opisanih konstanti. Sledeći redovi prikaži nekoliko deklaracija imenovanih konstanti: Const Pi = 3.14, text = "Zdravo Excel!"

Konst Pi2 = 2*Pi

Opseg konstanti

Kao i kod varijabli, imenovane konstante možete deklarirati u procedurama ili u području deklaracije na početku modula. Konstanta deklarirana u proceduri ima opseg na razini procedure, dok konstanta deklarirana u opsegu deklaracije modula ima opseg na razini modula. Imenovane konstante slijede ista pravila opsega kao i varijable.

Pisanje literalnih konstanti

Kada pišete literalne string konstante u VBA kodu, slijedite ova pravila:

ʹ String konstante moraju biti zatvorene u dvostruke navodnike (");

b je prazna konstanta niza (zv null stringnull string ili prazan string) označava se sa dva dvostruka navodnika bez ičega između njih ("");

Konstanta niza b mora sve biti na istoj liniji.

Kada pišete literalne numeričke konstante u VBA kodu, slijedite ova pravila:

ʹ numeričke konstante moraju se sastojati samo od numeričkih znakova od 0 do 9;

ʹ numerička konstanta može početi sa znakom (-) i može sadržavati decimalni zarez;

b Možete koristiti eksponencijalnu notaciju za numeričke konstante.

VBA prepoznaje datumske konstante u bilo kojem od nekoliko različitih formata; morate postaviti sve datumske konstante između znakova funte (#). Sljedeći redovi prikazuju neke od formata datumskih konstanti koje VBA prepoznaje: #2-5-97 21:17:34# #5. februar 1997. 9:17:34 popodne# #Mag-31-97# #15. april 1997.#

Bez obzira na to u kojem je formatu literalna datumska konstanta upisana, VBA će preformatirati tu konstantu (kada se tačka umetanja ukloni iz reda nakon što je konstanta upisana) da odgovara jednom od sljedeća dva formata, ovisno o tome da li konstanta datuma sadrži informacije o vremenu: #2/5/1997 9:17:34 PM# #2/5/1997# Postoje samo dvije važeće Booleove konstante: Tačno i Netačno.

Postavljanje tipa konstante

Kada deklarirate imenovanu konstantu ili koristite literalnu konstantu, VBA "misli" da vrijednost predstavljena tom konstantom ima

tip podataka koji najviše odgovara izrazu koji je dodijeljen konstanti.

U VBA možete postaviti tip konstante. Opća sintaksa za deklariranje tipizirane konstante je sljedeća:

Konst ime As tip = vrijednost[, ime As tip = vrijednost]

ime je bilo koje važeće ime konstante, tip je naziv bilo kojeg od VBA tipova podataka, i vrijednost je vrijednost koju dodjeljujete konstanti.

Sljedeći red ilustruje ispravnu deklaraciju konstante sa određenim tipom:

Const Pi kao duplo = 3,14

Internikonstante

VBA nudi nekoliko interne konstante(intrinsic konstante), također se zove unapred definisane konstante(unaprijed određeno konstante). Interna konstanta je imenovana konstanta koju su definisali VBA programeri. Sve interne konstante koje definiše VBA počinju slovima vb da naznači da su definisani jezikom Visual Basic za aplikacije (ili Visual Basic). Na primjer, konstante vbOKOnly, vbOKCancel definiše VBA. Interne konstante Excel 2002 počinju slovima xl da bi bilo jasno da ih definiše Excel. Zahvaljujući internim konstantama, lakše je koristiti neke od ugrađenih VBA procedura, kao što je izjava MsgBox, za koji već znate, i operatera InputBox, o kojima se govori kasnije u ovom odeljku.

Prikažite okvire za poruke. Dobivanje podataka od korisnika

Primanje podataka od korisnika, njihovo pohranjivanje u varijablu i prikazivanje rezultata radnji koje se na njima obavljaju osnovni su elementi potrebni za pisanje interaktivnih procedura. Interaktivno(interaktivno) Procedura je procedura koja komunicira s korisnikom, odnosno, procedura stupa u interakciju s korisnikom tako što prikazuje poruke i prima ulaz.

Funkcija MsgBox prikaz okvira za poruke ima sljedeću sintaksu:

MsgBox(Prompt [, Dugmad ] [, Naslov ] [, HelpFile , Kontekst ])

argument Prompt MsgBox prikazuje ovaj niz u dijaloškom okviru; uvijek mora dati argument Prompt, pošto je ovo traženi argument(potrebno argument). Argument Dugmad (opcijski argument) je numerički izraz koji specificira dugmad i poruke za prikaz u dijaloškom okviru. Argument Naslov predstavlja bilo koju vrijednost niza (literal, konstanta ili varijabla). MsgBoxNaslov, VBA se prikazuje u naslovnoj traci dijaloga MsgBox riječ " Microsoftexcel" . Argument HelpFile - fajl pomoći Kontekst - odjeljak u datoteci pomoći. Tekst poruke se može staviti u zagrade, ali zagrade nisu obavezne kada je funkcija MsgBox

koristi se kao operater.

Poziva se korisnički unos ulazni podaci(unos). Da biste dobili unos od korisnika procedure, koristite funkciju InputBox. Funkcija(funkcija) je poseban tip VBA procedure koja vraća vrijednost. Funkcija InputBox prikazuje dijaloški okvir koji sadrži tekst koji traži od korisnika da unese neku vrijednost i tekstualni okvir za unos te vrijednosti. Prikazan je dijaloški okvir InputBox, sadrži i komandne tipke uredu I Otkaži.

Funkcija InputBox ima sljedeću sintaksu:

stringvar=InputBox( Prompt[, Naslov] [, Default] [, Xpos] [, YPos] _

[, HelpFile, Kontekst])

Evo stringvar predstavlja bilo koju varijablu koja može pohraniti string (ili varijablu tipa String, ili - Varijanta). Argument Prompt predstavlja bilo koju vrijednost niza (literal, konstanta ili varijabla). InputBox prikazuje ovaj string kao prompt u dijaloškom okviru; uvijek mora dati argument Prompt, pošto je ovo traženi argument; svi ostali su opcioni. Argument Naslov je drugi argument za InputBox. Naslov predstavlja bilo koju vrijednost niza (literal, konstanta ili varijabla). InputBox prikazuje tekst ove linije u naslovnoj traci dijaloškog okvira. Ako izostavite argument Naslov, VBA se prikazuje u naslovnoj traci dijaloškog okvira InputBox riječ " Microsoftexcel" . Argument Default – string izraz prikazan u polju za unos kao zadani ako korisnik ne unese drugi niz; ako je ovaj argument izostavljen, polje za unos se prikazuje kao prazno. Argumenti Xpos I YPos može biti bilo koji numerički izraz. Ovi argumenti vam omogućavaju da odredite gdje se u aktivnom prozoru pojavljuje okvir za unos i koordinate su gornjeg lijevog ugla dijaloškog okvira: Xpos – horizontalna udaljenost od lijeve ivice prozora; YPos je vertikalna udaljenost od gornje ivice prozora. Obje udaljenosti se mjere u twipovima ( twips); jedan twip je jednak 1/20 tačke (tačka je mjera fonta za štampanje). Pošto je tačka 1/72 inča, jedan twip je otprilike 0,0007 inča. Posljednja dva neobavezna argumenta za funkciju InputBox- Ovo HelpFile I Kontekst. Imaju istu svrhu kao argumenti sličnih funkcija. MsgBox.

Korištenje argumenata imenovane funkcije

Kao što ste možda primijetili, lako je nenamjerno izostaviti zadnje zareze ili preurediti vrijednosti argumenata u funkcijama koje imaju neobavezne argumente ili više argumenata, uprkos pomoći svojstva Auto Brzo (Kratke informacije) VB editor. Izostavljanje ili preuređivanje argumenata u listi argumenata funkcije može dovesti do grešaka nepodudaranja tipova. Greška (još gora) možda neće biti otkrivena. Da bi se spriječile programske greške i olakšalo korištenje funkcija koje imaju opcione argumente, VBA pruža alternativu navođenju vrijednosti na listi argumenata određenim redoslijedom. Također možete prenijeti

koristeći vrijednosti argumenta funkcije imenovani argumenti(imenovani argumentima) funkcije. Sljedeći redovi prikazuju dvije izjave MsgBox, koji imaju isti rezultat; prva izjava koristi normalnu metodu nabrajanja argumenata, a druga naredba koristi metodu imenovanog argumenta:

MsgBox AnyMsg, AnyTitle

MsgBox Prompt:=Bilo koja poruka, Title:=Bilo koji naslov

Znak koji dodjeljuje vrijednost imenovanom argumentu (:=) nije potpuno isti obični operator dodjeljivanja (=). Ako izostavite dvotočku (:) kada dodjeljujete vrijednost imenovanom argumentu, VBA neće nužno otkriti sintaksičku grešku, ali možda neće ispravno protumačiti izjavu. Kada VBA izvrši ovu naredbu, prikazuje jednu od nekoliko mogućih grešaka tokom izvođenja, često grešku neusklađenosti tipa.

Ne možete miješati imenovane argumente s regularnom listom argumenata u istom pozivu funkcije. Morate koristiti ili imenovane argumente ili listu regularnih argumenata za svaki pojedinačni poziv funkcije.

Zadatak 5. Napišite proceduru koja izračunava površinu kruga, ali prima polumjer kružnice od korisnika procedure.

Za ovo:

Unesite proceduru (listing 7):

Listing 7 – Prijem ulaznih podataka pomoću operateraInputBox

    Const Pi As Single =3,14" aproksimacija pi vrijednosti

    Dim CircleArea As Single " čuva izračunatu površinu kruga 3

4 Podlist3_07()

    Const BoxTitle = "Oblast kruga"!}

    Dim radijus kao pojedinačni, Temp kao niz 7

    Temp = InputBox("Unesite radijus" & Chr(13) & "krug", BoxTitle)

    Radijus = CSng(temp)

    CircleArea = Pi * Radijus * Radijus

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Redovi 1 i 2 Listinga 7 deklariraju konstantu Pi i varijabilna oblast kruga modularni nivo. Red 4 sadrži stvarnu deklaraciju procedure. Red 5 deklarira konstantu proceduralnog nivoa BoxTitle; ova konstanta ima samo lokalni pristup u proceduri List3_07. U redu 8, izraz poziva funkciju InputBox. Prikazuje svoj prvi argument kao tekst u dijaloškom okviru, pozivajući korisnika da unese vrijednosti nekog tipa. U ovom operateru InputBox prikazuje tekst "Unesite radijus kruga" (funkcija Chr(13) je simbol prijelaza na novi red) da kaže korisnicima procedure koju vrijednost treba da unesu. InputBox koristi drugi argument,

12 End Sub

predstavljena konstantom BoxTitle, kao naslov dijaloškog okvira. Prilikom izvršavanja naredbe InputBox prikazuje se dijaloški okvir (slika 16)

Područje kruga

Unesite radijus kruga

Rice. 16 Korisnik unosi broj u okvir za tekst i bira komandno dugme uredu ili Otkaži da zatvorite dijalog kao i svaki drugi Windows prozor. Kad god pozovete bilo koju funkciju, morate nekako koristiti vrijednost koju funkcija vraća. Poziva se vrijednost koju vraća funkcija rezultat funkcije(funkcija rezultat). Kao što je prikazano u redu 8 u slučaju funkcije InputBox, čiji je rezultat dodijeljen varijabli Temp. Rezultat funkcije InputBox je uvijek string (zato je varijabla Temp najavljen je kao String). Pošto je promenljiva Temp je izričito deklarisano kao String, vrijednost stringa mora biti pretvorena u numeričku vrijednost prije nego što se može koristiti u matematičkim proračunima. Red 9 Listinga 7 radi upravo to, koristeći ugrađenu VBA funkciju csng za pretvaranje korisničkog unosa u broj tipa Single.

Izrazi uVisualBasic

Izraz(izraz) je vrijednost ili grupa vrijednosti koja izražava jednu vrijednost. Svaki izraz izračunato do(ili rezultira) različitom vrijednošću. Izrazi se sastoje od jednog ili više od sljedećih dijelova: konstante (literalne ili imenovane), varijable (bilo koje vrste podataka), znakovi operacija, nizovi, elementi niza, funkcije.

Svi izrazi rezultiraju jednom vrijednošću određenog tipa podataka. Izrazi također mogu rezultirati jednom od posebnih vrijednosti Prazan(neinicijalizirana varijabla tipa Varijanta ili rezultat izraza koji sadrži neinicijaliziranu varijablu tipa Varijanta) ili Null(Null predstavlja izraz koji sadrži nevažeće podatke). Kada koristite bilo koji znak u izrazu, pozivaju se elementi podataka (varijable ili konstante) na koje se djeluje operandi(operandi); većina operacija zahtijeva dva operanda.

Kompatibilnost tipa podataka. Automatska konverzija podataka

Nisu svi tipovi podataka međusobno kompatibilni i ne možete koristiti nekompatibilne tipove podataka u istom izrazu. Na primjer, aritmetičko dodavanje stringa broju nema smisla, jer takav izraz nema smisla i VBA ga ne može procijeniti.

Mnogi tipovi podataka su međusobno kompatibilni. Na primjer, možete

kombinuju različite tipove numeričkih podataka u istom izrazu; VBA automatski izvodi potrebne konverzije tipova na različitim numeričkim tipovima. VBA takođe ponekad može automatski da konvertuje druge tipove podataka tako da svi tipovi u izrazu budu kompatibilni, iako to nije uvek moguće. Vrlo je važno kontrolisati i znati tip izraza, jer ako izrazi sadrže nekompatibilne tipove, VBA ispušta runtime error - grešku nepodudaranja tipova(tip- neusklađenost). Kada obrađuje izraz koji sadrži različite tipove podataka, VBA prvo "pokušava" da riješi bilo koju razliku u tipu pretvaranjem vrijednosti u izrazu u kompatibilne tipove podataka. Ako konverzija tipa ne riješi bilo kakve razlike, prikazuje se greška u vremenu izvođenja i procedura prestaje da se izvršava. Na primjer, u izrazu 25 & "Computer Science", VBA uvijek izvodi konkatenaciju nizova (spaja dva niza), bez obzira na tip varijabli; rezultat je tip String; ovaj izraz nikada ne izaziva grešku neusklađenosti tipa.

VBA obično pretvara sve numeričke tipove podataka u izrazu u tip najviše preciznosti, a zatim daje taj tip rezultatu izraza. Na primjer, ako izraz sadrži numeričke vrijednosti s tipovima Integer I Single, rezultat izraza je tip Single– tip najveće preciznosti u ovom izrazu. Ako rezultat numeričkog izraza dodijelite varijabli sa manjom preciznošću od stvarnog tipa rezultata izraza, VBA zaokružuje rezultat izraza sve dok se njegova preciznost ne poklapa sa očekivanim tipom. Na primjer, ako dodijelite numerički izraz koji rezultira brojem kao što je Dvostruko, varijabla tipa Integer, VBA okrugli broj dvostruke preciznosti za kucanje Integer.

Kada konvertuje broj u string, VBA kreira string koji sadrži sve cifre tog broja, plus decimalni zarez (ako broj ima jedan). Broj 3413.72 (tačka se koristi za pisanje broja u kodu), na primjer, pretvara se u niz "3413.72". Ako je broj vrlo velik ili vrlo mali, VBA može kreirati string reprezentaciju broja u naučnoj notaciji; na primjer, broj 0.0000000004927 se pretvara u niz "4.927E-11".

VBA može samo pretvoriti string u broj sve dok string sadrži karakterni prikaz broja u decimalnom ili eksponencijalnom formatu. Nizovi "988.6", "812", "-186.7", "1,3E10" predstavljaju brojeve i VBA ih može pretvoriti u brojeve. Žice "1.045", "$74.550" i "Dobro jutro!" ne mogu se pretvoriti u brojeve.

Kada VBA konvertuje vrednosti tipa Boolean u brojeve, značenje Istinito se pretvara u 1, a vrijednost False– na 0. Kada VBA konvertuje broj u tip Boolean, nula se pretvara u False, a bilo koja druga vrijednost se pretvara u Istinito. Kada VBA konvertuje vrednosti tipa Boolean za nizove, VBA koristi string "True" za Istinito i "False" za False.

Kada VBA konvertuje tip podataka Datum u broj, rezultat je numerička vrijednost - broj tipa Dvostruko, koji sadrži broj dana od 30. decembra 1899. (negativan broj predstavlja datum ranije od 30.12.1899.). Decimalni dio broja (ako postoji) izražava doba dana kao dio

dana; 0 je ponoć, a 0,5 je podne. U VBA, pretvaranje numeričkih tipova podataka u tipove Datum je samo inverzna konverzija tipa Datum u broj.

Operator dodjele (=)

Ovaj operator se koristi za dodjelu rezultata izraza varijabli. Sintaksa obrasca operatora dodjele je sljedeća:

varname = izraz

varijabla varname - bilo koja varijabla, a izraz - bilo koji izraz.

Kada izvršava naredbu o dodjeli, VBA prvo procjenjuje izraz desno od izraza dodjeljivanja (=), a zatim pohranjuje rezultat izraza u varijablu čije je ime lijevo od izraza dodjeljivanja.

Slika operatora dodjeljivanja u dijagramu toka:

varname = izraz

Kada dodijelite rezultat izraza varijabli s određenim tipom podataka, taj rezultat može biti tipa podataka kompatibilnog s tipom varijable koja prima novu vrijednost. U mnogim slučajevima, VBA može pretvoriti tip podataka rezultata izraza u tip koji je kompatibilan sa tipom varijable koja preuzima novu vrijednost ako rezultat izraza i varijable već nemaju kompatibilne tipove. Varijabilni tip Varijanta može se dodijeliti bilo koji tip podataka.

Aritmetičke operacije

VBA može da izvodi sve uobičajene aritmetičke operacije (realizovane kroz aritmetičke izraze): sabiranje, oduzimanje, množenje i deljenje, kao i podizanje brojeva na određeni stepen, i pruža dodatne specijalne matematičke operacije za celobrojno deljenje i deljenje po modulu (tabela 11) .

Tabela 11- Znakovi (notacije) operatora koji se koriste u VBA aritmetičkim izrazima (Ni je bilo koji važeći VBA numerički izraz)

Potpiši

Sintaksa

Naziv/Opis

Dodatak. Dodaje N1 na N2

Oduzimanje. Oduzima N2 od N1

Množenje. Množi N1 sa N2

Division. Dijeli N1 sa N2.

Cjelobrojna podjela. Dijeli N1 sa N2, odbacujući bilo koji razlomak tako da rezultat bude cijeli broj.

Modulo podjela. Dijeli N1 sa N2, vraćajući samo ostatak operacije dijeljenja.

Eksponencijacija. Podiže N1 na stepen N2.

Oba operanda moraju biti numerički izrazi ili stringovi koje VBA može pretvoriti u broj.

Operacije poređenja

Ponekad se nazivaju i operacije poređenja operacije odnosa(relacijski operateri). Najčešće se operacije poređenja koriste za specificiranje kriterijuma za donošenje odluke ili za formulisanje opisa uslova pod kojima se grupa instrukcija treba ponoviti (petlja).

Rezultat bilo koje operacije poređenja je vrijednost tipa Boolean: Istinito ili False. Operatori poređenja se koriste za poređenje literalnih, konstantnih ili varijabilnih vrijednosti bilo kojeg sličnog tipa (tabela 12).

Naziv/Opis

Jednakost. Istinito , AkoEljednako E2, inače -False

Manje od. Istinito , AkoElmanje od E2, inače -False

Manje ili jednako.Istinito ako je E1 manji ili jednak

E2, inače -False

Više nego. Istinito , ako je E1 veći od E2, u suprotnom -False

Veće ili jednako.Istinito ako je E1 veći ili jednak

E2, inače -False

Nije jednako.Istinito, ako E1 nije jednako E2, u suprotnom - False

Objekat. Istinito ako se El odnosi na isti objekat kao E2, inače -False Sličnost. Oba operanda moraju biti tipa

Tabela 12– Znakovi (notacija) operacija poređenja (E u ovoj tabeli predstavlja bilo koji važeći VBA izraz)

Operacija/Operater

Sintaksa

f

uzorak,

String. Istinito, ako se El podudara

Poređenje binarnih i tekstualnih nizova

VBA pruža dva različita načina za poređenje različitih znakova velikih i malih slova. Prvi metod koji VBA koristi za upoređivanje stringova se zove binarni (binarni) ili binarno poređenje i podrazumevana je metoda poređenja. Da biste izabrali metodu poređenja nizova koja je dostupna u VBA (binarni ili tekstualni), koristite direktivu OpcijaUporedite:

Opcija Usporedi [ Binarno | Tekst]

U poređenju teksta, VBA "tretira" velika slova kao ekvivalentna malim slovima.

Konkatenacija nizova

VBA vam daje mogućnost da spojite (zalijepite) nizove zajedno kako biste formirali duže nizove. Zove se spajanje jednog niza drugom konkatenacija(konkatenacija) linije. Znak & se može koristiti samo za konkatenaciju nizova. Opća sintaksa za znak & je:

Operand1 & Operand2 [& Operand3… ]

Operand1 I Operand2 – bilo koji važeći string ili numerički izrazi. Ako su jedan ili oba operanda numerički izrazi, VBA pretvara brojeve u nizove prije izvođenja operacije spajanja. Tip podataka rezultata konkatenacije nizova je uvijek tip String.

Logički operatori

Najčešća upotreba VBA logičkih izraza je kombinovanje rezultata pojedinačnih izraza za poređenje da bi se kreirali složeni kriterijumi odlučivanja u proceduri, ili da bi se stvorili uslovi pod kojima se grupa izraza mora ponoviti (tabela 13).

Tabela 13– Bulovi operatori (E u ovoj tabeli predstavlja bilo koji važeći izraz s Booleovim rezultatom, kao što je operacija poređenja)

Naziv/opis sintakse operatora

I El i E2 Konjunkcija. Istinito ako i E1 i E2 imaju vrijednost

Istinito , inače -False Ili El Ili E2 Disjunkcija. Istinito ako je jedan izraz ili oba (E1 i

E2) su jednakiIstinito ; inače -False Ne Ne El Negacija. Istinito ako je E1 bitan False; False,

AkoElje jednakoIstinito

Izuzetak. Istinito ako se E1 i E2 razlikuju

vrijednosti; inače -False

Ekvivalencija. Istinito ako E1 ima isto

vrijednost kao E2; inače -False

implikacija. False kada je E1 jednak Istinito I

E2 jeFalse ; inače -Istinito .

Prioriteti operacija prilikom evaluacije složenih izraza

kompleks(kompozitni) izraz(kompleks izraz) je svaki izraz formiran od dva ili više izraza. Mnogi izrazi koje pišete su složeni izrazi, posebno ako kontroliraju slijed izvršavanja koda u procedurama ili predstavljaju različite matematičke formule (Tabela 14).

Tabela 14– Hijerarhija operatera/operacija od najvišeg do najnižeg prioriteta

Komentari operatera/znaka

eksponencijacija, najviši prioritet

unarni minus

Množenje i dijeljenje imaju jednak prioritet; oni se vrednuju onako kako se pojavljuju u izrazu s lijeva na desno

Sabiranje i oduzimanje imaju jednak prioritet; oni se vrednuju onako kako se pojavljuju u izrazu s lijeva na desno

Bilo koja konkatenacija nizova se izvodi nakon bilo koje aritmetičke operacije u izrazu i prije bilo koje operacije poređenja ili poređenja. logičke operacije

<, <=, >, >=,

Kao, =,<>, Is

Svi operatori poređenja imaju jednak prioritet i procjenjuju se s lijeva na desno u izrazu. Koristite zagrade da grupišete operatore poređenja u izrazima

Korištenje funkcijaVisual basic

Već ste koristili ugrađene VBA funkcije: InputBox I MsgBox. Funkcija(funkcija) je ugrađena formula koja radi na izrazima i generiše vrijednost. Funkcija uvijek vraća vrijednost koju VBA ubacuje u program na mjestu gdje se pojavljuje naziv funkcije. VBA funkcije su podijeljene u nekoliko grupa na osnovu vrste operacije ili proračuna koje obavljaju. Nemojte brkati pojmove funkcija I procedura. Obično procedura izvodi određeni zadatak (ili grupu zadataka) na isti način na koji određena naredba menija u Excelu, Wordu ili drugoj aplikaciji izvršava određeni zadatak. Funkcija radi na jednoj ili više vrijednosti i vraća neku vrijednost rezultata (poput formule u ćeliji radnog lista programa Excel). Da biste koristili funkciju, jednostavno unesite ime funkcije u VBA naredbu, zajedno sa svim argumentima koje funkcija zahtijeva, na mjestu u iskazu gdje trebate koristiti rezultat funkcije. Stavljanje imena funkcije u VBA naredbu za pozivanje funkcije se poziva izazov(pozivanje) funkcije.

Ugrađene VBA funkcije podijeljene su u nekoliko kategorija na osnovu opće namjene funkcija (matematika, konverzija podataka, datum i vrijeme, string i manipulacija diskom).

Matematičke funkcije

VBA obezbeđuje standardni skup matematičkih funkcija (tabela 15). Tabela 15– VBA matematičke funkcije (N znači bilo koji numerički izraz)

vraća/akcija

Funkcije (ar-

gument)

Vraća apsolutnu vrijednostN

abs(N)

Kosinus uglaN, GdjeN

Cos(N)

Vraća sinus ugla;Nje ugao mjeren u radijanima

Sin(N)

Tan(N)

Vraća tangentu ugla;N- ugao u radijanima

Atn(N)

Vraća tangentu lukaNkao ugao u radijanima

Vraća konstantu e, podignut na stepen N ( e je baza prirodnih logaritama i iznosi (približno) jednako 2,718282)

Vraća cijeli broj N. Fix ne zaokružuje broj, već odbacuje bilo koji razlomak. Ako je N negativan, Fix vraća najbliži negativni cijeli broj veći ili jednakN

Dnevnik(N)

Vraća cijeli broj N. Int ne zaokružuje broj, već odbacuje bilo koji razlomak. Ako je N negativan, Int vraća najbliži negativni cijeli broj manje ili jednakoNVraća prirodni logaritamN

nasumično

argument

je

vraća

opciono. Koristite funkciju Rnd tek nakon toga

inicijalizacija VBA generatora slučajnih brojeva od strane operatora

Nasumično

Vraća predznak broja: -1 ako je N negativan; 1 ako je N

pozitivno; 0 akoNje 0

Vraća kvadratni korijen od N. VBA prikazuje grešku

vrijeme izvršenja, akoN- negativan

Funkcije konverzije podataka

Visual Basic pruža nekoliko funkcija za pretvaranje jednog tipa podataka u drugi (tabela 16). Koristite ove funkcije za rješavanje grešaka neusklađenosti tipova i pružanje eksplicitne kontrole nad tipovima podataka u izrazima.

Tabela 16– Funkcije konverzije podataka (N je bilo koji broj, S je bilo koji niz, a E je bilo koja vrsta izraza)

Funkcija (ar- Povratak/Akcijagument)

Vraća broj koda znaka koji odgovara prvom slovu linijeS. Slovo "A", na primjer, ima šifru od 65

Funkcija (argumenti)

vraća/akcija

Vraća jedan niz znakova koji odgovara kodu znakova N, koji mora biti broj između 0 i 255, uključujući. Kôd znaka 65, na primjer, vraća slovo "A" (Chr(13) je znak za povratak, Chr(10) je znak za pomak reda)

Vraća niz koji sadrži vrijednost predstavljenu izrazom E, u formatu prema uputama sadržanim u S

Vraća string koji sadrži heksadecimalni prikaz N

Oct(N) Vraća string koji sadrži oktalnu reprezentaciju N

Vraća cijeli broj tipa Dugo A koji predstavlja vrijednost primarnih boja slike. N u svakom argumentu mora biti cijeli broj u rasponu od 0 do 255, uključujući. Argumenti (s lijeva na desno) su vrijednosti za crvenu, zelenu i plavu.

Str(N) Vraća string koji je ekvivalentan numeričkom izrazu N

Vraća numeričku vrijednost koja odgovara broju predstavljenom nizom S, koji mora sadržavati samo cifre i jednu decimalu, inače VBA ne može da ga konvertuje u broj. Ako VBA ne može pretvoriti niz u S, funkcija Val vraća 0

CBool(N) Vraća Boolean ekvivalent numeričkog izraza N

bajtova(od 0 do 255); E je bilo koji važeći numerički ili string izraz koji se može pretvoriti u broj

Vraća numeričku vrijednost tipa Valuta

Vraća vrijednost tipa Datum. E može biti bilo koji važeći izraz (niz ili broj) koji predstavlja datum u rasponu 1/1/100 12/31/9999 , uključujući

Vraća numeričku vrijednost tipa Dvostruko, koji se može pretvoriti u broj

Vraća numeričku vrijednost tipa Integer; E je bilo koji važeći numerički ili string izraz koji se može pretvoriti u broj

Vraća numeričku vrijednost tipa Dugo; E je bilo koji važeći numerički ili string izraz koji se može pretvoriti u broj

Funkcija (argumenti)

vraća/akcija

Vraća numeričku vrijednost tipa Single; E je bilo koji važeći numerički ili string izraz koji se može pretvoriti u broj

Vraća vrijednost tipa String; E - bilo koji važeći numerički ili string izraz

Vraća vrijednost tipa Varijanta; E - bilo koji važeći numerički ili string izraz

Funkcije datuma i vremena

VBA funkcije datuma i vremena se obično koriste za dobivanje trenutnog datuma i vremena, razbijanje vrijednosti datuma na njegove sastavne dijelove ili pretvaranje nizova i brojeva u vrijednosti tipa Datum(Tabela 17).

Tabela 17– Funkcije datuma i vremena (N je bilo koji važeći numerički izraz, a D je bilo koji važeći izraz poput Datum(uključujući vrijednosti poput Datum, brojevi ili stringovi koje VBA može konvertovati u datum); svi argumenti funkcije su potrebni osim ako nije drugačije naznačeno)

vraća/akcija

Funkcije (ar-

gument)

Vraća sistemski datum. Ovu funkciju možete koristiti i kao proceduru za postavljanje sistemskog sata računara. Više detalja možete pronaći u pomoći sistemimaVBA

Vraća sistemsko vrijeme računara kao vrijednost tipa Datum. Ovu funkciju možete koristiti i kao proceduru za postavljanje sistemskog sata. Više detalja možete pronaći od sistem pomoći VBAVraća sistemski datum i vrijeme

Datum I

Vraća cijeli broj koji je dio izraza tipa Datum,

inkluzivno

Vraća cijeli broj koji je dio izraza tipa Datum I

Radnim danom (D) Sat (D)

inkluzivno

Vraća cijeli broj koji sadrži dan u sedmici za izraz tipa

Datum. Dan u sedmici se vraća kao broj između 1 i 7,

inkluzivno; 1 je nedelja, 2 je ponedeljak, i tako dalje.

Vraća cijeli broj koji sadrži sate kao dio vremena,

broj između 0 i 23, uključujući. Ako izraz D nije

onda sadrži vremenske vrijednostiSatvraća 0

Funkcije (ar-gument)

Datum Dodaj (S, N, D)

Serial datuma (N, N, N)

vremenska serija (N, N, N)

vraća/akcija

Vraća cijeli broj koji sadrži minute kao dio vremena u

izraz tipa Datum. Minute se vraćaju kao broj između 0

i 59, uključujući. Ako izraz D ne sadrži vrijednost

vrijemeMinutavraća 0

Vraća cijeli broj koji sadrži sekunde kao dio vremena u

izraz tipa Datum. Sekunde se vraćaju kao broj između

0 i 59, uključujući. Ako izraz D ne sadrži vrijednost

vrijemeSekundavraća 0

Vraća vrijednost [type Varijanta(Datum)], koji sadrži datum do

DateDiff(S, D1, Vraća vrijednost [tip Varijanta(Dugo)] broj privremenih D2[,Nl [, N2 ]]) intervali između dva određena datuma DatePart(S, D, [, Vraća navedeni dio [type Varijanta(Integer)] N1 [, N2]]) dati datum

kojem se dodaje dati vremenski interval

Vraća sekvencijalnu vrijednost datuma za dati datum. S lijeva na desno, argumenti predstavljaju godinu, mjesec i dan. Argument godine mora biti cijeli broj između 100 i 9999, mjeseci između 1 i 12, dani između 1 i 31 (svi rasponi uključuju)

Vraća serijsku vrijednost vremena. S lijeva na desno, argumenti predstavljaju sate, minute i sekunde. Argument sata mora biti cijeli broj između 0 i 23, argumenti minute i sekunde moraju biti brojevi od 0 do 59 Vraća vrijednost tipa Datum, ekvivalentno datumu datom argumentom E, koji mora biti niz, broj ili konstanta koja predstavlja datum

ponoć prema sistemskom vremenu računara Neke od ovih funkcija su već korištene u primjerima u ovoj knjizi, druge će se koristiti kasnije.

Funkcije niza

VBA funkcije stringova se često koriste za pronalaženje datih stringova unutar drugih stringova, za upoređivanje jednog stringa s drugim i za kopiranje odabranih dijelova stringova (tabela 18).

Vraća vrijednost tipa Datum A koji sadrži vrijeme specificirano argumentom E, koji može biti niz, broj ili konstanta koja predstavlja vrijeme Vraća broj koji predstavlja broj sekundi od

Tabela 18– Funkcije niza (N je bilo koji važeći numerički izraz, a S je bilo koji važeći string izraz)

gument)

Vraća poziciju S2 u S1. N1 je početna pozicija za

pretraga; N2 definira tip poređenja. N1 i N2 su opcioni. Ako je N2 izostavljen, tada je struja instalacijaOpcija Uporedite InStrRev(Sl, S2 Vraća poziciju na kojoj se niz S2 pojavljuje unutar S1

[, Nl[, N2]]) LCase(S)

Len(S) LTrim(S)

razmak (N) StrComp(Sl, S2, N)

u smjeru od kraja (ili N1) do početka niza. N2 definira tip poređenja. Ako je N2 izostavljen, pretraga koristi trenutna instalacijaOpcija Uporedite

Vraća string (tip String) koji sadrži kopiju slova S sa svim velikim slovima pretvorenim u znakove mala slova

Vraća string; kopira N znakova od S, počevši s lijeve strane ekstremnog karakteraS

Vraća broj znakova u S, uključujući početak i kraj prostori

sa lijeve strane niza (vodeći razmaci) Vraća string; kopira N2 znakova iz S, počevši od pozicije znaka u S specificiranoj argumentom N1. N2 je opciono; ako je N2 izostavljen, tada Mid vraća sve znakova u nizuSsa pozicijeN1 do kraja reda Vraća vrijednost tipa String; kopira N znakova iz S,

počevši od krajnjeg desnog znakaS

Vraća kopiju niza S nakon uklanjanja razmaka

sa desne strane niza (terminalni znakovi)

Vraća niz razmaka dužineNsimboli

Uspoređuje S1 sa S2 i vraća broj koji pokazuje rezultat poređenja: -1 ako je SI< S2; 0, если SI = S2; 1, если SI >S2. N je opciono i ukazuje da li poređenje treba da bude osetljivo na velika i mala slova. Ako je N izostavljen, nizovi se upoređuju koristeći trenutnu postavku. OpcijaUporedite

Vraća niz konvertiran u nova forma zavisno od numeričkog koda specificiranog argumentom N. VBA obezbeđuje interne konstante za upotrebu sa funkcijom StrConv; najkorisnije su: vbProperCase(konvertuje niz tako da svako slovo koje počinje reč bude veliko), vbLowerCase(konvertuje niz u mala slova) i vbUpperCase(konvertuje niz u velika slova)

Funkcija (ar- Povratak/Akcijagument)

String(N, S) Vraća niz dužine N znakova, koji se sastoji od znaka

dat prvim znakom uS Trim(S) Vraća kopiju niza S nakon vodećih i

završni razmak znakova iz ovog niza UCase(S) Vraća S sa svim malim slovima,

konvertovano u velika slova Nekoliko navedenih u tabeli. 16 funkcija konverzije tipa podataka također se primjenjuju na manipulaciju stringovima: Chr, Format, CStr posebno.

Formatiranje vrijednosti podataka

Iako VBA može automatski pretvoriti bilo koju vrstu podataka u string za prikaz pomoću funkcije MsgBox ili za umetanje u Excel radni list, format podataka koji VBA odabere možda neće biti ono što želite. Kada konvertuje broj u niz, VBA ne dodaje separator hiljadu, znakove dolara ili drugo numeričko oblikovanje u niz. Takođe, ako je broj veoma veliki ili veoma mali, VBA kreira string koji predstavlja broj u eksponencijalnom formatu. Prilikom konvertovanja datuma, VBA uvek koristi kratki format datuma i vremena koji koristi operativni sistem računara i uvek prikazuje i datum i vreme.

Da biste dobili gotovo bilo koji format datuma prilikom pretvaranja brojeva ili datuma u nizove, možete koristiti funkciju Format; možete čak koristiti funkciju Format za formatiranje podataka niza prema određenom uzorku. Također možete kreirati prilagođene formate ekrana ako vam je potrebno da se podaci pojavljuju u određenom formatu. Sintaksa operatora Format je:

Format ( izraz [, Format[, Prvi dan sedmice [, Prva sedmica godine]]])

izraz – svaki važeći izraz (obavezno); Format – važeći naziv ili izraz formata definiran od strane korisnika (opcionalno); Prvi dan sedmice – konstanta koja specificira prvi dan u sedmici (opciono); Prva sedmica godine – konstanta koja specificira prvu sedmicu u godini (opciono).

Za argumente Prvi dan sedmice I Prva sedmica godine VBA ima imenovane konstante o kojima možete saznati u VBA sistemu pomoći pod Konstante datuma.

Za korištenje funkcije Format, možete odrediti unaprijed definirani format (zv imenovani format(imenovani formatu), ili kreirajte sliku određenog formata koristeći kombinacije posebne grupe znakova tzv placeholders(placeholders). Ako trebate kreirati prilagođene formate za brojeve, datume ili vremena, morate kreirati niz koji sadrži znakove čuvara mjesta da biste naveli sliku formata koju bi funkcija trebala koristiti. Format prilikom pretvaranja vrijednosti u niz (tabela 19). Osim toga, u tabeli. 19 korišteno

kao primjer, numerička vrijednost je 1234,5.

kreirati običaj

Tabela 19– Format rezerviranih mjesta

znak čuvara mjesta

Akcija

Numerički znak, prikazuje cifru ako postoji na toj poziciji ili 0 ako je nema. Možete koristiti znak 0 da prikažete početne nule za cijele brojeve i zadnje nule za decimale; 00000.000 prikazuje 00124,500

Numerički znak, prikazuje cifru ako postoji na toj poziciji, u suprotnom ne prikazuje ništa. Znak za popunjavanje # je ekvivalentan 0, osim što se početne i zadnje nule ne prikazuju; #####.### prikazuje 1234.5

$ Prikazuje znak dolara; $###,###.00 prikazuje $1,234.50

Decimalni čuvar mjesta, prikazuje decimalni zarez na određenoj poziciji u nizu čuvara mjesta 0; #.##.## prikazuje 1234.5

Znak procenta, množi vrijednost sa 100 i dodaje znak procenta na poziciji označenoj 0 čuvarima mjesta; #0.00% prikazuje broj 0,12345 kao 12,35% (12,345 je zaokruženo na 12,35)

, (zarez)

Razdjelnik hiljada, dodaje zareze kao separatore hiljada u nizovima znakova za čuvanje mjesta 0 i #; ###,###,###. 00 prikazuje 1.234,50

Prikazuje vrijednosti u eksponencijalnom formatu sa predznakom eksponenta samo za negativne vrijednosti; #.#### E00 prikazuje 1.2345E03; 0,12345 je prikazano kao 1,2345E-01

Prikazuje vrijednosti u eksponencijalnom formatu s eksponentom za pozitivne i negativne vrijednosti; #.#### E+00 prikazuje 1.2345E+03

Odvaja dan, mjesec i godinu za formatiranje vrijednosti datuma. mm/ dd/ yy prikazuje 06.06.97. Znakovi "/" mogu se zamijeniti znakovima crtice kako bi se prikazali kao 06-06-97

Određuje kako prikazati mjesece u datumima; m displeji 2, mm– 02, hmmm– februar mmmm- Februar

Određuje kako prikazati dane u datumima; d prikazuje 1, dd displeji 01, ddd– pet, dddd- Petak

y Prikazuje dan u godini kao broj od 1 do 366

Određuje kako prikazati godine u datumima; yy displeji 99, uuuu– 1999

Prikazuje kvartal u godini kao broj između 1 i 4

Prikazuje dan u sedmici kao broj (1 je nedjelja)

Prikazuje sedmicu u godini kao broj između 1 i 54

znak čuvara mjesta

Akcija

: (dvotočka) Odvaja sate, minute i sekunde u vrijednostima formata vremena; hh: mm: ss prikazuje 02:02:02

Određuje kako se sat prikazuje; za vremensku vrijednost 02:01:38 h displeji 2, hh prikazuje 02

Minutni čuvar mjesta za vrijeme; za vremensku vrijednost 02:01:08 n prikazuje 1 i nn prikazuje 01

Čuvar mjesta za sekunde za vrijeme; za vremensku vrijednost 02:01:08 s prikazuje 8 i ss displeji 08

Prikazuje vrijeme u 12-satnom formatu sa dodanim prijepodne i popodne; h: nnAM/PM prikazuje 4:00 popodne. Alternativni formati uključuju am/pm, A/P i a/p

Čuvar mjesta za znakove, prikazuje razmak ako nema odgovarajućeg znaka u nizu koji se formatira (zadani redoslijed popunjavanja je zdesna nalijevo)

Prikazuje sve znakove velikim slovima

Prikazuje sve znakove malim slovima

Korištenje funkcija host aplikacije

Pored funkcija ugrađenih u Visual Basic za aplikacije, neke funkcije VBA host aplikacije dostupne su iz VBA koda. Domaćin-primjena je aplikacija koja razvija VBA procedure kao što su Word, Excel, PowerPoint, Outlook ili FrontPage. Excel, na primjer, ima različite funkcije koje izvode matematičke, logičke, finansijske i statističke operacije nad podacima u radnim listovima. Mnoge (iako ne sve) ove Excel funkcije dostupne su iz VBA koda. Funkcije host aplikacije dostupne VBA nisu dio VBA, one su dio host aplikacije. Funkcije dostupne VBA u jednoj host aplikaciji možda neće biti dostupne u drugoj.

Da biste koristili funkciju koja pripada nekoj host aplikaciji, pogledajte funkciju kroz programski objekt Aplikacija. Application VBA objekat predstavlja host aplikaciju i sve njene resurse. Objekti su detaljnije opisani u 6. dijelu.

Zadatak 6. Napišite proceduru koja koristi Excel funkciju Max.

Za ovo:

Unesite proceduru (listing 8):

Listing 8 – Korištenje Excel funkcijeMax

1 podlist3_08()

2 MsgBox Application.Max(9, 17, -18, 20)

Iza reči Aplikacija nakon čega slijedi tačka (.), a zatim naziv funkcije max bez razmaka. Ova tačka se zove granična tačka(dot separator) označava da se operator odnosi na funkciju max, koji je dio objekta

Aplikacija.

Rezultat Excel funkcije ne može se zanemariti. Uvijek morate uključiti zagrade u poziv Excel funkcije i uvijek koristiti rezultat funkcije na neki način: kao vrijednost u izrazu, kao argument drugoj funkciji ili proceduri ili u naredbi za dodjelu.

Nisu sve funkcije host aplikacije dostupne VBA. Ako niste sigurni da li je određena funkcija host aplikacije dostupna za VBA, koristite Objekat Pretraživač da provjerite da li lista uključuje Članovi (Komponenta) ovu funkciju sa odabranim Funkcija radnog lista na listi casovi (Casovi) i sa odabranom host aplikacijom na listi projekat/ Biblioteka (Projekat / Biblioteka). Ako željenu funkciju nije na listi, nije dostupan VBA.

Kontrolna pitanja

    Definirajte koncept "tipova podataka". Koji se tipovi podataka koriste u VBA?

    Šta je identifikator?

    Šta je varijabla? Šta znači izraz "definiraj varijablu implicitno", a šta "eksplicitno"?

    Koje se konstante koriste u VBA? Šta su unutrašnje konstante?

    Čemu služe funkcije InputBox i MsgBox?

    Šta je izraz?

    Definirajte sintaksu operatora dodjele.

    Šta su relacione operacije?

    Šta je prioritet matematičkih operacija?

    Koja ključna riječ postoji u VBA za korištenje prilikom pristupa Excel funkcije? Za šta možete koristiti prozor Object Browser?

  • Boolean- Boolean tip podataka može pohraniti samo dvije vrijednosti: True ili False, true ili false. Korištenje umjesto cjelobrojnih varijabli je dobar stil programiranja.
  • bajtova- tip bajta je nov u Visual Basicu 5 i dizajniran je za pohranjivanje cijelih brojeva od 0 do 255. Njegova upotreba vam omogućava da u velikoj mjeri uštedite RAM i smanjite veličinu nizova u odnosu na prethodne verzije Visual basic. Osim toga, koristi se pri radu s binarnim datotekama.
  • Valuta - dati tip nema u verzijama GW-BASIC i QuickBASIC. Dizajniran je da izbjegne greške u konverziji. decimalni brojevi u binarni oblik i obrnuto. (Nemoguće je 1/10 predstaviti kao zbir 1/2, 1/4, 1/8, 1/16, itd.) Ovaj tip može imati do 4 znamenke nakon decimalnog zareza, a do 14 prije to. Unutar ovog raspona proračuni će biti tačni. Identifikator je znak "@". Budući da se sve aritmetičke operacije, osim sabiranja i oduzimanja, izvode jednako sporo kao u slučaju varijabli dvostruke preciznosti, ovaj tip je poželjniji za finansijske proračune. (Za one koji se pitaju, ovaj tip koristi 19-cifrene cijele brojeve, koji se zatim dijele sa 10000. Ovo omogućava 15 decimalnih mjesta i 4 decimalna mjesta.)
  • Datum- Ovaj tip podataka vam omogućava da pohranite vrijednosti vremena i datuma između ponoći 1. januara 100. i ponoći 31. decembra 9999. godine. Takve vrijednosti su označene znakovima "#" u tekstu programa, na primjer: Nova godina = #1. januar 2000. # Ako je unesena samo vrijednost datuma, Visual Basic pretpostavlja da je vrijeme 00:00.
  • Decimala je najmoćniji numerički tip. Za pohranjivanje varijable ovog tipa, dodjeljuje se 16 bajtova. Negativna i pozitivna granica intervala u kojem se nalaze moguće vrijednosti ove varijable su iste u apsolutnoj vrijednosti i jednake su +/- 79 228 162 514 264 337 593 543 950 335, ako se koriste cijeli brojevi. Ako je potrebno pohraniti frakcijske vrijednosti, tada će se granice mogućih vrijednosti pomaknuti za nekoliko redova veličine, ovisno o tome koliko decimalnih mjesta programer koristi. Ovaj tip se može koristiti samo za pohranjivanje decimala. Programer može koristiti do 28 decimalnih mjesta.
  • Dvostruko- Varijable ovog tipa vam omogućavaju da pohranite brojeve sa tačnošću do 16 cifara i dužine do 300 karaktera. Identifikator je "#". Proračuni s njima su također približni, a njihova brzina je relativno mala. Dvostruke varijable se uglavnom koriste za naučne proračune.
  • Integer- Cjelobrojne varijable mogu pohraniti samo relativno male cijele brojeve (između -32768 i +32767). Aritmetičke operacije preko takvih brojeva se izvode vrlo brzo. Znak "%" se koristi za označavanje ovog tipa: IntegerPerem% = 3
  • Dugo- ovaj tip se prvi put pojavio u jeziku QuickBASIC. Takve varijable pohranjuju cjelobrojne vrijednosti od -2 147 483 648 do +2 147 483 647. Označava se simbolom "&". Aritmetičke operacije na takvim brojevima su takođe veoma brze, a kada se radi sa 386DX ili 486DX procesorom, postojala je samo mala razlika u brzini izračunavanja između Long i Integer. LongPerem& = 123456789
  • Objekat- u stvari, varijabla ovog tipa je samo referenca na određenu instancu objekta. Varijabla je pohranjena u 4 bajta.
  • Single- identifikator za ove brojeve je simbol "!". Ova vrsta varijable vam omogućava da pohranite razlomke do sedam cifara. To znači da ako je rezultat 12345678,97, onda dio 8,97 nije tačan. Rezultat bi mogao biti, na primjer, 12345670.01. Brojevi mogu imati do 38 znakova. Proračuni s ovim varijablama također će biti približni. Štaviše, aritmetika je sporija nego kod cjelobrojnih varijabli.
  • String- string varijable pohranjuju znakove. Jedan od načina za označavanje ove vrste varijable je dodavanje znaka "$" na kraj njenog imena, na primjer: StringPerem$. Teoretski, takva varijabla može sadržavati do 2 milijarde znakova. U svakom slučaju, na određenom računaru će ovaj broj biti mnogo manji zbog ograničenih količina. ram memorija, Windows resursi ili broj znakova koji se koriste u obrascu. Jedna od najosnovnijih upotreba string varijabli je odabir informacija iz polja za unos.

Na primjer, ako promijenite tekst u tekstualnom okviru 1, tekstni okvir će prikazati isti tekst, ali bez posljednjeg znaka s desne strane:

Opcija Eksplicitno Dim strText As String Private Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub Private Sub Text1_Change() U slučaju greške Nastavi sljedeći Text2.Text = strText strText = Left(Text1.Text1, Text1 .Text) - 1) Kraj pod

Varijanta- ovaj tip je dodat u Visual Basic 5 od verzije 2.0. Varijabla tipa varijanta može sadržavati podatke bilo kojeg tipa. Ako Visual Basic ne zna tip podataka koji se primaju, morate koristiti varijantu. Tip informacije nije bitan, jer varijanta može sadržavati bilo koju vrstu podataka (numeričke, datum/vrijeme, string). Visual Basic automatski vrši potrebne transformacije podataka, tako da ne morate brinuti o tome. S druge strane, možete koristiti ugrađene funkcije za provjeru tipa podataka pohranjenih u varijabli tipa varijanta. Oni olakšavaju provjeru da li korisnik ispravno unosi podatke. Upotreba tipa podataka kao što je varijanta usporava program, jer je potrebno vrijeme i resursi za operacije konverzije tipa. Osim toga, mnogi programeri shvaćaju da korištenje automatske konverzije tipova podataka dovodi do neurednih programa. Jedini razlog u upotrebi varijante leži u mogućim greškama pri konverziji tipova direktno od strane programera.

Ponekad, kada koristite neke operatore, API funkcije ili samo za svoje potrebe, trebate kreirati vlastite tipove podataka. Često se nazivaju strukturama. U svojoj srži, struktura je poput jednodimenzionalnog niza koji trpamo u jednu varijablu. Ali može uključivati ​​podatke različitih tipova.

Kreiranje vlastitog tipa podataka vrši se pomoću naredbe Type, koja se koristi u općem dijelu koda obrasca.