Tipuri de variabile visual basic. Limbajul de programare Visual Basic

Deoarece Visual Basic poate determina singur tip variabil potrivit ei sens(cm. Variantă), atunci tipul variabilei nu trebuie declarat (nu este specificat). In orice caz, declararea variabilelor este o regulă de bună etichetă de programare și, de asemenea, vă permite să evitați unele erori în program, cum ar fi ortografia inegală a numelui variabilei în diferite locuri din program, nerespectarea tipurilor de date în calcule.

Variabila este declarată la începutul ferestrei de cod sau la începutul procedurii folosind operatorul Dim cu aceasta intrare:

Dim Variable_name As Variable_type

Tipul variabilului este cuvintele Octet, lung, șirși altele din tabelul de tip (vezi mai sus).

De exemplu:
Dim a As Byte
Variabilă declarată A tip octet. Într-o astfel de variabilă puteți pune un număr de la 0 la 255. Când încercați să atribuiți o variabilă Mai mult va apărea o eroare, iar numărul având parte fracționată vor fi rotunjite.

Dim b ca șir
Variabilă declarată b tip Şir. Această variabilă va conține textul (deși textul poate consta și din numere, dar 2 plus 3 este 23).

Când declarați mai multe variabile, le puteți lista folosind virgulă:
Dim a ca octet, b ca șir

După linia de declarare, puteți atribui o valoare unei variabile.

De exemplu:
Dim a As Byte
a = 5

De asemenea, Visual Basic vă permite să vă creați propriile tipuri de date. Această capacitate este importantă atunci când aveți de-a face cu un grup de elemente de date care sunt legate între ele, dar aparțin unor categorii de date diferite. Puteți să vă creați propriile tipuri (UDT - tip definit de utilizator) folosind instrucțiunea Structure și să declarați variabile legate de aceste noi tipuri folosind instrucțiunea Dim. Dar rețineți că instrucțiunea Structure nu poate fi localizată într-o procedură de eveniment - trebuie să fie situată în partea de sus a codului formularului, împreună cu alte declarații de variabile, sau în codul modulului.

De exemplu, următoarea declarație creează un tip de date personalizat numit Employee, care poate stoca numele, data nașterii și data angajării asociate cu acel angajat:

Structura Angajat Dim Nume ca șir Dim DataNașterii Ca Data Dim ÎnchiriereData Ca Data Încheierea Structura

După ce creați un tip de date, îl puteți utiliza în codul formularului sau în procedurile de evenimente ale modulului. Următoarele declarații folosesc noul tip de angajat. Prima instrucțiune creează o variabilă numită ProductManager de tip Employee , iar a doua instrucțiune setează componenta Name a acelei variabile la „Eric Cody”:

Dim ProductManager ca angajat ProductManager.Name = „Eric Cody”

Sună a seta proprietăți, nu-i așa? Visual Basic folosește aceeași notație pentru relațiile dintre obiecte și proprietăți ca și pentru relațiile dintre tipurile de date definite de utilizator și componentele variabile.

Constante: variabile care nu se modifică

Dacă o variabilă din programul dvs. conține o valoare care nu se modifică niciodată (cum ar fi pi, care este o entitate matematică fixă), ați putea lua în considerare stocarea acelei valori ca constantă și nu ca variabilă. O constantă este un nume semnificativ care înlocuiește un număr sau un șir de test care nu se schimbă niciodată. Constantele sunt utile deoarece măresc lizibilitatea codului programului și reduc numărul de erori de softwareși ușurează efectuarea de modificări globale la cod. Constanțele acționează ca variabile, dar nu le puteți modifica valoarea în timp ce programul rulează. Acestea sunt declarate folosind cuvântul cheie Const, așa cum se arată în exemplul următor:

Const Pi As Double = 3,14159265

Această declarație creează o constantă numită Pi care poate fi folosită în codul programului în locul valorii lui pi. Pentru a face o constantă disponibilă pentru toate obiectele formularului și procedurile de eveniment, plasați această declarație în partea de sus a codului formularului împreună cu alte declarații de variabile și structuri care au un domeniu de aplicare care se extinde la toate procedurile de eveniment ale formularului. Pentru a face o constantă disponibilă din toate formele și modulele programului (și nu doar din Form1 ), creați o constantă în codul modulului specificând înaintea acesteia cuvânt cheie Public De exemplu:

Public Const Pi As Double = 3,14159265

În exercițiul următor, folosim constante într-o procedură de eveniment.

Utilizarea unei constante într-o procedură de eveniment
  1. Din meniul Fișier, selectați Deschidere, apoi faceți clic pe Proiect. Apare caseta de dialog Deschidere proiect.
  2. Deschideți proiectul Constant Tester aflat în folder c:\vbnet03sbs\Capitolul 5\constant tester.
  3. Dacă formularul de proiect nu este vizibil, faceți clic pe Form1.vb în Solution Explorer, apoi faceți clic pe butonul View Designer. Formularul apare în Windows Forms Designer Test constant. Constant Tester este „scheletul” programului. Interfața cu utilizatorul este completă, dar trebuie să introduceți codul programului.
  4. Faceți dublu clic pe butonul Arată constantă forme. Procedura de eveniment Button1_Click apare în Editorul de cod.
  5. Introduceți următoarele instrucțiuni în procedura de eveniment Button1_Click:

    Const Pi As Double = 3.14159265 Label1.Text = Pi

    Sfat. Alegeți plasarea declarațiilor dvs. în funcție de modul în care intenționați să utilizați constante sau variabile. De obicei, programatorii încearcă să facă sfera declarațiilor cât mai mică posibil, dar totuși îl au disponibil în toate părțile codului unde este necesar. De exemplu, dacă o constantă este necesară doar într-o singură procedură de eveniment, ați plasa declarația acelei constante în interiorul acelei proceduri de eveniment. Cu toate acestea, dacă trebuie să îl puneți la dispoziție pentru toate procedurile de eveniment din formularul dvs., atunci plasați declarația sa în partea de sus a codului formularului.

    Pentru a porni programul, faceți clic pe butonul Start situat în bara de instrumente standard.

    Faceți clic pe butonul Arată constantă. Constanta Pi va apărea în câmpul de etichetă, așa cum se arată mai jos.

    Pentru a opri programul, faceți clic pe butonul Ieșire.

    Constantele sunt utile în codul programului, mai ales când se calculează formule matematice. Următoarea secțiune descrie cum să folosiți operatorii și variabilele pentru a scrie formule.

LIMBAJUL DE PROGRAMARE DE BAZĂ VIZUALĂ. TIPURI DE DATE. DESCRIEREA VARIABILLOR, CONSTANENTELOR, MATRIILOR

Tip de date este o metodă de stocare și prezentare a datelor într-un sistem informatic.

Următoarele tipuri de date pot fi stocate și procesate în Visual Basic.

Byte este un număr întreg nenegativ. Acceptă valori de la 0 la 255, ocupă 1 octet.

Boolean - valoare logică. Ia una dintre cele două valori True și False, ia 2 octeți.

Moneda este un număr extins zecimal. Folosit pentru a efectua calcule monetare cu un număr fix de zecimale, ocupă 8 octeți. (Până la 15 locuri la stânga punctului zecimal și până la 4 locuri la dreapta punctului zecimal).

Data - data. Folosit pentru a stoca date/orele, ocupă 8 octeți.

Dublu - număr zecimal de precizie dublă, ocupă 8 octeți.

Integer - valoare numerică întreagă scurtă, ocupă 2 octeți. Folosit pentru a reprezenta numere întregi în intervalul de la -32768 la 32767.

Long - lung întreg, ocupă 4 octeți. Folosit pentru a reprezenta numere întregi în intervalul -2147483648 până la 2147483647.

Unic - număr zecimal de precizie normală, ocupă 4 octeți. Folosit pentru a reprezenta numere negative în intervalul de la -3,402823E 38 la -1,401298E-45 și pentru a reprezenta numere pozitive în intervalul 1,401298E-45 la 3,402823E 38.

String - șir de lungime variabilă. Memoria ocupată liniar depinde de numărul de caractere din linie.

String * length - un șir de lungime constantă.

Varianta - valoare arbitrară. Este folosit pentru stocare a datelor orice fel. Ocupă 16 octeți, plus un octet pe caracter dacă valoarea este un șir.

Obiect - obiect. Folosit numai pentru a stoca referințe la obiecte, durează 4 octeți.

Variabil este o zonă de memorie numită concepută pentru a stoca date care se modifică în timpul execuției programului. Pentru a accesa conținutul acestei zone de memorie, este suficient să cunoașteți numele variabilei.

Un nume de variabilă (identificator) este un șir de caractere care distinge această variabilă de alte obiecte de program (identifică variabila din program).

Când numiți variabile, trebuie să urmați următoarele reguli:

Primul caracter al numelui trebuie să fie o literă. Caracterele rămase sunt litere și cifre (literele mari și mici sunt diferite). Puteți folosi simbolul „_”;

  • Nu puteți folosi caracterul „.” în nume;
  • numărul de caractere din nume nu trebuie să depășească 255;
  • Numele variabilei nu trebuie să coincidă cu cuvintele rezervate (de serviciu) ale limbii.

Următoarele caracteristici există în Visual Basic. declarații de tip variabil.

  1. Este posibil ca variabila să nu fie declarată deloc. În acest caz, tipul implicit va fi Variant. Cu toate acestea, acest lucru poate duce la o funcționare lentă și ineficientă a programului și la o utilizare irosită a memoriei.
  2. O variabilă poate fi declarată explicit folosind instrucțiunea de definire a variabilei:Dim Nume variabilă [ Ca tip de variabilă],
    de exemplu: Dim d as Long.
    Pentru a vă asigura că variabilele sunt întotdeauna declarate explicit, trebuie să utilizați opțiunea Opțiune explicită din secțiunea (General) (Declarații) a formularelor, modulelor sau claselor existente. După setarea acestei opțiuni, Visual Basic necesită declarații explicite de variabile și va genera un mesaj de eroare dacă utilizați o variabilă nedeclarată în cod.
  3. O variabilă poate fi declarată implicit:

    Folosind operatorul de declarare a tipului:

DefType Literă de început [- Litera de sfârșit];

În loc de OerType, este indicat unul dintre cuvintele cheie care indică tipul:

Deflnt (pentru tipul Integer);
- DefLng (pentru tip Long);
- DefSng (pentru tip Single);
- DefStr (pentru tipul String) și așa mai departe;

Tipul unei variabile poate fi uneori dedus din sufixul atașat numelui variabilei. Doar șase tipuri de variabile pot avea sufixe:

- % - tip Integer;
- & - tip Long;
- ! - tip unic;
- # - Tip dublu;
- $ - Tip șir;
- @ - Tipul monedei.

Dacă o variabilă al cărei tip este indicat implicit printr-un sufix apare de mai multe ori într-un program, atunci sufixul poate fi specificat o singură dată, prima dată când variabila este utilizată în program.

constante- cantități ale căror valori nu se pot modifica. La fel ca variabilele, constantele sunt declarate la începutul codului programului cu operatorul:

Const ConstantName = Valoare, de exemplu: Const Pi = 3,14159

Numai valorile constante și combinațiile acestora, inclusiv operatorii aritmetici și/sau logici, pot fi folosite ca valoare.

Matrice este un set de elemente de un anumit tip, fiecare având propriul său număr de serie, numit index.

O matrice este definită folosind operatorul:

DimVariableName([LowerLimitTo]
Limita superioară) .

De exemplu: Dim b (a la 15) - declarația unui tablou b format din 15 elemente.

Visual Basic, implicit, indexează elementele matricei începând de la zero, adică indexul 0 este primul element al matricei, indexul 1 este al doilea și așa mai departe. Operatorul Option Base 1 vă permite să setați indexarea matricei de la 1. Acest operator trebuie să fie în secțiunea (General) (Declarații).

În această parte, veți afla despre tipurile de date care pot fi manipulate de VBA, cum sunt stocate datele temporare în VBA, cum să combinați variabile și constante pentru a crea noi valori și cum să includeți funcții încorporate în expresii.

Lucrare de laborator nr 3. Prezentare generală a tipurilor de date VB. Variabile și

constante. Compatibilitatea tipului de date. Operator de atribuire. Operatori aritmetici și logici. Funcții încorporate

Scopul lecției: Cunoașteți tipurile de date. Să poată crea variabile. Fiți capabil să setați tipuri de date la variabile. Să poată crea constante denumite. Cunoașteți domeniul de aplicare

variabile și constante. Cunoașteți conversia tipului. Aflați cum să utilizați operatorul de atribuire. Cunoașterea operațiilor aritmetice și logice. Aflați cum să utilizați concatenarea șirurilor. Să poată utiliza funcțiile încorporate VBA. Materiale pentru lecție: MS Excel 2003.

Prezentare generală a tipurilor de dateVizualDe bază (VB)

Înainte de a afla despre variabile, ar trebui să înțelegeți cum VBA stochează diferite tipuri de informații. VBA, ca majoritatea altor sisteme de programare, împarte datele pe care le procesează în numere, date, text și alte tipuri. Tip de date(date tip) este un termen care se referă la anumite tipuri de date pe care VBA le stochează și le poate manipula. În tabel 9 tipuri generalizate Date VBA, arată câtă memorie ocupă fiecare tip, descrie pe scurt tipurile de date și oferă intervalul de valori pe care tipul le poate stoca.

Tabelul 9– tipuri de date VBA

Tastați numele

Dimensiunea inocteți

Numere întregi pozitive de la 0 la 255

Numere întregi de la -32768 la 32767

Numere întregi lungi de la -2147483648 la 2147483647

Numere reale de precizie obișnuită cu

punctul de plutire.

numere negative:

de la -3,402823E38 la -1,401298E-45.

numere pozitive:

de la 1.401298E-45 la 3.402823E38

Numerele reale de dublă precizie cu

punctul de plutire.

numere negative:

de la -1,79769313486232E308 la

4.94065645841247E-324.

numere pozitive:

de la 4.94065645841247E-324 la

1.79769313486232E308

Numere cu până la 15 cifre înainte de virgulă zecimală și 4 cifre după aceasta (unități monetare). De la -922337203685477,5808 la 922337203685477,5807

Pentru a stoca valori logice; poate conține numai valori adevărate sau false

Tastați numele

Dimensiunea inocteți

Descriere și interval de valori

Pentru a stoca o combinație de informații despre dată și oră. Intervalul de date poate fi de la 1 ianuarie 100 până la 31 decembrie 9999. Interval de timp de la 00:00:00 la 23:59:59

Șir (șir de lungime variabilă)

10 octeți + Folosit pentru a stoca text. Lungimea șirului poate varia de la 0 caractere la (aproximativ) 2 miliarde de caractere

Şir

lungime fixă)

Lungime Folosit pentru a stoca text. Pot șiruri de caractere (unul conține de la unu la (aproximativ) 65400 de octeți per caracter)

16 octeți + 1 octet/caracter

Tipul Variant poate stoca orice alt tip de date. Intervalul pentru datele Variant depinde de datele reale care sunt stocate. În cazul textului, intervalul corespunde tipului șirului de caractere; în cazul numerelor, intervalul este același cu cel al tipului Double

Folosit pentru a accesa orice obiect recunoscut de VBA. Stochează adresa unui obiect în memorie

În tabel 9 ați dat peste o reprezentare a datelor numită notă exponențială(științific notaţie), care este folosit pentru a afișa numere foarte mari și foarte mici într-un format compact pe dispozitive externe (monitor, imprimantă etc.). În notație exponențială, valorile sunt scrise fără zerouri înainte sau finale și au doar o cifră la stânga zecimalei. Numărul este înmulțit cu 10 într-o anumită măsură pentru a arăta unde este de fapt zecimala.

VBA are șase tipuri de date numerice diferite: octet, Întreg, Lung, Singur, DublaȘi Valută. Tipurile de date numerice sunt folosite pentru a stoca (și manipula) numere în diferite formate, în funcție de tipul specific.

De obicei, un program VBA (ca orice alt program) „ia” decizii verificând dacă diferite condiții sunt adevărate. Pentru a facilita testarea condițiilor și pentru a se asigura că rezultatele acestor teste sunt stocate, VBA oferă un tip de date boolean. Valori booleene AdevăratȘi Fals numit boolean(boolean) valori. Numele lor este asociat cu numele matematicianului care a dezvoltat sistemul logicii matematice. Tipul de date boolean VBA se mai numește și boolean. Tipul boolean VBA necesită doi octeți de memorie și poate avea una dintre cele două valori: Adevărat sau Fals. Dacă afișați tipul boolean pe ecran, VBA îl convertește automat într-un șir care conține fie cuvântul Adevărat, sau Fals. Valorile booleene se obțin ca

rezultatul operației de comparare.

VBA folosește tipul Data pentru stocarea datelor și orelor. Nu trebuie să vă faceți griji cu privire la modul în care VBA stochează datele de tip Data, – puteți pur și simplu să afișați, să salvați sau să manipulați datele; VBA gestionează automat toate detaliile conversiei unui număr secvenţial în an, lună, zi şi oră. tip VBA Data este un tip date consecutive(serial Datele). Datele consecutive stochează data ca un număr de zile de la o dată de începere. Data de bază pentru tipul VBA Data este 30 decembrie 1899. VBA folosește numere negative pentru a reprezenta date înainte de 30/12/1899 și numere pozitive pentru a reprezenta datele după 30/12/1899. Numărul 0 reprezintă data însăși, 30.12.1899. Conform acestei scheme, 1 ianuarie 1900 se scrie cu numărul 2 (1 ianuarie 1990 este la 2 zile după 30 decembrie 1899), dar numărul –2 este data de 28 decembrie 1899 (cu două zile înainte de 30 decembrie 1899). ). Pentru a verifica acest lucru, scrieți o procedură simplă.

Exercitiul 1. Scrieți o procedură care imprimă un mesaj de dată.

Pentru aceasta:

Scrieți o procedură (lista 3):

Listare 3 ProcedurăDataTest

1 Sub DataTest()

2 Dim d As Data 3

Ca rezultat al acestei proceduri, data de bază va fi afișată pe ecran (Fig. 15).

Orez. 15 Într-o valoare de dată secvențială, partea întreagă (numerele din stânga zecimalei) este numărul total de zile de la data de bază. Data secvenţială VBA poate avea cifre la dreapta zecimalei; aceste numere indică ora din zi ca parte a zilei. O oră este 1/24 dintr-o zi (aproximativ 0,0416. La fel, un minut este 1/1440 dintr-o zi, iar o secundă este 1/86400 dintr-o zi. Puteți scădea o dată dintr-o alta, puteți adăuga la o dată sau scădeți numerele pentru a-i schimba valorile. De exemplu, dacă trebuie să determinați numărul de zile dintre două date, pur și simplu scădeți data anterioară din data ulterioară. Deoarece acestea sunt valori precum Data, VBA „știe” că scopul calculului este obținerea diferenței de zile dintre aceste două date. De asemenea, dacă trebuie să determinați o dată la 60 de zile după o dată dată, adăugați pur și simplu 60 la acea dată.

VBA are mai multe rutine încorporate (descrise în această parte) pentru a extrage separat anul, luna, ziua, orele, minutele și secundele din tip variabil Data.

Se apelează orice date text salvate într-un program VBA linii(siruri de caractere). Șirurile în VBA sunt salvate folosind tipul de date Şir. Șirurile își primesc numele deoarece datele text sunt de obicei tratate ca șiruri de caractere. Linia poate conține caractere text orice tipuri: litere ale alfabetului, numere, semne de punctuație sau diferite simboluri. Există două categorii de șiruri: șiruri de lungime variabilă, care cresc sau se micșorează în dimensiune și șiruri de lungime fixă, a căror dimensiune rămâne mereu aceeași. Toate șirurile din VBA sunt șiruri de lungime variabilă, cu excepția cazului în care specificați o lungime fixă. Majoritatea datelor introduse de utilizator (în casete de dialog, celule din foaia de lucru) este șir de date. În plus, deoarece puteți afișa doar text pe ecran, toate celelalte tipuri de date trebuie convertite în date șir înainte de a le putea afișa pe ecran. Multe proceduri VBA încorporate (cum ar fi Msgbox) folosesc date șir în toate sau unele dintre argumentele lor.VBA oferă mai mulți operatori pentru concatenare(înlănţui), adică pentru a uni și a compara șiruri. VBA are, de asemenea, câteva rutine încorporate pentru a vă ajuta să extrageți subșiruri din șiruri mai lungi, să găsiți caractere sau cuvinte într-un șir, să schimbați majusculele literelor dintr-un șir și așa mai departe. Această parte descrie operatorii de șiruri VBA și procedurile de manipulare a șirurilor VBA.

Tip de date Variantă este un tip de date special care poate stoca oricare dintre tipurile enumerate în tabel. 9, cu excepția tipului Obiect. VBA folosește tipul Variantă pentru toate variabilele, cu excepția cazului în care declarați în mod explicit tipul variabilei, așa cum este descris mai târziu în această secțiune. Tip de date Variantă preia caracteristici de un anumit tip pe care le dețin în prezent. De exemplu, dacă tipul de date Variantă conțin șir de date Variantă acceptă caracteristici de tip String. Dacă tipul de date Variantă conțin date numerice, Variantă ia caracteristici de un anumit tip numeric, de obicei - Dubla, deși tipuri Variantă poate avea, de asemenea, caracteristici de tip Întreg, Lung, Singur sau Valută. Deși tipurile Variantă Convenabile și elimină o parte din munca procedurilor de scriere, necesită mai multă memorie decât orice alt tip de date, cu excepția șirurilor mari. În plus, operații matematice și operații de comparare pe tip de date Variantă sunt mai lente decât operațiuni similare pe orice alt tip de date. În general, ar trebui să evitați utilizarea variabilelor Variantă: dacă te vei baza pe variabile de tip Variantă, este posibil să vă dezvoltați un obicei de programare neglijentă și să găsiți și să remediați erorile în programe.

Variabile

Variabil(variabil) este numele pe care programatorul îl dă zonei

memoria computerului folosită pentru a stoca un anumit tip de date. Variabilele VBA pot stoca oricare dintre tipurile de date enumerate în tabel. 9.

Identificator(identificator) este numele pe care îl dați elementelor din procedurile și modulele pe care le creați, cum ar fi variabilele. Termenul de identificare se bazează pe faptul că numele pe care le creați identifică locații specifice de memorie (în cazul unui nume de variabilă), grupuri de instrucțiuni (în cazul unui nume de macro sau de procedură) sau alte elemente de program.

Nume de variabile nu este „sensibil” la starea de înregistrare(nu caz- sensibil), adică scrierea numelui variabilei cu majuscule sau cu litere mari nu contează.

Cel mai simplu mod de a crea o variabilă este să o folosești într-o instrucțiune VBA. VBA creează o variabilă și rezervă memorie pentru locația de memorie a variabilei prima dată când acea variabilă apare într-o instrucțiune (de obicei, o instrucțiune care stochează o valoare a datelor într-o variabilă).

Stocarea unei valori de date într-o variabilă este apelată atribuirea unei variabile(atribuire cel variabil sau realizarea un misiune). Atribuirea se realizează folosind operatorul de atribuire, reprezentat prin semnul egal (=). Următorul rând este un exemplu de atribuire a unei valori unei variabile:

Această instrucțiune stochează valoarea numerică 25 în locația de memorie specificată de numele variabilei MyVar.

Crearea unei variabile utilizând-o într-o instrucțiune este numită declarație implicită a variabilei(implicit variabil declaraţie). Folosind o variabilă într-o declarație, implicit spuneți (declarați) VBA că doriți să creați acea variabilă. Toate variabilele pe care VBA le creează prin declararea implicită a variabilei au un tip de date Variantă. Declarația implicită a variabilelor este cunoscută și sub denumirea de declarație a variabilei "pe fuga"(pe- cel- a zbura).

Declarațiile de variabile implicite sunt convenabile, dar au probleme potențiale. De exemplu, când aveți o variabilă numită MyVarși veți face o greșeală în numele mai târziu când introduceți Mvar. În funcție de locul în care apare numele incorect al variabilei în codul dvs., VBA poate arunca o eroare de rulare sau pur și simplu poate crea o nouă variabilă. Dacă VBA creează o nouă variabilă, este posibil să aveți probleme care sunt foarte greu de detectat.

Din aceste și alte motive, VBA vă oferă posibilitatea de a face explicit(explicit) declararea variabilelor.

Pentru a declara în mod explicit variabile, utilizați instrucțiunea VBA Dim cu următoarea sintaxă:

Dim Nume1 [, Nume2 ]

numeN este orice identificator de variabilă valid. Toate variabilele pe care le creați cu această formă a cuvântului cheie Dim, sunt variabile

tip Variantă.

O variabilă poate fi declarată o singură dată într-o procedură sau modul separat. Deoarece instrucțiunea Dim vine înaintea oricăror instrucțiuni care folosesc de fapt variabila, o puteți plasa oriunde în procedură. În practica de programare, este o regulă generală să colectezi toate declarațiile explicite de variabile într-un singur loc la începutul unei proceduri.

Sarcina 2. Modificați procedura Salut Excel din partea anterioară, folosind o definiție explicită a variabilei.

Pentru aceasta:

b schimbați procedura Salut Excel (Lista 4):

Listare 4 ProcedurăSalut Excel

1 sub HelloExcel()

2 Dim HelloMsg " variabila pentru MsgBox 3

Operator Dim (la linia 2) din Lista 4 declară o variabilă Bună ziuaMsg și îi rezervă o zonă de memorie (în această subrutină Bună ziuaMsg este o variabilă de tip Variantă). Rândul 2 include un comentariu final care indică scopul acestei variabile. Linia 4 atribuie unei variabile Bună ziuaMsg linii "Buna ziua,excela!" . În continuare (pe linia 5) variabila HelloMsg este folosită ca unul dintre argumentele procedurii MsgBox. Funcţie MsgBox afișează aceeași casetă de mesaj ca înainte. Cu toate că MsgBox primește acum primul argument de la o variabilă, această variabilă conține aceleași informații despre șir care au fost scrise anterior (în listele părții anterioare) direct în operator MsgBox.

Toate variabilele din VBA, indiferent dacă sunt declarate implicit sau explicit, sunt Variante, cu excepția cazului în care specificați tipul variabilei în instrucțiunea care o declară. Pentru anunt dactilografiat variabilă și tipul acesteia folosind operatorul Dim adăugați cuvântul cheie As după variabilă și apoi introduceți numele tipului de date pentru acea variabilă. Iată sintaxa generală pentru utilizarea operatorului Dim la declararea variabilelor tastate:

Dim varnamel [, varname2 ]

varnameN reprezintă orice nume valid de variabilă VBA, a tip N – oricare dintre numele tipurilor de date VBA.

Odată ce o variabilă tipizată este declarată, indiferent dacă variabila este declarată explicit sau implicit și cum este specificat tipul, acea variabilă păstrează același tip atâta timp cât există. Nu puteți redeclara o variabilă sau redefini tipul acesteia.

Cu o declarație implicită, puteți specifica și tipul variabilei prin adăugare

caracter special numit simbol definiție tip(tip- definiție caracter), până la sfârșitul numelui variabilei. În tabel Figura 10 listează simbolurile definiției tipului VBA și tipurile pe care le reprezintă. Tabelul 10– Simboluri de definire a tipului

Tip

Simbol de definiție

Tip

Simbol definiții

ÎntregLung

ValutăDubla

Caracterele de definire a tipului pot apărea numai la sfârșitul unui nume de variabilă. Deși ar trebui să știți ce simboluri de definire a tipului sunt și cum sunt ele utilizate, rareori trebuie să le utilizați — folosirea instrucțiunii Dim cu cuvântul cheie As este mult mai ușor și mai clar. Majoritatea programatorilor VBA nu folosesc simboluri de definire a tipului.

Sarcina 3. Modificați procedura Salut Excel din sarcina 3, folosind definiția unei variabile tipizate.

Pentru aceasta:

b schimbați procedura Salut Excel (Lista 5):

Listare 5 ProcedurăSalut Excel

1 sub HelloExcel()

2 Dim HelloMsg ca șirul 3

    HelloMsg = "Salut Excel!"

    Titlu$ = „Primul meu program”

    MsgBox HelloMsg, Title$

Această versiune a procedurii Salut Excel funcționează la fel ca și cele anterioare. Rândul 1 conține declarația de procedură. Pe linia 2 declarația Dim declară în mod explicit o variabilă Bună ziuaMsg. Din moment ce operatorul Dim include cuvântul cheie La fel de și tastați numele Şir, variabil Bună ziuaMsg are tip Şir. Linia 4 atribuie textul mesajului unei variabile șir Bună ziuaMsg. Linia 5 declară implicit o variabilă Titlu$și, în același timp, atribuie variabilei textul titlului casetei de mesaj. Deoarece numele variabilei Titlu$ se termină cu un caracter de definire a tipului pentru un șir, această variabilă este, de asemenea, de tip String. În cele din urmă, linia 6 folosește operatorul MsgBox pentru a afișa o casetă de mesaj; în această declarație, atât textul mesajului, cât și bara de titlu a ferestrei sunt variabile: Bună ziuaMsg Și Titlu$, respectiv.

După adăugarea unui simbol de definire a tipului la o variabilă, trebuie să includeți un simbol de definire a tipului de fiecare dată când utilizați numele variabilei.

Indiferent dacă sunt declarate variabile de tip Şir folosind operatorul Dim sau prin adăugarea caracterului de definire a tipului $, variabilele șir pe care le creați sunt implicit șiruri de lungime variabilă.

Variabilele șirului de lungime variabilă își schimbă lungimea în funcție de lungimea șirului stocat de variabilă. Uneori poate fi necesar să utilizați linia lungime fixă(fix- lungime). Corzile cu lungime fixă ​​au întotdeauna aceeași lungime. Următoarea linie arată sintaxa generală pentru crearea unui șir de lungime fixă:

Dim varname Ca șir * N

varname este orice nume de variabilă valid, a N – este orice număr de la 1 la 65400 de caractere

Domeniu de aplicare: Disponibilitate variabilă

Termen domeniul de aplicare(domeniul de aplicare) se referă la domeniul de aplicare al unei proceduri sau al unui modul VBA în care o anumită variabilă, procedură sau alt identificator este accesibilă. Această parte descrie două niveluri de bază de domeniu: procedural și modular. Variabilele, procedurile și identificatorii care sunt accesibile numai în cadrul unei proceduri au un domeniu de aplicare la nivel procedural, iar cei care sunt accesibile pentru toate procedurile dintr-un modul au domeniul de aplicare la nivel de modul.

O variabilă declarată într-o procedură este accesibilă numai prin acea procedură. De exemplu, variabilă Bună ziuaMsg de la rândul 2 din Lista 5, este accesibil doar în procedură Salut Excel; nicio altă procedură nu are acces la această variabilă.

Prin urmare, ei spun că variabila Bună ziuaMsg Are domeniul de aplicare la nivel procedural(procedură- nivel domeniul de aplicare). De fapt, variabila Bună ziuaMsg există doar în timp ce VBA execută procedura Salut Excel.

Sarcina 4. Creați două proceduri al căror domeniu de aplicare este variabilele la nivel procedural.

Pentru aceasta:

b introduceți două proceduri finalizate (Lista 6):

Listare 6 ProcedurăSalut Excel

1 sub HelloExcel()

2 Dim HelloMsg ca șirul 3

    HelloMsg = "Salut Excel!"

    MsgBox HelloMsg, „Primul meu program”

8 Sub HelloDave()

9 Dim HelloMsg ca șir 10

    HelloMsg = "Bună ziua, Excel!"

    MsgBox HelloMsg, „O altă casetă de mesaje”

Rândurile 1–6 conțin aceeași procedură Salut Excel din Lista 4, care funcționează exact la fel. O procedură a fost adăugată la modul Bună,Dave, care începe la rândul 8 din Lista 6. Procedură Bună,Dave funcționează la fel ca procedura Salut Excel, afișează doar un mesaj text și un titlu diferit în caseta de dialog. Pe liniile 2 și 9, ambele proceduri folosesc operatorul Dim pentru a declara local variabile cu numele Bună ziuaMsg.

Uneori este necesar ca mai multe proceduri să aibă acces la aceeași variabilă. De obicei, este mai eficient să calculați o valoare o dată, să o stocați într-o variabilă și apoi să utilizați acea variabilă în mai multe proceduri decât să calculați aceeași valoare din nou și din nou.

VBA vă permite să declarați variabile care sunt accesibile mai multor proceduri. Când o variabilă este disponibilă pentru toate procedurile dintr-un modul, se spune că acea variabilă are domeniu de aplicare nivel modular(modul nivel). VBA limitează domeniul de aplicare al unei variabile la nivel de modul la modulul în care este declarată variabila (VBA oferă modalități de a extinde domeniul de aplicare a unei variabile și mai mult; aceste metode sunt descrise în continuare).

Pentru a face o variabilă disponibilă pentru toate procedurile dintr-un anumit modul, plasați instrucțiunea Dim pentru aceasta la începutul modulului înaintea oricărei declarații de procedură.

Exercitiul 1

Creați două proceduri și o singură declarație de variabilă la nivel de modul (mutați instrucțiunea la linia 1 Dim cu variabila Bună ziuaMsg eliminând liniile 2 și 9 din Lista 6).

Numele variabilei trebuie să fie unic în domeniul său de aplicare. Cu toate acestea, este posibil să aveți variabile cu același nume activate diferit niveluri de aplicare. Când variabilele au același nume, dar domenii diferite, VBA folosește variabila cu cel mai mult local(local) domeniul de aplicare.

Necesită declararea explicită a variabilelor

Deși declararea implicită a variabilelor (declararea variabilelor pur și simplu prin utilizarea lor) este convenabilă, are unele probleme. Atunci când variabilele sunt declarate implicit, există riscul de a crea din neatenție o variabilă nouă atunci când ar trebui să utilizați una existentă sau de a folosi o variabilă existentă atunci când utilizatorul intenționează să creeze una nouă. Ambele situații duc la erori în cod care sunt foarte greu de urmărit.

Pentru a facilita identificarea erorilor legate de declarațiile implicite de variabile în orice moment, VBA oferă comanda OpțiuneExplicit. Folosind OpțiuneExplicit VBA cere ca toate variabilele să fie declarate (folosind operatorul Dim) înainte de a le folosi în modul.

Pentru a seta modul în care VBA necesită declarații explicite pentru toate variabilele dintr-un modul, adăugați comanda OpțiuneExplicit la zona de declarare a modulului, adică la începutul modulului înaintea oricărei declarații de variabilă sau de procedură. Comenzi ca OpțiuneExplicit, sunt numite directivele compilatorului(compilator directive).

Echipă OpțiuneExplicit afectează doar modulul în care apare. Dacă proiectul care conține acest modul conține și alte module, acestea nu sunt afectate de comandă OpțiuneExplicit. Trebuie să includeți comanda Option Explicit în fiecare modul care necesită declarații explicite de variabile.

De la includere OpțiuneExplicitîn toate modulele este foarte util, VB Editor oferă o modalitate de a include automat această comandă în fiecare modul nou atunci când îl creați. Pentru ca VB Editor să adauge comanda OpțiuneExplicit Pentru fiecare modul nou, urmați acești pași:

ь selectați o comandă Instrumente/ Opțiuni (Serviciu/Opțiuni); Editorul VB afișează caseta de dialog Opțiuni;

ь faceți clic pe filă Editor (Editor) pentru a afișa opțiunile de editare, dacă este necesar;

ь bifați caseta de selectare Solicita Variabil Declaraţie (Descrierea explicită a variabilelor);

ь selectați Bine. Editorul VB închide caseta de dialog Opțiuni.

Exercițiul 2

Setați comanda la auto-activare Opțiune Explicit în fiecare modul nou când este creat.

constante

Constant(constant) este o valoare dintr-un program VBA care nu se modifică. Exemplele de proceduri deja prezentate mai sus folosesc constante șir cum ar fi "Buna ziua,excela!" Și „Primul meu program”. Se numesc constante ca acestea constante literale(literal constante), deoarece valoarea literală este scrisă direct în cod.

De asemenea, puteți scrie constante numerice literale și date în codul VBA; exemple de constante numerice literale includ numere 25 , 3.14 . Exemplele de constante de dată literale includ datele #12/31/96# sau #28 octombrie 1997#(Veți afla mai multe despre scrierea constantelor date mai târziu în această parte).

VBA vă permite să creați constante numite(numit constante). O constantă numită, ca o variabilă, are un nume dat; acest nume reprezintă o valoare specifică imuabilă. Cu toate acestea, spre deosebire de o variabilă, valoarea unei constante numite nu se schimbă niciodată. Următoarea linie arată sintaxa generală pentru declararea constantelor numite:

Const Nume = valuel [operator Nume2… ] _

[, patheZ =valoare3 [operator Nume4 ] … ]

numeN reprezintă orice identificator valid, valoarea N – orice valoare de date: numerică, șir sau dată, a operator – o operație aritmetică sau de comparare între două nume de constante descrise anterior. Rândurile următoare arată mai multe declarații ale constantelor numite: Const Pi = 3.14, text = "Bună Excel!"

Const Pi2 = 2*Pi

Domeniul de aplicare al constantelor

Ca și în cazul variabilelor, puteți declara constante numite în proceduri sau în zona de declarare la începutul unui modul. O constantă declarată într-o procedură are domeniul de aplicare la nivel procedural, în timp ce o constantă declarată în domeniul de aplicare a declarației unui modul are domeniul de aplicare la nivel modular. Constantele numite urmează aceleași reguli de domeniu ca și variabilele.

Scrierea constantelor literale

Când scrieți constante de șir literal în codul VBA, urmați aceste reguli:

ь constantele șirului de caractere trebuie să fie cuprinse între ghilimele duble (");

ь este o constantă șir goală (numită linia zeronul şir sau gol şir) se notează prin două ghilimele duble fără nimic între ele ("");

b Constanta șirului trebuie să fie toate pe aceeași linie.

Când scrieți constante numerice literale în codul VBA, urmați aceste reguli:

ь constantele numerice trebuie să fie formate numai din caractere numerice de la 0 la 9;

b o constantă numerică poate începe cu un semn (–) și poate conține un punct zecimal;

b Puteți utiliza notația exponențială pentru constante numerice.

VBA recunoaște constantele date în oricare dintre mai multe formate diferite; Trebuie să plasați toate constantele date între semnele lire sterline (#). Următoarele rânduri arată unele dintre formatele constante de dată pe care VBA le recunoaște: #2-5-97 21:17:34# #5 februarie 1997 21:17:34# #Mag-31-97# #15 aprilie 1997#

Indiferent de care dintre următoarele formate este scrisă o constantă literală de tip Date, VBA reformatează constanta (când punctul de inserare este eliminat din linie după scrierea constantei) pentru a se conforma cu unul dintre următoarele două formate, în funcție de dacă Constanta dată conține informații despre oră: #2/5/1997 9:17:34 PM# #2/5/1997# Există doar două constante booleene corecte: Adevărat și Fals.

Specificarea unui tip constant

Când declarați o constantă numită sau utilizați o constantă literală, VBA „crede” că valoarea reprezentată de acea constantă are

tipul de date care se potrivește cel mai mult cu expresia atribuită constantei.

În VBA, puteți seta tipul unei constante. Sintaxa generală pentru declararea unei constante tipizate este:

Const Nume La fel de tip = valoare[, Nume La fel de tip = valoare]

Nume este orice nume constant valid, tip – numele oricărui tip de date VBA și valoare – valoarea pe care o atribui constantei.

Următoarea linie ilustrează declararea corectă a unei constante cu un anumit tip:

Const Pi ca dublu = 3,14

Internconstante

VBA oferă mai multe constante interne(intrinsec constante), numit si constante predefinite(predefinite constante). O constantă internă este o constantă numită care a fost definită de dezvoltatorii VBA. Constantele interne definite de VBA încep toate cu litere vb pentru a indica faptul că sunt definite de limbajul Visual Basic pentru aplicații (sau Visual Basic). De exemplu, constante vbOKOnly, vbOKAnulare sunt definite de VBA. Constantele interne ale Excel 2002 încep cu litere xl pentru a clarifica faptul că sunt definite de Excel. Datorită constantelor interne, este mai ușor să utilizați unele dintre procedurile încorporate ale VBA, cum ar fi instrucțiunea MsgBox, despre care știți deja și operatorul InputBox, care sunt discutate mai târziu în această parte.

Afișează ferestrele de mesaje. Primirea datelor de la utilizator

Primirea datelor de la utilizator, stocarea lor într-o variabilă și afișarea rezultatelor acțiunilor efectuate asupra acesteia sunt elementele de bază necesare pentru a scrie proceduri interactive. Interactiv(interactiv) procedura este o procedură care face schimb de informații cu utilizatorul, adică procedura interacționează cu utilizatorul prin afișarea mesajelor și primirea intrărilor.

Funcţie MsgBox afișarea unei casete de mesaj are următoarea sintaxă:

MsgBox(Prompt [, Butoane ] [, Titlu ] [, HelpFile , Context ])

argument Prompt MsgBox afișează această linie într-o casetă de dialog; trebuie să ofere întotdeauna un argument Prompt, deoarece aceasta este argument necesar(necesar argument). Argument Butoane (argument opțional), este o expresie numerică care determină butoanele și mesajele afișate în caseta de dialog. Argument Titlu reprezintă orice valoare de șir (literală, constantă sau variabilă). MsgBoxTitlu, VBA se afișează în bara de titlu a casetei de dialog MsgBox cuvânt " Microsoftexcela" . Argument HelpFile – fișier de ajutor, Context – secțiunea din fișierul de ajutor. Textul mesajului poate fi inclus între paranteze, dar parantezele sunt opționale atunci când funcția MsgBox

folosit ca operator.

Datele introduse de utilizator sunt apelate date de intrare(intrare). Pentru a primi informații de la utilizatorul unei proceduri, utilizați funcția InputBox. Funcţie(funcţie) este un tip special de procedură VBA care returnează o valoare. Funcţie InputBox afișează o casetă de dialog care conține text care solicită utilizatorului să introducă o anumită valoare și o casetă de text pentru introducerea acelei valori. Caseta de dialog afișată InputBox, contine si butoane de comanda BineȘi Anulare.

Funcţie InputBox are următoarea sintaxă:

stringvar=InputBox( Prompt[, Titlu] [, Mod implicit] [, XPos] [, YPos] _

[, HelpFile, Context])

Aici stringvar reprezintă orice variabilă care poate stoca un șir (sau o variabilă de tip Şir, sau - Variantă). Argument Prompt reprezintă orice valoare de șir (literală, constantă sau variabilă). InputBox afișează acest șir ca prompt într-o casetă de dialog; trebuie să ofere întotdeauna un argument Prompt, deoarece aceasta este argument necesar; toate celelalte sunt optionale. Argument Titlu este al doilea argument pentru InputBox. Titlu reprezintă orice valoare de șir (literală, constantă sau variabilă). InputBox afișează textul acestui șir în bara de titlu a casetei de dialog. Dacă omiteți argumentul Titlu, VBA se afișează în bara de titlu a casetei de dialog InputBox cuvânt " Microsoftexcela" . Argument Mod implicit – o expresie șir afișată în câmpul de introducere ca implicită dacă utilizatorul nu introduce un alt șir; dacă acest argument este omis, câmpul de intrare este gol. Argumente XPos Și YPos pot fi orice expresii numerice. Aceste argumente vă permit să specificați unde în fereastra activă apare fereastra de introducere și sunt coordonatele colțului din stânga sus al casetei de dialog: XPos – distanta orizontala de la marginea din stanga a ferestrei; YPos – aceasta este distanța verticală de la marginea superioară a ferestrei. Ambele distanțe sunt măsurate în twips ( twips); Un twip este egal cu 1/20 de punct (un punct este măsurarea unui font imprimat). Deoarece un punct este de 1/72 de inch, un twip este de aproximativ 0,0007 inch. Ultimele două argumente opționale ale funcției InputBox- Acest HelpFile Și Context. Ele au același scop ca și argumentele funcției similare MsgBox.

Utilizarea argumentelor funcției numite

După cum probabil ați observat, este ușor să omiteți accidental virgulele sau să rearanjați valorile argumentelor în funcții care au argumente opționale sau argumente multiple, în ciuda ajutorului proprietății Auto Rapid (Informatie scurta) Editor VB. Omiterea sau rearanjarea argumentelor din lista de argumente a unei funcții poate duce la erori de nepotrivire de tip. Este posibil ca eroarea (și mai gravă) să nu fie detectată. Pentru a preveni erorile de programare și pentru a facilita utilizarea funcțiilor care au argumente opționale, VBA oferă o alternativă la listarea valorilor în lista de argumente într-o anumită ordine. De asemenea, puteți transfera

valorile argumentului funcției folosind argumente numite(numit argumente) funcții. Rândurile următoare arată două afirmații MsgBox, care au același rezultat; Prima instrucțiune folosește metoda obișnuită de enumerare a argumentelor, iar a doua folosește metoda argumentelor numite:

MsgBox AnyMsg, AnyTitle

MsgBox Prompt:=AnyMsg, Title:=AnyTitle

Simbolul care atribuie o valoare unui argument numit (:=) nu este exact același cu operatorul obișnuit de atribuire (=). Dacă omiteți două puncte (:) când atribuiți o valoare unui argument numit, VBA nu va detecta neapărat o eroare de sintaxă, dar poate să nu interpreteze corect instrucțiunea. Când VBA execută această instrucțiune, afișează una dintre mai multe erori posibile de rulare, adesea o eroare de nepotrivire de tip.

Nu puteți combina argumente numite cu o listă de argumente obișnuită în același apel de funcție. Trebuie să utilizați fie argumente numite, fie o listă de argumente obișnuite pentru fiecare apel de funcție individual.

Sarcina 5. Scrieți o procedură care calculează aria unui cerc, dar obține raza cercului de la utilizatorul procedurii.

Pentru aceasta:

Introduceți procedura (Listing 7):

Lista 7 – Primirea datelor de intrare folosind un operatorInputBox

    Const Pi As Single = 3,14 "aproximație a valorii pi

    Dim CircleArea As Single " salvează aria calculată a cercului 3

4 Sub List3_07()

    Const BoxTitle = „Aria cercului"!}

    Dim Raza ca single, Temp ca șir 7

    Temp = InputBox ("Introduceți raza " & Chr(13) & "cerc", BoxTitle)

    Raza = CSng(Temp)

    CircleArea = Pi * Raza * Raza

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Rândurile 1 și 2 din Lista 7 declară o constantă Pi și o variabilă CircleArea nivel modular. Rândul 4 conține declarația de procedură reală. Linia 5 declară o constantă de nivel procedural BoxTitle; această constantă are doar acces local în procedură List3_07. Pe linia 8 instrucțiunea apelează funcția InputBox. Acesta afișează primul argument ca text într-o casetă de dialog, solicitând utilizatorului să introducă valori de un anumit tip. În această declarație InputBox afișează textul „Introduceți raza cercului” (funcția Chr(13) - săriți simbolul la linie nouă) pentru a spune utilizatorilor procedurii ce valoare ar trebui să introducă. InputBox folosește al doilea argument,

12 End Sub

reprezentată printr-o constantă BoxTitle, ca titlu al casetei de dialog. La executarea instrucțiunii InputBox este afișată o casetă de dialog (Fig. 16)

Aria unui cerc

Introduceți raza cercului

Orez. 16 Utilizatorul introduce un număr în caseta de text și selectează un buton de comandă Bine sau Anulare pentru a închide caseta de dialog la fel ca orice altă fereastră Windows. Ori de câte ori apelați orice funcție, trebuie să utilizați cumva valoarea returnată a funcției. Se apelează valoarea returnată de funcție rezultatul funcției(funcţie rezultat). După cum se arată pe linia 8 în cazul funcției InputBox, al cărui rezultat este atribuit unei variabile Temp. Rezultatul funcției InputBox este întotdeauna un șir (de aceea variabila Temp a fost anunțat ca Şir). Din moment ce variabila Temp a fost declarat în mod explicit ca Şir, valoarea șirului trebuie convertită într-o valoare numerică înainte de a putea fi utilizată în calcule matematice. Linia 9 din Lista 7 face exact asta, folosind funcția VBA încorporată CSng pentru a converti intrarea utilizatorului într-un număr de tip Single.

Expresii înVizualDe bază

Expresie(expresie) este o valoare sau un grup de valori care exprimă o singură valoare. Fiecare expresie calculat la(sau are rezultatul) unui sens separat. Expresiile constau din una sau mai multe dintre următoarele părți: constante (literal sau numit), variabile (orice tip de date), semne operator, matrice, elemente de matrice, funcții.

Toate expresiile au ca rezultat o singură valoare a unui anumit tip de date. Expresiile pot avea ca rezultat, de asemenea, una dintre valorile speciale Gol(o variabilă neinițializată de tip Variantă sau rezultatul unei expresii care conține o variabilă de tip neinițializată Variantă) sau Nul(Nul reprezintă o expresie care conține date nevalide). Când utilizați un caracter într-o expresie, elementele de date (variabile sau constante) pe care se efectuează acțiunea sunt numite operanzi(operanzi); majoritatea operațiilor necesită doi operanzi.

Compatibilitatea tipului de date. Conversie automată a datelor

Nu toate tipurile de date sunt compatibile între ele și nu puteți utiliza tipuri de date incompatibile în aceeași expresie. De exemplu, adăugarea aritmetică a unui șir la un număr nu are sens, deoarece o astfel de expresie nu are sens și VBA nu o poate evalua.

Multe tipuri de date sunt compatibile între ele. De exemplu, poți

combina diferite tipuri de date numerice în aceeași expresie; VBA efectuează automat conversiile de tip necesare pentru diferite tipuri numerice. De asemenea, VBA poate converti uneori automat alte tipuri de date, astfel încât toate tipurile dintr-o expresie să fie compatibile, deși acest lucru nu este întotdeauna posibil. Este foarte important să controlați și să cunoașteți tipul expresiei, deoarece dacă expresiile conțin tipuri incompatibile, VBA aruncă o eroare de rulare - eroare nepotrivire de tip(tip- nepotrivire). Atunci când procesează o expresie care conține diferite tipuri de date, VBA „încearcă” mai întâi să rezolve orice diferențe de tip prin conversia valorilor din expresie în tipuri de date compatibile. Dacă conversia tipului nu reușește să rezolve orice diferență, este afișată o eroare de rulare și procedura se oprește. De exemplu, în expresia 25 & Computer Science, VBA efectuează întotdeauna concatenarea șirurilor (unând două șiruri împreună), indiferent de tipurile de variabile; rezultatul este tipul Şir; această expresie nu provoacă niciodată o eroare de nepotrivire de tip.

De obicei, VBA convertește toate tipurile de date numerice dintr-o expresie la tipul de cea mai mare precizie și apoi dă acel tip rezultatului expresiei. De exemplu, dacă expresia conține valori numerice cu tipuri ÎntregȘi Singur, rezultatul expresiei este tipul Singur– tipul de cea mai mare precizie în această expresie. Dacă atribuiți rezultatul unei expresii numerice unei variabile cu o precizie mai mică decât tipul real al rezultatului expresiei, VBA rotunjește rezultatul expresiei până când precizia acesteia se potrivește cu tipul așteptat. De exemplu, dacă atribuiți o expresie numerică care are ca rezultat un număr de tipuri Dubla, tip variabil Întreg, VBA rotunjește numărul de precizie dublă pentru a tasta Întreg.

Când convertiți un număr într-un șir, VBA creează un șir care conține toate cifrele acelui număr și o zecimală (dacă numărul are una). Numărul 3413.72 (punctul este folosit pentru a scrie un număr în cod), de exemplu, este convertit în șirul „3413.72”. Dacă numărul este foarte mare sau foarte mic, VBA poate crea o reprezentare șir a numărului în notație științifică; de exemplu, numărul 0,0000000004927 este convertit în șirul „4.927E–11”.

VBA poate converti un șir într-un număr numai dacă șirul conține o reprezentare simbolică a numărului în notație zecimală sau științifică. Șirurile „988.6”, „812”, „-186.7”, „1,ZE10” reprezintă numere, iar VBA le poate converti în numere. Rândurile „1.045”, „74.550 USD” și „Bună dimineața!” nu poate fi convertit în numere.

Când VBA convertește valorile de tip booleanîn cifre, adică Adevărat este convertit la 1 și valoarea Fals– la 0. Când VBA convertește un număr într-un tip boolean, zero este convertit în Fals, iar orice altă valoare este convertită în Adevărat. Când VBA convertește valorile de tip boolean la șiruri, VBA folosește șirul „True” pentru Adevăratși „Fals” – pentru Fals.

Când VBA convertește tipul de date Data la un număr, rezultatul este o valoare numerică - un număr de tip Dubla, care conține numărul de zile de la 30 decembrie 1899 (un număr negativ reprezintă o dată anterioară datei de 30/12/1899). Partea zecimală a numărului (dacă este prezentă) exprimă ora din zi ca parte

zi; 0 este miezul nopții și 0,5 este amiază. În VBA, conversia tipurilor de date numerice în tipuri Data este pur și simplu inversul conversiei de tip Dataîn număr.

Operator de atribuire (=)

Acest operator este folosit pentru a atribui rezultatul unei expresii unei variabile. Sintaxa formei operatorului de atribuire este următoarea:

varname = expresie

variabil varname - orice variabilă, a expresie - orice expresie.

Când executați un operator de atribuire, VBA evaluează mai întâi expresia din dreapta operatorului de atribuire (=) și apoi stochează rezultatul expresiei în variabila al cărei nume se află în stânga operatorului de atribuire.

Ilustrație a operatorului de atribuire într-o diagramă bloc:

varname = expresie

Când atribuiți rezultatul unei expresii unei variabile cu un anumit tip de date, acel rezultat poate fi de un tip de date care este compatibil cu tipul variabilei care primește noua valoare. În multe cazuri, VBA poate converti tipul de date al rezultatului unei expresii într-un tip compatibil cu tipul variabilei care primește noua valoare dacă rezultatul expresiei și variabilei nu au deja tipuri compatibile. Tip variabil Variantă poate fi atribuit orice tip de date.

Operatii aritmetice

VBA poate efectua toate operațiile aritmetice obișnuite (implementate prin expresii aritmetice): adunarea, scăderea, înmulțirea și împărțirea, precum și creșterea numerelor la o putere specificată și oferă operații matematice speciale suplimentare pentru împărțirea întregului și împărțirea modulo (Tabelul 11).

Tabelul 11- Semne de operație (notații) utilizate în expresiile aritmetice VBA (Ni este orice expresie numerică VBA validă)

Semn

Sintaxă

Nume/Descriere

Plus. Adaugă N1 la N2

Scădere. Scade N2 din N1

Multiplicare.Înmulțiți N1 cu N2

Divizia.Împarte N1 la N2.

Diviziune intregi.Împarte N1 la N2, eliminând orice parte fracțională, astfel încât rezultatul să fie un întreg.

Diviziune Modulo.Împarte N1 la N2, returnând doar restul operației de împărțire.

Exponentiatie. Ridica N1 la puterea N2.

Ambii operanzi trebuie să fie expresii numerice sau șiruri de caractere pe care VBA le poate converti într-un număr.

Operații de comparație

Operațiunile de comparare sunt uneori numite și operații relaționale(relaționale operatori). Cel mai adesea, operațiunile de comparație sunt folosite pentru a stabili criterii de luare a unei decizii sau pentru a formula o descriere a condițiilor în care un grup de comenzi ar trebui repetat (organizarea ciclului).

Rezultatul oricărei operațiuni de comparare este o valoare de tip boolean: Adevărat sau Fals. Operatorii de comparație sunt utilizați pentru a compara valori literale, constante sau variabile de orice tip similar (Tabelul 12).

Nume/descriere

Egalitatea. Adevărat , DacăEleste egal cu E2, în caz contrar –Fals

Mai puțin decât. Adevărat , DacăElmai puțin de E2, în caz contrar –Fals

Mai mic sau egal cu.Adevărat, dacă E1 este mai mic sau egal

E2, altfel –Fals

Mai mult decât. Adevărat , dacă E1 este mai mare decât E2, în caz contrar –Fals

Mai mare sau egal cu.Adevărat, dacă E1 este mai mare sau egal cu

E2, altfel –Fals

Nu este egal.Adevărat, dacă E1 nu este egal cu E2, în caz contrar – Fals

Obiect. Adevărat, dacă El se referă la același obiect ca E2, altfel –Fals Similitudine. Ambii operanzi trebuie să fie valori de tip

Tabelul 12– Simboluri de comparație (E în acest tabel reprezintă orice expresie VBA validă)

Operațiune/Operator

Sintaxă

f

exemplu,

Şir. Adevărat, dacă El se potrivește

Comparație binar și șir de text

VBA oferă două moduri diferite de a compara caractere din cazuri diferite. Prima metodă pe care o folosește VBA pentru a compara șirurile este numită binar (binar) sau comparație binară și este metoda de comparare implicită. Pentru a selecta metoda de comparare a șirurilor VBA (binară sau text), utilizați directiva OpțiuneComparaţie:

Opțiune Comparare [ Binar | Text]

În comparația textului, VBA „tratează” literele mari ca echivalente cu literele mici.

Concatenarea șirurilor

VBA oferă capacitatea de a concatena (lipi) șiruri împreună pentru a forma șiruri mai lungi. Adăugarea unui șir la altul se numește concatenare(concatenare) linii. Semnul & poate fi folosit doar pentru a concatena șiruri. Sintaxa generală pentru semnul & este:

Operand1 & Operand2 [& Operand3… ]

Operand1 Și Operand2 – orice șir sau expresii numerice valide. Dacă unul sau ambii operanzi sunt expresii numerice, VBA convertește numerele în șiruri de caractere înainte de a efectua operația de concatenare. Tipul de date al rezultatului concatenării șirurilor este întotdeauna tipul Şir.

Operatori logici

Cele mai frecvente utilizări ale operatorilor logici VBA sunt combinarea rezultatelor expresiilor de comparație individuale pentru a crea criterii de decizie complexe într-o procedură sau pentru a crea condiții în care un grup de instrucțiuni trebuie repetat (Tabelul 13).

Tabelul 13– Operatori logici (E în acest tabel reprezintă orice expresie validă cu un rezultat boolean, cum ar fi un operator de comparație)

Sintaxă operator Nume/Descriere

Și El și E2 Conjuncție. Adevărat, dacă atât E1 cât și E2 sunt semnificative

Adevărat , in caz contrar -Fals Sau El sau E2 Disjuncție. Adevărat, dacă o expresie sau ambele (E1 și

E2) sunt egaleAdevărat ; in caz contrar -Fals Nu, nu El Negare. Adevărat, dacă E1 are o valoare Fals; Fals,

DacăEleste egalAdevărat

Excepție. Adevărat, dacă E1 și E2 au diferite

valori; in caz contrar -Fals

Echivalenţă. Adevărat, dacă E1 are același

însemnând la fel ca E2; in caz contrar -Fals

Implicare. Fals, când E1 este egal AdevăratȘi

E2 este egal cuFals ; in caz contrar -Adevărat .

Priorități operaționale la evaluarea expresiilor complexe

Complex(compozit) expresie(complex expresie) este orice expresie formată din două sau mai multe expresii. Multe dintre expresiile pe care le scrieți sunt expresii complexe, mai ales dacă controlează ordonarea codului în proceduri sau reprezintă diverse formule matematice (Tabelul 14).

Tabelul 14– Ierarhia declarațiilor/operațiilor de la cea mai mare la cea mai mică prioritate

Operator/semn Comentarii

Exponentiație cea mai mare prioritate

Minus unar

Înmulțirea și împărțirea au prioritate egală; sunt evaluate așa cum apar în expresia de la stânga la dreapta

Adunarea și scăderea au prioritate egală; sunt evaluate așa cum apar în expresia de la stânga la dreapta

Toată concatenarea șirurilor este efectuată după orice operații aritmetice din expresie și înaintea oricărei operații de comparare sau comparare. operatii logice

<, <=, >, >=,

Ca, =,<>, Este

Toți operatorii de comparație au prioritate egală și sunt evaluați așa cum apar în expresia de la stânga la dreapta. Utilizați paranteze pentru a grupa operatorii de comparare în expresii

Utilizarea FuncțiilorVisual Basic

Ați folosit deja funcțiile VBA încorporate: InputBoxȘi MsgBox. Funcţie(funcţie) este o formulă încorporată care efectuează operații asupra expresiilor și generează o valoare. O funcție returnează întotdeauna o valoare, pe care VBA o inserează în programul în care apare numele funcției. Funcțiile VBA sunt împărțite în mai multe grupuri în funcție de tipul de operație sau de calcul pe care îl efectuează. Nu confundați termenii funcţieȘi procedură. De obicei, o procedură realizează o anumită sarcină (sau un grup de sarcini), la fel ca o comandă de meniu specifică în Excel, Word sau o altă aplicație realizează o anumită sarcină. O funcție operează pe una sau mai multe valori și returnează o valoare rezultată (cum ar fi o formulă într-o celulă dintr-o foaie de lucru Excel). Pentru a utiliza o funcție, introduceți pur și simplu numele funcției într-o instrucțiune VBA împreună cu orice argument pe care funcția le solicită în punctul din declarație în care trebuie să utilizați rezultatul funcției. Plasarea numelui unei funcții într-o instrucțiune VBA pentru a invoca funcția este apelată provocare(chemând) funcții.

Funcțiile încorporate VBA sunt împărțite în mai multe categorii în funcție de scopul general al funcțiilor (matematice, conversie de date, dată și oră, șir și manipulare disc).

Funcții matematice

VBA oferă un set standard de funcții matematice (Tabelul 15). Tabelul 15– Funcții matematice VBA (N înseamnă orice expresie numerică)

Returnări/Acțiune

Funcții (ar-

gingii)

Returnează valoarea absolutăN

Abs(N)

Cosinusul unghiuluiN, UndeN

Cos(N)

Returnează sinusul unui unghi;Neste unghiul măsurat în radiani

Păcat(N)

bronzat(N)

Returnează tangenta unui unghi;N– unghi în radiani

Atn(N)

Returnează arctangentaNca unghi în radiani

Returnează o constantă e, ridicat la puterea N ( e este baza logaritmilor naturali și este (aproximativ) este egal cu 2,718282)

Returnează partea întreagă a lui N. Fix nu rotunjește numărul, dar elimină orice parte fracțională. Dacă N este negativ, Fix returnează cel mai apropiat număr întreg negativ mai mare sau egal cuN

Buturuga(N)

Returnează partea întreagă a lui N. Int nu rotunjește numărul, dar elimină orice parte fracțională. Dacă N este negativ, Int returnează cel mai apropiat număr întreg negativ mai mic sau egal cuNReturnează logaritmul naturalN

Aleatoriu

argument

este

Se intoarce

opțional. Utilizați funcția Rnd numai după

inițializarea generatorului de numere aleatoare VBA cu operatorul

Randomizați

Returnează semnul numărului: –1 dacă N este negativ; 1 dacă N –

pozitiv; 0 dacăNeste egal cu 0

Returnează rădăcina pătrată a lui N. VBA afișează o eroare

timpul de executare, dacăN– negativ

Funcții de conversie a datelor

Visual Basic oferă mai multe funcții pentru conversia unui tip de date în altul (Tabelul 16). Utilizați aceste funcții pentru a rezolva erorile de nepotrivire de tip și pentru a oferi control explicit asupra tipurilor de date din expresii.

Tabelul 16– Funcții de conversie a datelor (N este orice numeric, S este orice șir și E este o expresie de orice tip)

Funcție (ar- Returnări/Acțiunegingii)

Returnează numărul codului caracterului corespunzător primei litere liniiS. Litera „A”, de exemplu, are un cod de caractere de 65

Funcție (argumente)

Returnări/Acțiune

Returnează un șir de un caracter corespunzător codului de caractere N, care trebuie să fie un număr între 0 și 255, inclusiv. Codul de caracter 65, de exemplu, returnează litera „A” (Chr(13) este un caracter de returnare a căruciorului, Chr(10) este un caracter offset de o linie)

Returnează un șir care conține valoarea reprezentată de expresia E, formatată conform instrucțiunilor conținute în S

Returnează un șir care conține reprezentarea hexazecimală a lui N

Oct(N) Returnează un șir care conține reprezentarea octală a lui N

Returnează un număr întreg de tip Lung, reprezentând valoarea culorilor primare ale imaginii. N din fiecare argument trebuie să fie un număr întreg în intervalul 0 – 255, inclusiv. Argumentele (de la stânga la dreapta) sunt valorile pentru roșu, verde și albastru

Str(N) Returnează un șir echivalent cu expresia numerică N

Returnează o valoare numerică corespunzătoare numărului reprezentat de șirul S, care trebuie să conțină doar cifre și un punct zecimal, altfel VBA nu o poate converti într-un număr. Dacă VBA nu poate converti șirul în S, atunci funcția Val returnează 0

CBool(N) Returnează echivalentul boolean al expresiei numerice N

octet(de la 0 la 255); E – orice expresie numerică sau șir validă care poate fi convertită într-un număr

Returnează o valoare numerică de tip Valută

Returnează o valoare de tip Data. E poate fi orice expresie validă (șir sau număr) reprezentând o dată din interval 1/1/100 12/31/9999 , inclusiv

Returnează o valoare numerică de tip Dubla, care poate fi convertit într-un număr

Returnează o valoare numerică de tip Întreg; E – orice expresie numerică sau șir validă care poate fi convertită într-un număr

Returnează o valoare numerică de tip Lung; E – orice expresie numerică sau șir validă care poate fi convertită într-un număr

Funcție (argumente)

Returnări/Acțiune

Returnează o valoare numerică de tip Singur; E – orice expresie numerică sau șir validă care poate fi convertită într-un număr

Returnează o valoare de tip Şir; E – orice expresie numerică sau șir validă

Returnează o valoare de tip Variantă; E – orice expresie numerică sau șir validă

Funcții de dată și oră

Funcțiile de dată și oră VBA sunt utilizate de obicei pentru a obține data și ora curente, pentru a împărți o valoare a datei în părțile sale componente sau pentru a converti șiruri și numere în valori precum Data(Tabelul 17).

Tabelul 17– Funcții de dată și oră (N este orice expresie numerică validă, iar D este orice expresie validă ca Data(inclusiv valori precum Data, numere sau șiruri de caractere pe care VBA le poate converti într-o dată); toate argumentele funcției sunt necesare dacă nu este menționat altfel)

Returnări/Acțiune

Funcții (ar-

gingii)

Returnează data sistemului. De asemenea, puteți utiliza această funcție ca procedură pentru a seta ceasul de sistem al computerului. Mai multe detalii pot fi găsite în cartea de referință. sistemeVBA

Returnează ora de sistem a computerului ca valoare de tip Data. De asemenea, puteți utiliza această funcție ca procedură pentru a seta ceasul sistemului. Mai multe detalii pot fi găsite din sistem de ajutor VBAReturnează data și ora sistemului

DataȘi

Returnează un număr întreg care face parte dintr-o expresie de tip Data,

inclusiv

Returnează un număr întreg care face parte dintr-o expresie de tip DataȘi

Ziua săptămânii(D) Ora(D)

inclusiv

Returnează un număr întreg care conține ziua săptămânii pentru o expresie de tip

Data. Ziua săptămânii este returnată ca număr între 1 și 7,

inclusiv; 1 este duminica, 2 este luni și așa mai departe

Returnează un număr întreg care conține orele ca parte a timpului,

un număr între 0 și 23, inclusiv. Dacă expresia D nu este

conţine valori de timp, atunciOrareturneaza 0

Funcții (ar-gingii)

DataAdd(S, N, D)

DataSerial(N, N, N)

TimeSerial (N, N, N)

Returnări/Acțiune

Returnează un număr întreg care conține minute ca parte a timpului în

tipul expresiei Data. Minutele sunt returnate ca un număr între 0

și 59, inclusiv. Dacă expresia D nu conține o valoare

timp,Minutreturneaza 0

Returnează un număr întreg care conține secunde ca parte a timpului în

tipul expresiei Data. Secundele sunt returnate ca un număr între

0 și 59, inclusiv. Dacă expresia D nu conține o valoare

timp,Al doileareturneaza 0

Returnează valoarea [tip Variantă(Data)], conținând data până la

DateDiff(S, D1, Returnează [tip Variantă(Lung)] număr de temporare D2[,Nl [, N2 ]]) intervale dintre două date specifice DatePart(S, D, [, Returnează partea specificată [tip Variantă(Întreg)] N1 [, N2]]) data dată

la care se adaugă un interval de timp specificat

Returnează valoarea secvenţială a datei pentru data dată. De la stânga la dreapta, argumentele reprezintă anul, luna și ziua. Argumentul an trebuie să fie un număr întreg între 100 și 9999, luna trebuie să fie între 1 și 12, ziua trebuie să fie între 1 și 31 (toate intervalele sunt inclusive)

Returnează valoarea de timp în serie. De la stânga la dreapta, argumentele reprezintă ore, minute și secunde. Argumentul ore trebuie să fie un număr întreg între 0 și 23, argumente minutele și secundele trebuie să fie ambele numere de la 0 la 59 Returnează o valoare de tip Data, echivalent cu data specificată de argumentul E, care trebuie să fie un șir, un număr sau o constantă reprezentând o dată

miezul nopții în funcție de ora sistemului informatic Unele dintre funcțiile enumerate au fost deja utilizate în exemplele din această carte, altele vor fi folosite în continuare.

Funcții șiruri

Funcțiile de șir VBA sunt adesea folosite pentru a găsi șiruri specificate în alte șiruri, pentru a compara un șir cu altul și pentru a copia porțiunile selectate ale șirurilor (Tabelul 18).

Returnează o valoare de tip Data, care conține timpul specificat de argumentul E, care poate fi un șir, un număr sau constantă reprezentând timpul Returnează un număr care reprezintă numărul de secunde de la

Tabelul 18– Funcții șir (N este orice expresie numerică validă, iar S este orice expresie șir validă)

gumă)

Returnează poziția lui S2 în S1. N1 – pozitia initiala pt

căutare; N2 determină tipul de comparație. N1 și N2 sunt opționale. Dacă N2 este omis, atunci cel curent este folosit pentru căutare instalareOpțiune Comparaţie InStrRev(Sl, S2 Returnează poziția în care șirul S2 apare în interiorul S1

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

Len(S) LTrim(S)

Spațiu (N) StrComp(Sl, S2, N)

în direcția de la sfârșitul (sau N1) la începutul liniei. N2 determină tipul de comparație. Dacă N2 este omis, atunci folosirea este utilizată pentru căutare instalatia curentaOpțiune Comparaţie

Returnează un șir (de tip Şir), care conține o copie a lui S cu toate caracterele majuscule convertite în caractere litere mici

Returnează un șir de caractere; copiază N caractere din S, începând din stânga ultimul personajS

Returnează numărul de caractere din S, inclusiv caracterele de început și de sfârșit spatii

din partea stângă a liniei (spatii de început) Returnează un șir de caractere; copiează N2 caractere din S, începând cu poziția caracterului din S specificată de N1. N2 este opțional; dacă N2 este omis, atunci Mid returnează totul caractere dintr-un șirSdin pozitieN1 până la sfârșitul rândului Returnează o valoare String; copiază N caractere din S,

pornind de la caracterul din dreaptaS

Returnează o copie a șirului S după ce caracterele spațiilor albe au fost eliminate

din partea dreaptă a șirului (caracterele de sfârșit)

Returnează un șir de spații de lungimeNpersonaje

Compară S1 cu S2 și returnează un număr care indică rezultatul comparației: -1 dacă SI< S2; 0, если SI = S2; 1, если SI >S2. N este opțional și specifică dacă comparația trebuie să țină cont de majuscule și minuscule. Dacă N este omis, șirurile sunt comparate folosind setarea curentă OpțiuneComparaţie

Returnează un șir convertit în uniforma nouaîn funcție de codul numeric specificat de argumentul N. VBA oferă constante interne pentru utilizare cu funcția StrConv; cele mai utile sunt: vbProperCase(convertește șirul astfel încât fiecare literă care începe un cuvânt să fie scrisă cu majuscule), vbLowerCase(conversează șirul în litere mici) și vbMajuscule(convertește șirul în litere mari)

Funcție (ar- Returnări/Acțiunegumă)

String(N, S) Returnează un șir de N caractere lung, format din caracter

specificat de primul caracter înS Trim(S) Returnează o copie a șirului S după eliminarea începutului și

caractere de spații albe din urmă din acest șir UCase(S) Returnează S cu toate caracterele minuscule,

convertit în caractere majuscule Mai multe enumerate în tabel. Cele 16 funcții de conversie a tipurilor de date se aplică și manipulării șirurilor: Chr, Format, CStr, în special.

Formatarea valorilor datelor

Deși VBA poate converti automat orice tip de date într-un șir pentru afișare folosind funcția MsgBox sau pentru inserarea într-o foaie de lucru Excel, formatul de date pe care VBA îl alege poate să nu fie cel pe care îl doriți. Când convertiți un număr într-un șir, VBA nu adaugă un separator de mii, semne de dolar sau alte formatări numerice la șir. În plus, dacă un număr este foarte mare sau foarte mic, VBA creează un șir reprezentând acel număr în notație științifică. La conversia datelor, VBA folosește întotdeauna formatul scurt de dată și oră utilizat de sistemul de operare al computerului și afișează întotdeauna atât data, cât și ora.

Pentru a obține aproape orice format de dată atunci când convertiți numere sau date în șiruri, puteți utiliza funcția Format; poți chiar să folosești funcția Format pentru a formata datele șir în funcție de un model specific. De asemenea, puteți crea formate de ecran personalizate dacă aveți nevoie ca datele să apară într-un anumit format. Sintaxa operatorului de format:

Format( Expresie [, Format[, Prima zi a săptămânii [, Prima săptămână de an]]])

Expresie – orice expresie valabilă (obligatoriu); Format – o expresie validă a unui format numit sau definit de utilizator (opțional); Prima zi a săptămânii – o constantă care definește prima zi a săptămânii (opțional); Prima săptămână de an – o constantă care definește prima săptămână a anului (opțional).

Pentru argumente Prima zi a săptămânii Și Prima săptămână de an VBA are constante denumite, despre care puteți afla în Ajutorul VBA din Constante date.

Pentru a utiliza funcția Format, puteți fie să specificați un format predefinit (numit format numit(numit format), sau creați o imagine cu un anumit format folosind combinații ale unui grup special de caractere numit caractere substituent(substituenți). Dacă trebuie să creați formate personalizate pentru numere, date sau ore, trebuie să creați un șir care să conțină caractere substituent pentru a specifica formatarea pe care trebuie să o folosească funcția. Format la conversia valorilor într-un șir (Tabelul 19). În plus, în tabel. 19 folosit

de exemplu, valoarea numerică este 1234,5.

pentru a crea personalizate

Tabelul 19– Formatați caracterele de umplere

Caracter substituent

Acțiune

Un caracter numeric care afișează o cifră dacă una se află în acea poziție sau 0 dacă nu. Puteți utiliza caracterul 0 pentru a afișa zerouri de început pentru numere întregi și zerouri de la urmă pentru zecimale; 00000.000 afișează 00124.500

Un simbol numeric afișează o cifră dacă există una în această poziție, altfel nu afișează nimic. Caracterul substituent # este echivalent cu 0, cu excepția faptului că zerourile de început și de final nu sunt afișate; #####.### afișează 1234.5

$ Afișează un semn dolar; $###,###.00 afișează 1.234,50 $

Caracter substituent zecimal, afișează punctul zecimal la poziția desemnată în șirul de caractere substituent 0; #.##.## afișează 1234.5

Simbol procent, înmulțește valoarea cu 100 și adaugă un semn de procent în poziția indicată de caracterele de umplere 0; #0.00% afișează numărul 0,12345 ca 12,35% (12,345 se rotunjește la 12,35)

, (virgulă)

Separator de mii, adaugă virgule ca separatori de mii în șiruri de caractere de umplere 0 și #; ###,###,###. 00 afișează 1.234,50

Afișează valorile în format exponențial cu semn de exponent numai pentru valori negative; #.#### E00 afișează 1.2345E03; 0.12345 este afișat ca 1.2345E-01

Afișează valorile în format exponențial cu un exponent pentru valorile pozitive și negative; #.#### E+00 afișează 1.2345E+03

Separă ziua, luna și anul pentru formatarea valorilor datei. mm/ dd/ da afiseaza 06/06/97. Caracterele „/” pot fi înlocuite cu cratime pentru a fi afișate ca 06-06-97

Specifică modul de afișare a lunilor în date; m afiseaza 2, mm– 02, mmm– Februarie, mmmm- Februarie

Specifică modul de afișare a zilelor în date; d afiseaza 1, dd afișează 01, ddd– Vineri, dddd- Vineri

y Afișează ziua anului ca număr de la 1 la 366

Specifică modul de afișare a anilor în date; da afișează 99, Wow– 1999

Afișează trimestrul anului ca un număr de la 1 la 4

Afișează ziua săptămânii ca număr (1 este duminică)

Afișează săptămâna anului ca un număr de la 1 la 54

Caracter substituent

Acțiune

: (coloană) Separă ore, minute și secunde în valorile formatului de timp; hh: mm: ss afișează 02:02:02

Specifică modul de afișare a ceasului; pentru valoarea de timp 02:01:38 h afiseaza 2, hh afișează 02

Simbol substituent pentru minute pentru timp; pentru valoarea de timp 02:01:08 n afișează 1 și nn afișează 01

Simbol substituent secunde pentru timp; pentru valoarea de timp 02:01:08 s afișează 8 și ss afiseaza 08

Afișează ora în format de 12 ore cu AM și PM adăugate; h: nnAM/RM afișează ora 16:00. Formatele alternative includ am/pm, A/P și a/p

Substituent de caractere, afișează un spațiu dacă nu există niciun caracter care se potrivește în șirul formatat (ordinea implicită de completare este de la dreapta la stânga)

Afișează toate caracterele cu majuscule

Afișează toate caracterele cu litere mici

Utilizarea funcțiilor aplicației gazdă

Pe lângă funcțiile încorporate în Visual Basic pentru aplicații, unele funcții ale aplicației gazdă VBA sunt disponibile din codul VBA. Gazdă-aplicatie este o aplicație în care sunt dezvoltate proceduri VBA precum Word, Excel, PowerPoint, Outlook sau FrontPage. Excel, de exemplu, are diverse funcții care efectuează operații matematice, logice, financiare și statistice asupra datelor din foile de lucru. Multe (deși nu toate) dintre aceste funcții Excel sunt accesibile din codul VBA. Funcțiile aplicației gazdă disponibile pentru VBA nu fac parte din VBA, ele fac parte din aplicația gazdă. Este posibil ca funcțiile disponibile pentru VBA într-o aplicație gazdă să nu fie disponibile în alta.

Pentru a utiliza o funcție care aparține unei aplicații gazdă, accesați funcția printr-un obiect program Aplicație. Obiectul Application VBA reprezintă aplicația gazdă și toate resursele acesteia. Obiectele sunt descrise mai detaliat în partea 6.

Sarcina 6. Scrieți o procedură care folosește funcția Max din Excel.

Pentru aceasta:

Introduceți procedura (Listing 8):

Lista 8 – Utilizarea funcțiilor ExcelMax

1 Sub List3_08()

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

În spatele Cuvântului Aplicație urmat de un punct (.) și apoi de numele funcției Max fara spatii. Acest punct, numit punct separator(punct separator), indică faptul că enunțul se referă la o funcție Max, care face parte din obiect

Aplicație.

Rezultatul funcției Excel nu poate fi ignorat. Ar trebui să includeți întotdeauna paranteze într-un apel de funcție Excel și ar trebui să utilizați întotdeauna rezultatul funcției într-un fel: ca valoare într-o expresie, un argument pentru o altă funcție sau procedură sau într-o instrucțiune de atribuire.

Nu toate funcțiile aplicației gazdă sunt disponibile pentru VBA. Dacă nu sunteți sigur dacă o anumită funcție de aplicație gazdă este disponibilă pentru VBA, utilizați Obiect Browser pentru a verifica dacă lista include Membrii (Componentă) această funcție, atunci când este selectată Funcție Fișă de lucru pe listă Clase (Clase) și cu aplicația gazdă selectată în listă Proiect/ Bibliotecă (Proiect/Bibliotecă). Dacă funcția necesară nu este în listă, atunci nu este disponibil pentru VBA.

Întrebări de control

    Definiți conceptul de „tipuri de date”. Ce tipuri de date sunt folosite în VBA?

    Ce este un ID?

    Ce este o variabilă? Ce înseamnă expresia „definiți o variabilă implicit” și ce înseamnă „explicit”?

    Ce constante sunt folosite în VBA? Ce sunt constantele interne?

    Pentru ce sunt folosite funcțiile InputBox și MsgBox?

    Ce este o expresie?

    Definiți sintaxa operatorului de atribuire.

    Ce sunt operațiunile relaționale?

    Care este prioritatea operațiilor matematice?

    Ce cuvânt cheie există în VBA care trebuie utilizat la accesare Funcții Excel? Pentru ce poți folosi fereastra Object Browser?

  • boolean- Tipul de date boolean poate stoca doar două valori: adevărat sau fals, adevărat sau fals. Folosirea lui în loc de variabile întregi este un stil de programare bun.
  • octet- tipul de octet este nou în Visual Basic 5 și este conceput pentru a stoca numere întregi de la 0 la 255. Utilizarea acestuia vă permite să economisiți mult RAM și să reduceți dimensiunea matricelor în comparație cu Versiuni anterioare Visual Basic. Este, de asemenea, folosit atunci când lucrați cu fișiere binare.
  • Valută - acest tip lipsește din versiunile GW-BASIC și QuickBASIC. Este conceput pentru a evita erorile în timpul conversiei numere zecimaleîn formă binară și invers. (Este imposibil să reprezinte 1/10 ca sumă a 1/2,1/4, 1/8, 1/16 etc.) Acest tip poate avea până la 4 cifre după virgulă zecimală și până la 14 înainte aceasta. În acest interval, calculele vor fi precise. Identificatorul este simbolul „@”. Deoarece toate operațiile aritmetice, cu excepția adunării și scăderii, sunt efectuate la fel de lent ca în cazul variabilelor de dublă precizie, acest tip este preferat pentru calculele financiare. (Pentru cei care se întreabă, acest tip utilizează numere întregi cu 19 locuri care sunt apoi împărțite la 10000. Acest lucru permite 15 zecimale și 4 după zecimală.)
  • Data- Acest tip de date vă permite să stocați valorile orei și datei între miezul nopții 1 ianuarie 100 și miezul nopții 31 decembrie 9999. Astfel de valori sunt reprezentate în textul programului prin caractere „#”, de exemplu: Anul Nou = #1 ianuarie 2000# Dacă introduceți doar o valoare de dată, Visual Basic presupune că ora este 00:00.
  • Zecimal- cel mai puternic tip numeric. Pentru a stoca o variabilă de acest tip, sunt alocați 16 octeți. Limitele negative și pozitive ale intervalului în care sunt situate valorile posibile ale acestei variabile sunt identice ca mărime și egale cu +/- 79 228 162 514 264 337 593 543 950 335, dacă utilizați numere întregi. Dacă este necesar să stocați valori fracționale, limitele valorilor posibile vor fi deplasate cu mai multe ordine de mărime, în funcție de câte zecimale folosește dezvoltatorul. Acest tip poate fi folosit doar pentru a stoca fracții zecimale. Dezvoltatorul poate folosi până la 28 de zecimale.
  • Dubla- variabilele de acest tip vă permit să stocați numere cu o precizie de până la 16 cifre și o lungime de până la 300 de caractere. Identificatorul este „#”. Calculele cu ele sunt, de asemenea, aproximative, iar viteza lor este relativ mică. Variabilele duble sunt utilizate în principal pentru calcule științifice.
  • Întreg- Variabilele întregi pot stoca doar numere întregi relativ mici (de la -32.768 la +32.767). Operatii aritmetice pe astfel de numere se execută foarte repede. Pentru a indica acest tip, utilizați simbolul „%”: IntegerPerem% = 3
  • Lung- acest tip a apărut pentru prima dată în limbajul QuickBASIC. Astfel de variabile stochează valori întregi de la -2.147.483.648 la +2.147.483.647. Sunt notate cu simbolul „&”. Operațiile aritmetice pe astfel de numere sunt, de asemenea, foarte rapide, iar atunci când rulează pe un procesor 386DX sau 486DX, a existat doar o mică diferență în viteza de calcul între Long și Integer. LongPerem& = 123456789
  • Obiect- de fapt, o variabilă de acest tip este doar o legătură către o instanță specifică a unui obiect. 4 octeți sunt alocați pentru a stoca variabila.
  • Singur- identificatorul acestor numere este simbolul „!”. Acest tip de variabilă vă permite să stocați numere fracționale cu o precizie de până la șapte cifre. Aceasta înseamnă că, dacă rezultatul este 12345678,97, atunci partea de 8,97 nu este exactă. Rezultatul ar putea fi, de exemplu, 12345670.01. Numerele pot avea până la 38 de caractere. Calculele cu aceste variabile vor fi, de asemenea, aproximative. În plus, operațiile aritmetice sunt mai lente decât cu variabile întregi.
  • Şir- variabilele șir stochează caractere. O modalitate de a indica acest tip de variabilă este să adăugați un „$” la sfârșitul numelui, de exemplu: StringPerem$. Teoretic, o astfel de variabilă poate conține până la 2 miliarde de caractere. În orice caz, pe un anumit computer, acest număr va fi mult mai mic din cauza volumelor limitate memorie cu acces aleator, resurse Windows sau numărul de caractere utilizate în formular. Una dintre cele mai de bază utilizări ale variabilelor șir este de a selecta informații din câmpurile de intrare.

De exemplu, dacă modificați textul din caseta de text 1, caseta de text va afișa același text, dar fără ultimul caracter la dreapta:

Opțiune Explicit Dim strText As String Private Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub Private Sub Text1_Change() La eroare Reluare Următorul Text2.Text = strText strText = Left(Text1.Text, Len(Text1) .Text) - 1) End Sub

Variantă- acest tip a fost adăugat la Visual Basic 5 din versiunea 2.0. O variabilă de tip variantă poate conține date de orice tip. Dacă Visual Basic nu știe tipul de date de primit, trebuie să utilizați varianta. Tipul de informații nu contează deoarece varianta poate conține orice tip de date (numerice, dată/oră, șir). Visual Basic efectuează automat transformările de date necesare, astfel încât să nu vă faceți griji pentru acest lucru. Pe de altă parte, puteți utiliza funcții încorporate pentru a verifica tipul de date stocate într-o variabilă variantă. Ele facilitează verificarea dacă utilizatorul introduce informații corect. Utilizarea unui tip de date variant încetinește programul, deoarece sunt necesare timp și resurse pentru operațiunile de conversie a tipului. În plus, mulți programatori realizează că utilizarea conversiilor automate ale tipurilor de date are ca rezultat programe care arată neglijent. Singurul motivîn utilizarea variantei constă în posibile erori la conversia tipurilor direct de către programator.

Uneori, atunci când utilizați anumiți operatori, funcții API sau pur și simplu pentru propriile nevoi, trebuie să vă creați propriile tipuri de date. Ele sunt adesea numite structuri. La baza ei, o structură este ca o matrice unidimensională pe care o introducem într-o singură variabilă. Dar poate include date de diferite tipuri.

Crearea propriului tip de date se face folosind instrucțiunea Type, care este utilizată în secțiunea General a codului formularului.