Variabilné typy vizuálny základ. Programovací jazyk Visual Basic

Pretože Visual Basic môže určiť variabilný typňou význam(cm. Varianta), potom typ premennej nemusí byť deklarovaný (nešpecifikovaný). však deklarácia premennej je pravidlom správnej programátorskej praxe a zároveň umožňuje vyhnúť sa niektorým chybám v programe, ako je nerovnaké písanie názvu premennej na rôznych miestach v programe, nedodržiavanie dátových typov pri výpočtoch.

Premenná je deklarovaná na začiatku okna s kódom alebo na začiatku postupu pomocou operátora Dim s takýmto zápisom:

Dim VariableName ako VariableType

Slová sú špecifikované ako typ premennej Bajt, dlhý, reťazec a ďalšie z tabuľky typov (pozri vyššie).

Napríklad:
Dim a As Byte
Vyhlásená premenná A typu bajtov. Do takejto premennej môžete vložiť číslo od 0 do 255. Keď sa pokúsite priradiť premennú viac dôjde k chybe a číslo má zlomková časť budú zaokrúhlené nahor.

Dim b As String
Vyhlásená premenná b typu Reťazec. Táto premenná bude obsahovať text (aj keď text môže byť čísla, ale 2 plus 3 je 23).

Pri deklarovaní viacerých premenných ich môžete enumerovať pomocou čiarka:
Dim a As Byte , b As String

Po riadku deklarácie môžete premennej priradiť hodnotu.

Napríklad:
Dim a As Byte
a=5

Visual Basic vám tiež umožňuje vytvárať vlastné dátové typy. Táto funkcia je dôležitá, keď pracujete so skupinou údajových prvkov, ktoré spolu súvisia, ale patria do rôznych kategórií údajov. Pomocou príkazu Structure môžete vytvoriť svoje vlastné typy (UDT - typ definovaný používateľom) a príkazom Dim deklarovať premenné súvisiace s týmito novými typmi. Majte však na pamäti, že príkaz Structure nemôže byť umiestnený v procedúre udalosti – musí byť umiestnený v hornej časti kódu formulára spolu s inými deklaráciami premenných alebo v kóde modulu.

Napríklad nasledujúca deklarácia vytvorí vlastný typ údajov s názvom Zamestnanec, ktorý môže uložiť mená, dátum narodenia a dátum zamestnania daného zamestnanca:

Štruktúra Zamestnanec Dim Name As Reťazec Dim DateOf Birth As Date Dim HireDate as Date End Štruktúra

Po vytvorení typu údajov ho môžete použiť v kóde formulára alebo v procedúrach udalostí modulu. Nasledujúce výkazy používajú nový typ Zamestnanec. Prvý príkaz vytvorí premennú s názvom ProductManager typu Zamestnanec a druhý príkaz nastaví komponent Name tejto premennej na názov „Eric Cody“:

Dim ProductManager ako zamestnanec ProductManager.Name = "Eric Cody"

Znie to ako nastavenie vlastností, však? Visual Basic používa rovnakú notáciu pre vzťahy medzi objektmi a vlastnosťami ako pre vzťahy medzi používateľsky definovanými typmi údajov a premennými komponentmi.

Konštanty: premenné, ktoré sa nemenia

Ak premenná vo vašom programe obsahuje hodnotu, ktorá sa nikdy nemení (napríklad číslo pi, ktoré je pevnou matematickou entitou), môžete zvážiť uloženie tejto hodnoty ako konštanty a nie ako premennej. Konštanta je zmysluplný názov, ktorý nahrádza číslo alebo testovací reťazec, ktorý sa nikdy nemení. Konštanty sú užitočné v tom, že zvyšujú čitateľnosť kódu programu, znižujú počet softvérové ​​chyby a zjednodušiť vykonávanie globálnych zmien v kóde. Konštanty sa správajú ako premenné, ale počas behu programu nemôžete meniť ich hodnotu. Deklarujú sa pomocou kľúčového slova Const, ako je znázornené v nasledujúcom príklade:

Const Pi ako dvojité = 3,14159265

Tento príkaz vytvára konštantu s názvom Pi, ktorú možno použiť v programovom kóde namiesto hodnoty pi. Ak chcete sprístupniť konštantu všetkým objektom a procedúram udalostí vo formulári, umiestnite tento príkaz na začiatok kódu formulára spolu s ďalšími deklaráciami premenných a štruktúr, ktoré sa vzťahujú na všetky procedúry udalostí vášho formulára. Ak chcete sprístupniť konštantu zo všetkých formulárov a programových modulov (nielen z Form1 ), vytvorte konštantu v kóde modulu tak, že jej predpíšete kľúčové slovo verejnosti. Napríklad:

Verejná konst Pi ako dvojitá = 3,14159265

V nasledujúcom cvičení použijeme konštanty v procedúre udalosti.

Použitie konštanty v procedúre udalosti
  1. V ponuke Súbor vyberte položku Otvoriť a potom kliknite na položku Projekt. Zobrazí sa dialógové okno Open Project.
  2. Otvorte projekt Constant Tester umiestnený v priečinku c:\vbnet03sbs\ch.5\konštantný tester.
  3. Ak sa formulár projektu nezobrazuje, kliknite na položku Form1.vb v Prieskumníkovi riešení a potom kliknite na tlačidlo Zobraziť návrhára. V nástroji Windows Forms Designer sa zobrazí formulár Neustály test. Constant Tester je „kostra“ programu. Používateľské rozhranie je dokončené, musíte však zadať kód programu.
  4. Urobte dvojité kliknutie na tlačidlo Zobraziť konštantný formulárov. Procedúra udalosti Button1_Click sa zobrazí v editore kódu.
  5. V procedúre udalosti Button1_Click zadajte nasledujúce príkazy:

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

    Poradenstvo. Vyberte umiestnenie svojich vyhlásení na základe toho, ako plánujete používať konštanty alebo premenné. Programátori sa zvyčajne snažia, aby bol rozsah deklarácií čo najmenší, no zároveň by mal byť dostupný vo všetkých častiach kódu tam, kde je to potrebné. Napríklad, ak je konštanta potrebná iba v procedúre jednej udalosti, musíte umiestniť deklaráciu tejto konštanty do tejto procedúry udalosti. Ak ho však musíte sprístupniť pre všetky procedúry udalostí vášho formulára, umiestnite jeho vyhlásenie na začiatok kódu formulára.

    Ak chcete spustiť program, kliknite na tlačidlo Štart na štandardnom paneli nástrojov.

    Kliknite na tlačidlo Zobraziť konštantný. Konštanta Pi sa zobrazí v poli označenia, ako je znázornené nižšie.

    Ak chcete program zastaviť, kliknite na tlačidlo VÝCHOD.

    Konštanty sú užitočné v programovom kóde, najmä pri výpočtoch matematické vzorce. Nasledujúca časť popisuje, ako používať operátory a premenné na písanie vzorcov.

PROGRAMOVACÍ JAZYK VIZUÁLNY ZÁKLAD. TYPY ÚDAJOV. POPIS PREMENNÝCH, KONŠTANT, POLÍ

Dátový typ je spôsob, akým sa údaje ukladajú a prezentujú v počítačovom systéme.

Nasledujúce typy údajov môžu byť uložené a spracované v jazyku Visual Basic.

Bajt je nezáporné celé číslo. Prijíma hodnoty od 0 do 255, zaberá 1 bajt.

Boolean – logická hodnota. Má jednu z dvoch hodnôt True a False, zaberá 2 bajty.

Mena – rozšírené desatinné číslo. Používa sa na vykonávanie peňažných výpočtov s pevným počtom desatinných miest, zaberá 8 bajtov. (Až 15 číslic naľavo od desatinnej čiarky a najviac 4 číslice napravo od desatinnej čiarky).

Dátum - dátum. Používa sa na ukladanie dátumov/časov, zaberá 8 bajtov.

Double - desatinné číslo s dvojnásobnou presnosťou, zaberá 8 bajtov.

Celé číslo - krátka celočíselná hodnota, zaberá 2 bajty. Používa sa na reprezentáciu celých čísel v rozsahu -32768 až 32767.

Long - dlhé celé číslo, zaberá 4 bajty. Používa sa na reprezentáciu celých čísel v rozsahu -2147483648 až 2147483647.

Single - desatinné číslo s normálnou presnosťou, zaberá 4 bajty. Používa sa na vyjadrenie záporných čísel v rozsahu -3,402823E 38 až -1,401298E-45 a na vyjadrenie kladných čísel v rozsahu 1,401298E-45 až 3,402823E 38.

String – reťazec s premenlivou dĺžkou. Obsadená pamäť lineárne závisí od počtu znakov v reťazci.

String * length - reťazec konštantnej dĺžky.

Variant - ľubovoľná hodnota. Používa sa na úložisko dát akékoľvek typy. Zaberá 16 bajtov plus jeden bajt na znak, ak je hodnotou reťazec.

Objekt - predmet. Používa sa len na ukladanie odkazov na objekty, zaberá 4 bajty.

Variabilné je pomenovaná oblasť pamäte určená na ukladanie údajov, ktoré sa menia počas vykonávania programu. Na prístup k obsahu tejto pamäťovej oblasti stačí poznať názov premennej.

Názov premennej (identifikátor) je reťazec znakov, ktorý odlišuje túto premennú od iných programových objektov (identifikuje premennú v programe).

Pri pomenovávaní premenných je potrebné dodržiavať nasledujúce pravidlá:

Prvý znak mena musí byť písmeno. Zostávajúce znaky sú písmená a čísla (veľké a malé písmená sa líšia). Môžete použiť znak "_";

  • znak "." nemožno použiť v názve;
  • počet znakov v názve by nemal presiahnuť 255;
  • názov premennej sa nesmie zhodovať s rezervovanými (servisnými) slovami jazyka.

Visual Basic má nasledujúce funkcie. deklarácie typu premennej.

  1. Premenná nemusí byť vôbec deklarovaná. V tomto prípade bude predvolený typ Variant. To však môže viesť k pomalej, neefektívnej prevádzke programu a zbytočnému využívaniu pamäte.
  2. Premenná môže byť deklarovaná explicitne pomocou príkazu definície premennej:Dim VariableName [ As VariableType],
    napríklad: Dim d as Long.
    Ak chcete premenné vždy deklarovať explicitne, použite možnosť Option Explicit v sekcii (General) (Declarations) existujúcich formulárov, modulov alebo tried. Po nastavení tejto možnosti Visual Basic vyžaduje explicitnú deklaráciu premenných a ak je v kóde použitá nedeklarovaná premenná, vygeneruje chybové hlásenie.
  3. Premenná môže byť deklarovaná implicitne:

    S operátorom deklarácie typu:

DefType Počiatočné písmeno [- Koncové písmeno];

Namiesto OrgType je uvedené jedno z kľúčových slov označujúcich typ:

Deflnt (pre typ Integer);
- DefLng (pre typ Long);
- DefSng (pre typ Single);
- DefStr (pre typ String) atď.;

Typ premennej možno niekedy odvodiť z prípony pripojenej k názvu premennej. Iba šesť typov premenných môže mať prípony:

- % - typ celého čísla;
- & - Dlhý typ;
- ! - Jeden typ;
- # - Dvojitý typ;
- $ - Typ reťazca;
- @ - Typ meny.

Ak sa premenná, ktorej typ je implicitne označený príponou, vyskytuje v programe viackrát, potom možno príponu zadať iba raz, pri prvom použití premennej v programe.

Konštanty- množstvá, ktorých hodnoty sa nedajú zmeniť. Rovnako ako premenné, aj konštanty deklaruje operátor na začiatku textu programového kódu:

Const ConstantName = Hodnota, napríklad: Const Pi = 3,14159

Ako hodnotu možno použiť iba konštantné hodnoty a ich kombinácie vrátane aritmetických a/alebo logických operátorov.

pole je súbor prvkov určitého typu, z ktorých každý má svoje poradové číslo, nazývané index.

Definíciu poľa vykonáva operátor:

Dim VariableName([LowerLimitTo]
Horná hranica) .

Napríklad: Dim b (a až 15) - deklarácia poľa b, pozostávajúceho z 15 prvkov.

Visual Basic štandardne indexuje prvky poľa, pričom začína od nuly, to znamená, že index 0 označuje prvý prvok poľa, index 1 druhý atď. Príkaz Option Base 1 vám umožňuje zadať indexovanie poľa od 1. Tento príkaz musí byť v sekcii (General) (Declarations).

V tejto časti sa dozviete o typoch údajov, s ktorými môže VBA manipulovať, ako VBA ukladá dočasné údaje, ako kombinovať premenné a konštanty na vytváranie nových hodnôt a naučíte sa, ako zahrnúť vstavané funkcie do výrazov.

Laboratórna práca číslo 3. Prehľad dátových typov VB. premenné a

konštanty. Kompatibilita dátových typov. operátor priradenia. Aritmetické a logické operátory. Vstavané funkcie

Účel lekcie: Poznať typy údajov. Vedieť, ako vytvárať premenné. Vedieť, ako priradiť dátové typy premenným. Byť schopný vytvárať pomenované konštanty. Poznať rozsah

premenné a konštanty. Vedieť konverziu typu. Vedieť, ako používať operátor priradenia. Poznať aritmetické a logické operácie. Vedieť, ako používať zreťazenie reťazcov. Vedieť, ako používať vstavané funkcie VBA. Materiály na lekciu: MS Excel 2003.

Prehľad dátových typovVizuálneZákladné (VB)

Predtým, ako sa dozviete o premenných, mali by ste pochopiť, ako VBA ukladá rôzne druhy informácií. VBA, podobne ako väčšina ostatných programovacích systémov, rozdeľuje spracované údaje na čísla, dátumy, text a ďalšie typy. Dátový typ(údajov typu) je termín, ktorý označuje určité druhy údajov, ktoré VBA ukladá a môže s nimi manipulovať. V tabuľke. 9 zovšeobecnených typov údaje VBA, ukazuje, koľko pamäte každý typ zaberá, stručne popisuje typy údajov a poskytuje rozsah hodnôt, ktoré môže typ uložiť.

Tabuľka 9– Dátové typy VBA

Zadajte názov

Veľkosť vbajtov

Celé kladné čísla od 0 do 255

Celé čísla od -32768 do 32767

Dlhé celé čísla od -2147483648 do 2147483647

Reálne čísla bežnej presnosti s

s pohyblivou rádovou čiarkou.

Záporné čísla:

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

Kladné čísla:

od 1,401298Е-45 do 3,402823Е38

Reálne čísla s dvojnásobnou presnosťou

s pohyblivou rádovou čiarkou.

Záporné čísla:

od -1,79769313486232E308 do

4,94065645841247E-324.

Kladné čísla:

od 4,94065645841247E-324 do

1,79769313486232E308

Čísla s maximálne 15 číslicami pred desatinnou čiarkou a 4 číslicami za ňou (menové jednotky). -922337203685477,5808 až 922337203685477,5807

Na ukladanie boolovských hodnôt; môže obsahovať iba hodnoty True (True) alebo False (False).

Zadajte názov

Veľkosť vbajtov

Popis a rozsah hodnôt

Na uloženie kombinácie informácií o dátume a čase. Rozsah dátumov môže byť od 1. januára 100 do 31. decembra 9999. Časový rozsah od 00:00:00 do 23:59:59

Reťazec (reťazec s premenlivou dĺžkou)

10 bajtov + Používa sa na ukladanie textu. Reťazec môže mať dĺžku od 0 po (približne) 2 miliardy znakov

Reťazec (reťazec

pevná dĺžka)

Dĺžka Používa sa na uloženie textu. Môže reťazce (jeden obsahuje od jedného do (približne) 65 400 bajtov na znak)

16 bajtov + 1 bajt/znak

Typ Variant môže uchovávať akýkoľvek iný typ údajov. Rozsah pre údaje Variant závisí od skutočných uložených údajov. V prípade textu rozsah zodpovedá typu reťazca; v prípade čísel je rozsah rovnaký ako pri type Double

Používa sa na prístup k akémukoľvek objektu rozpoznanému VBA. Ukladá adresu objektu do pamäte

V tabuľke. 9 ste narazili na reprezentáciu údajov tzv exponenciálny zápis(vedecký notový zápis), ktorý slúži na zobrazenie na externých zariadeniach (monitor, tlačiareň atď.) veľmi veľké a veľmi malé čísla v kompaktnom formáte. V exponenciálnom zápise sa hodnoty zapisujú bez úvodných alebo koncových núl a naľavo od desatinnej čiarky je iba jedna číslica. Číslo sa do určitej miery vynásobí 10, aby sa ukázalo, kde sa desatinné miesto skutočne nachádza.

VBA má šesť rôznych typov číselných údajov: bajtov, Celé číslo, Dlhé, Slobodný, Dvojité A mena. Číselné dátové typy sa používajú na ukladanie (a manipuláciu) s číslami v rôznych formátoch v závislosti od konkrétneho typu.

Program VBA (ako každý iný program) zvyčajne „robí“ rozhodnutia tak, že kontroluje, či sú splnené rôzne podmienky. Na zjednodušenie testovacích podmienok a zabezpečenie uloženia výsledkov takéhoto testovania poskytuje VBA typ údajov Boolean. Booleovské hodnoty Pravda A Nepravdivé volal boolovská hodnota(Boolean) hodnoty. Ich meno je spojené s menom matematika, ktorý vyvinul systém matematickej logiky. Booleovský dátový typ VBA sa tiež nazýva dátový typ. Boolean. Booleovský typ VBA vyžaduje dva bajty pamäte a môže mať jednu z dvoch hodnôt: Pravda alebo Nepravdivé. Ak zobrazíte typ Boolean na obrazovke ho VBA automaticky skonvertuje na reťazec obsahujúci buď slovo Pravda, alebo Nepravdivé. Booleovské hodnoty sa získajú ako

výsledok porovnávacej operácie.

VBA používa typ Dátum ukladať dátumy a časy. Netreba sa starať o to, ako VBA ukladá typové údaje. Dátum, - môžete jednoducho zobraziť, uložiť alebo manipulovať s dátumami; VBA automaticky spravuje všetky podrobnosti o prevode sériového čísla na rok, mesiac, deň a čas. typ VBA Dátum je typ po sebe idúce dátumy(sériový termíny). Po sebe idúce dátumy ukladajú dátum ako počet dní od daného počiatočného dátumu. Základný dátum pre typ VBA Dátum je 30. decembra 1899. VBA používa záporné čísla na vyjadrenie dátumov pred 30. 12. 1899 a kladné čísla pre dátumy po 30. 12. 1899. Číslo 0 predstavuje samotný dátum 30.12.1899. V tejto schéme je 1. január 1900 napísaný ako 2 (1.1.1990 sú 2 dni po 30.12.1899), ale -2 je dátum 28.12.1899 (dva dni pred 30.12.1899) . Aby ste si to overili, napíšte jednoduchý postup.

Cvičenie 1. Napíšte postup, ktorý zobrazí správu s dátumom.

Pre to:

Napíšte postup (výpis 3):

Výpis 3 Postupdátumový test

1 Sub DateTest()

2 Stmaviť d Ako Dátum 3

V dôsledku tohto postupu sa na obrazovke zobrazí základný dátum (obr. 15).

Ryža. 15 V sekvenčnej hodnote dátumu je celá časť (číslice naľavo od desatinnej čiarky) celkovým počtom dní od základného dátumu. Sériový dátum VBA môže mať číslice napravo od desatinnej čiarky; tieto čísla označujú čas dňa ako súčasť dňa. Jedna hodina je 1/24 dňa (približne 0,0416. Podobne jedna minúta je 1/1440 dňa a sekunda je 1/86400 dňa. Môžete odčítať jeden dátum od druhého, pridať k dátumu alebo odčítaním čísel ho zmeníte. hodnoty. Ak napríklad potrebujete určiť počet dní medzi dvoma dátumami, stačí odpočítať skorší dátum od neskoršieho. Pretože ide o hodnoty typu Dátum, VBA "vie", že účelom výpočtu je získať rozdiel v dňoch medzi týmito dvoma dátumami. Podobne, ak potrebujete určiť dátum 60 dní po danom dátume, jednoducho k tomuto dátumu pridajte 60.

VBA má niekoľko vstavaných postupov (opísaných v tejto časti) na samostatné extrahovanie roku, mesiaca, dňa, hodiny, minúty a sekundy z typ premennej Dátum.

Volajú sa akékoľvek textové údaje uložené v programe VBA linky(struny). Reťazce vo VBA sú uložené pomocou dátového typu Reťazec. Reťazce sú takto pomenované, pretože textové údaje sa zvyčajne považujú za reťazce znakov. Riadok môže obsahovať textové znaky akéhokoľvek typu: písmená abecedy, čísla, interpunkčné znamienka alebo rôzne symboly. Existujú dve kategórie strún: struny s premenlivou dĺžkou, ktoré rastú alebo sa zmenšujú, a struny s pevnou dĺžkou, ktoré majú vždy rovnakú veľkosť. Všetky reťazce vo VBA majú reťazce s premenlivou dĺžkou, pokiaľ nezadáte reťazec s pevnou dĺžkou. Väčšina používateľských vstupných údajov (v dialógové okná, bunky hárka) sú reťazcové údaje. Keďže na obrazovke môžete zobraziť iba text, všetky ostatné typy údajov sa musia pred zobrazením skonvertovať na reťazcové údaje. Mnoho vstavaných procedúr VBA (napr msgbox) použiť reťazcové údaje vo všetkých alebo niektorých svojich argumentoch. VBA poskytuje niekoľko operátorov pre zreťazenie(zreťaziť), teda spájať a porovnávať reťazce. VBA má tiež niekoľko vstavaných rutín, ktoré pomáhajú extrahovať podreťazce z dlhších reťazcov, hľadať znaky alebo slová v reťazci, meniť veľkosť písmen v reťazci atď. Táto časť popisuje operátory reťazcov VBA a postupy na manipuláciu s reťazcami VBA.

Dátový typ Varianta je špeciálny dátový typ, ktorý môže uložiť ktorýkoľvek z typov uvedených v tabuľke. 9, okrem typu Objekt. VBA používa typ Varianta pre všetky premenné, pokiaľ explicitne nedeklarujete typ premennej, ako je popísané ďalej v tejto časti. Zadajte údaje Varianta prevziať charakteristiky špecifického typu, ktorý v súčasnosti uchovávajú. Napríklad, ak typ údajov Varianta obsahovať reťazcové údaje, Varianta má vlastnosti typu String. Ak typ údajov Varianta obsahujú čísla, Varianta nadobúda vlastnosti nejakého číselného typu, zvyčajne − Dvojité, hoci typy Varianta môže mať aj typové vlastnosti Celé číslo, Dlhé, Slobodný alebo mena. Aj keď typy Varianta sú pohodlné a šetria časť práce pri písaní procedúr, vyžadujú viac pamäte ako ktorýkoľvek iný dátový typ, s výnimkou veľkých reťazcov. Okrem toho matematické operácie a porovnávacie operácie s údajmi typu Varianta sú pomalšie ako podobné operácie s údajmi akéhokoľvek iného typu. Vo všeobecnosti by ste sa mali vyhýbať používaniu premenných Varianta: ak sa spoliehate na premenné ako Varianta, môžete si vypestovať zvyk nedbalého programovania a bude pre vás ťažké nájsť a opraviť chyby vo vašich programoch.

Premenné

Variabilné(premenných) je názov, ktorý programátor pridelí oblasti

počítačová pamäť používaná na ukladanie určitého typu údajov. Premenné VBA môžu uchovávať ľubovoľné typy údajov uvedené v tabuľke 1. 9.

Identifikátor(identifikátor) je názov, ktorý dávate prvkom v procedúrach a moduloch, ktoré vytvárate, ako sú napríklad premenné. Pojem identifikátor je založený na skutočnosti, že názvy, ktoré vytvoríte, identifikujú konkrétne miesta v pamäti (v prípade názvu premennej), skupiny inštrukcií (v prípade názvu makra alebo procedúry) alebo iné prvky programu.

Názvy premenných nerozlišuje veľké a malé písmená(nie prípad- citlivý), teda písanie názvu premennej veľkými písmenami resp veľké písmená nevadí.

Najjednoduchší spôsob, ako vytvoriť premennú, je použiť ju v príkaze VBA. VBA vytvorí premennú a rezervuje pamäť pre pamäťové miesto premennej, keď sa premenná prvýkrát objaví v príkaze (zvyčajne príkaz, ktorý ukladá hodnotu údajov do premennej).

Uloženie hodnoty údajov do premennej sa nazýva priradenie premenných(priraďovanie a premenných alebo tvorby an zadanie). Priradenie sa vykonáva pomocou operátora priradenia reprezentovaného znakom rovnosti (=). Nasledujúci riadok je príkladom priradenia hodnoty premennej:

Tento operátor uloží číselnú hodnotu 25 na pamäťové miesto určené názvom premennej MyVar.

Vytvorenie premennej pomocou jej použitia v príkaze sa nazýva implicitná deklarácia premennej(implicitne premenných vyhlásenie). Použitím premennej v príkaze implicitne hovoríte (deklarujete) VBA, že chcete vytvoriť túto premennú. Všetky premenné, ktoré VBA vytvára implicitnou deklaráciou premennej, majú dátový typ Varianta. Implicitná deklarácia premennej je známa aj ako deklarácia premennej "za letu"(na- a- lietať).

Implicitná deklarácia premenných je pohodlná, ale má potenciálne problémy. Napríklad, keď máte premennú pomenovanú MyVar a neskôr sa pomýliť v názve napísaním MVar. V závislosti od toho, kde sa vo vašom kóde zobrazuje nesprávny názov premennej, môže VBA vyvolať chybu pri spustení alebo jednoducho vytvoriť novú premennú. Ak VBA vytvorí novú premennú, môžete mať problémy, ktoré je veľmi ťažké odhaliť.

Z týchto a ďalších dôvodov vám VBA dáva možnosť robiť explicitné(explicitné) deklarácia premenných.

Ak chcete explicitne deklarovať premenné, použite príkaz VBA Dim s nasledujúcou syntaxou:

Dim názov1 [, názov2 ]

menoN je ľubovoľný platný identifikátor premennej. Všetky premenné, ktoré vytvoríte pomocou tohto formulára kľúčových slov Dim, sú premenné

typu Varianta.

Premenná môže byť deklarovaná iba raz v jednej procedúre alebo module. Pretože príkaz Dim je pred všetkými príkazmi, ktoré skutočne používajú premennú, môžete ho umiestniť kdekoľvek v procedúre. V programátorskej praxi je dobrým pravidlom zhromaždiť všetky explicitné deklarácie premenných na jednom mieste na začiatku procedúry.

Úloha 2. Upravte postup ahoj excel z predchádzajúcej časti s použitím explicitnej definície premennej.

Pre to:

zmeniť postup ahoj excel (Výpis 4):

Výpis 4 Postupahoj excel

1 Sub HelloExcel()

2 Dim HelloMsg " premenná pre MsgBox 3

Operátor Dim (na riadku 2) výpisu 4 deklaruje premennú Dobrý deň, Msg a vyhradí si pre ňu pamäťovú oblasť (v tomto podprograme Dobrý deň, Msg je typová premenná Varianta). Riadok 2 obsahuje komentár na konci označujúci účel tejto premennej. Riadok 4 je priradenie k premennej Dobrý deň, Msg linky "Ahoj,excel!" . Ďalej (na riadku 5) sa ako jeden z argumentov procedúry použije premenná HelloMsg MsgBox. Funkcia MsgBox zobrazí rovnaké okno so správou ako predtým. Hoci MsgBox teraz dostáva svoj prvý argument z premennej, táto premenná obsahuje rovnakú informáciu o reťazci, ktorá bola predtým (vo výpisoch predchádzajúcej časti) zapísaná priamo do príkazu MsgBox.

Všetky premenné vo VBA, či už sú deklarované implicitne alebo explicitne, sú typu Variant, pokiaľ nešpecifikujete typ premennej v príkaze, ktorý ju deklaruje. Na oznámenie zadali premenná a jej typ pomocou operátora Dim pridajte kľúčové slovo As za premennú a potom zadajte názov typu údajov pre túto premennú. Tu je všeobecná syntax pre použitie operátora Dim pri deklarovaní typizovaných premenných:

Dim varnamel [, varname2 ]

varnameN predstavuje akýkoľvek platný názov premennej VBA, a typN - ktorýkoľvek z názvov dátových typov VBA.

Po deklarovaní typovanej premennej, či už je premenná deklarovaná explicitne alebo implicitne a ako je typ špecifikovaný, si táto premenná zachová rovnaký typ, kým existuje. Nemôžete znova deklarovať premennú ani predefinovať jej typ.

S implicitnou deklaráciou môžete tiež zadať typ premennej pridaním

špeciálny znak tzv symbol definície typu(typu- definícia charakter) na koniec názvu premennej. V tabuľke. Tabuľka 10 uvádza symboly definície typu VBA a typy, ktoré reprezentujú. Tabuľka 10– Symboly definície typu

Typ

Symbol definície

Typ

Symbol definície

Celé čísloDlhé

menaDvojité

Znaky definície typu sa môžu objaviť iba na konci názvu premennej. Hoci by ste mali vedieť, čo sú symboly definície typu a ako sa používajú, zriedka ich potrebujete použiť – použitie príkazu Dim s kľúčovým slovom As je oveľa jednoduchšie a prehľadnejšie. Väčšina programátorov VBA nepoužíva symboly definície typu.

Úloha 3. Upravte postup ahoj excel z úlohy 3 pomocou definície typovanej premennej.

Pre to:

zmeniť postup ahoj excel (Výpis 5):

Výpis 5 Postupahoj excel

1 Sub HelloExcel()

2 Stlmiť HelloMsg ako reťazec 3

    HelloMsg = "Ahoj Excel!"

    Title$ = "Môj prvý program"

    MsgBox HelloMsg, Title$

Táto verzia postupu ahoj excel funguje v podstate rovnakým spôsobom ako predchádzajúce. Riadok 1 obsahuje vyhlásenie o postupe. Vyhlásenie v riadku 2 Dim explicitne deklaruje premennú Dobrý deň, Msg. Keďže operátor Dim zahŕňa kľúčové slovo Ako a zadajte názov Reťazec, variabilný Dobrý deň, Msg má typ Reťazec. Riadok 4 priraďuje text správy k reťazcovej premennej Dobrý deň, Msg. Riadok 5 implicitne deklaruje premennú Názov $ a zároveň k premennej priradí text nadpisu správy. Pretože názov premennej Názov $ má na konci definičný znak typu pre reťazec, táto premenná je tiež typu String. Nakoniec riadok 6 používa príkaz MsgBox zobraziť okno so správou; v tomto vyhlásení sú premenné text správy aj záhlavie okna: Dobrý deň, Msg A Názov $, resp.

Po pridaní znaku definície typu do premennej musíte pri každom použití názvu premennej zahrnúť znak definície typu.

Či sú alebo nie sú deklarované premenné typu Reťazec pomocou operátora Dim alebo pridaním znaku na definíciu typu $ sú premenné reťazca, ktoré vytvoríte, štandardne reťazce s premennou dĺžkou.

Premenné reťazca s premennou dĺžkou menia dĺžku v závislosti od dĺžky reťazca uloženého v premennej. Niekedy možno budete musieť použiť linku pevná dĺžka(pevné- dĺžka). Šnúrky s pevnou dĺžkou majú vždy rovnakú dĺžku. Nasledujúci riadok zobrazuje všeobecnú syntax na vytvorenie reťazca s pevnou dĺžkou:

Dim varname Ako reťazec * N

varname je akýkoľvek platný názov premennej, a N je ľubovoľné číslo od 1 do 65400 znakov

Rozsah: Variabilná dostupnosť

Termín rozsah(rozsah) sa vzťahuje na rozsah procedúry alebo modulu VBA, kde je k dispozícii daná premenná, procedúra alebo iný identifikátor. Táto časť popisuje dve základné úrovne rozsahu: procedurálnu a modulárnu. Premenné, procedúry a identifikátory, ktoré sú dostupné iba v rámci procedúry, majú rozsah na úrovni postupu, zatiaľ čo tie, ktoré sú dostupné pre všetky procedúry v module, majú rozsah na úrovni modulu.

Premenná deklarovaná v procedúre je prístupná len tejto procedúre. Napríklad premenná Dobrý deň, Msg z riadku 2 výpisu 5 je k dispozícii iba v postupe ahoj excel; žiadna iná procedúra nemá prístup k tejto premennej.

Preto hovoríme, že premenná Dobrý deň, Msg procesný rozsah(postup- úrovni rozsah). V skutočnosti premenná Dobrý deň, Msg skutočne existuje iba v čase, keď VBA skutočne vykonáva procedúru ahoj excel.

Úloha 4. Vytvorte dve procedúry, ktorých rozsahom sú premenné na úrovni procedúry.

Pre to:

Zadajte dva úplné postupy (výpis 6):

Výpis 6 Postupahoj excel

1 Sub HelloExcel()

2 Stlmiť HelloMsg ako reťazec 3

    HelloMsg = "Ahoj Excel!"

    MsgBox HelloMsg, "Môj prvý program"

8 Sub HelloDave()

9 Stlmiť HelloMsg ako reťazec 10

    HelloMsg = "Ahoj Excel!"

    MsgBox HelloMsg, "Ďalšia schránka správ"

Riadky 1-6 obsahujú rovnaký postup ahoj excel z výpisu 4, ktorý funguje úplne rovnako. Do modulu bola pridaná procedúra Ahoj Dave, ktorý začína na riadku 8 výpisu 6. Postup Ahoj Dave funguje rovnako ako postup ahoj excel, len zobrazí inú textovú správu a názov v dialógovom okne. V riadkoch 2 a 9 oba postupy používajú výpis Dim na deklarovanie lokálne pomenovaných premenných Dobrý deň, Msg.

Niekedy je potrebné, aby viacero procedúr malo prístup k tej istej premennej. Zvyčajne je efektívnejšie vypočítať hodnotu raz, uložiť ju do premennej a potom túto premennú použiť vo viacerých procedúrach, ako počítať stále tú istú hodnotu.

VBA vám umožňuje deklarovať premenné, ktoré sú dostupné pre viacero procedúr. Keď je premenná dostupná pre všetky procedúry v module, hovorí sa, že premenná má rozsah. modulárnej úrovni(modul úrovni). VBA obmedzuje rozsah premennej na úrovni modulu na modul, v ktorom je premenná deklarovaná (VBA poskytuje spôsoby, ako rozšíriť rozsah premennej ešte ďalej; tieto metódy sú popísané neskôr).

Ak chcete sprístupniť premennú všetkým procedúram v konkrétnom module, zadajte príkaz Dim na začiatku modulu, pred deklaráciami procedúr.

Cvičenie 1

Vytvorte dve procedúry a jednu deklaráciu premennej na úrovni modulu (presuňte príkaz na riadok 1 Dim s premennou Dobrý deň, Msg odstránenie riadkov 2 a 9 zo zoznamu 6).

Názov premennej musí byť v rámci svojho rozsahu jedinečný. Je však možné mať zapnuté premenné s rovnakým názvom rôzneúrovne rozsahu. Keď majú premenné rovnaký názov, ale rôzne rozsahy, VBA používa premennú s najviac miestne(miestne) rozsah.

Vyžaduje sa explicitné vyhlásenie o premennej

Hoci je implicitná deklarácia premenných (deklarovanie premenných jednoduchým použitím) pohodlná, sú s ňou určité problémy. Keď sú premenné implicitne deklarované, existuje riziko neúmyselného vytvorenia novej premennej, keď skutočne potrebujete použiť existujúcu, alebo použitia existujúcej premennej, keď má používateľ v úmysle vytvoriť novú. Obe tieto situácie vedú k chybám v kóde, ktoré je veľmi ťažké vystopovať.

Aby bolo možné kedykoľvek ľahšie odhaliť chyby súvisiace s implicitnou deklaráciou premenných, poskytuje príkaz VBA MožnosťExplicitne. Použitím MožnosťExplicitne VBA vyžaduje, aby boli deklarované všetky premenné (pomocou Dim) pred ich použitím v module.

Ak chcete nastaviť režim, v ktorom VBA vyžaduje explicitnú deklaráciu pre všetky premenné v module, pridajte príkaz MožnosťExplicitne do oblasti deklarácie modulu, to znamená na začiatok modulu, pred deklarácie premenných alebo procedúr. Príkazy ako MožnosťExplicitne, sa volajú smernice kompilátora(kompilátor smernice).

Tím MožnosťExplicitne ovplyvňuje iba modul, v ktorom sa vyskytuje. Ak projekt obsahujúci tento modul obsahuje aj iné moduly, nie sú príkazom ovplyvnené MožnosťExplicitne. Do každého modulu, ktorý vyžaduje explicitné deklarácie premenných, musíte zahrnúť príkaz Option Explicit.

Pretože inklúzia MožnosťExplicitne do všetkých modulov je veľmi užitočné, VB Editor poskytuje spôsob, ako automaticky zahrnúť tento príkaz do každého nového modulu, keď je vytvorený. Pre editor VB na pridanie príkazu MožnosťExplicitne v každom novom module postupujte takto:

y vyberte príkaz Nástroje/ možnosti (Služba/Parametre); VB editor zobrazí dialógové okno možnosti;

a kliknite na kartu Editor (Editor) v prípade potreby zobrazíte možnosti úprav;

y začiarknite políčko Vyžadovať premenlivý Vyhlásenie (Explicitná deklarácia premenných);

u vyberte OK. VB editor zatvorí dialógové okno možnosti.

Cvičenie 2

Nastavte príkaz na automatické povolenie Možnosť Explicitne do každého nového modulu pri jeho vytvorení.

Konštanty

Neustále(konštantný) je hodnota v programe VBA, ktorá sa nemení. Príklady už uvedené vyššie používajú reťazcové konštanty typu "Ahoj,excel!" A "Môj prvý program". Takéto konštanty sa nazývajú doslovné konštanty(doslovne konštanty), pretože doslovná hodnota je zapísaná priamo do kódu.

V kóde VBA môžete písať aj doslovné číselné konštanty a dátumy; príklady číselných doslovných konštánt zahŕňajú čísla 25 , 3.14 . Príklady doslovných dátumových konštánt zahŕňajú dátumy #12/31/96# alebo #28. október 1997#(Viac o písaní dátumových konštánt sa dozviete neskôr v tejto časti).

VBA vám umožňuje vytvárať pomenované konštanty(pomenovaný konštanty). Pomenovaná konštanta, podobne ako premenná, má svoje meno; tento názov predstavuje určitú nemennú hodnotu. Na rozdiel od premennej sa však hodnota pomenovanej konštanty nikdy nemení. Nasledujúci riadok zobrazuje všeobecnú syntax na deklarovanie pomenovaných konštánt:

Konšt meno = valuel [operátor názov2… ] _

[, patez =hodnotu3 [operátor názov4 ] … ]

menoN predstavuje akýkoľvek platný identifikátor, hodnotaN – akákoľvek hodnota údajov: číselná, reťazec alebo dátum, a operátor je aritmetická alebo porovnávacia operácia medzi dvoma menami predtým opísaných konštánt. Ďalšie riadky zobraziť niekoľko deklarácií pomenovaných konštánt: Const Pi = 3,14, text = "Ahoj Excel!"

Konšt. Pi2 = 2*Pi

Rozsah konštánt

Rovnako ako pri premenných môžete deklarovať pomenované konštanty v procedúrach alebo v deklaračnej oblasti na začiatku modulu. Konštanta deklarovaná v procedúre má rozsah na úrovni postupu, zatiaľ čo konštanta deklarovaná v rozsahu deklarácie modulu má rozsah na úrovni modulu. Pomenované konštanty sa riadia rovnakými pravidlami rozsahu ako premenné.

Písanie doslovných konštánt

Pri písaní doslovných reťazcových konštánt v kóde VBA postupujte podľa týchto pravidiel:

ь reťazcové konštanty musia byť uzavreté v dvojitých úvodzovkách (");

b je prázdna reťazcová konštanta (tzv nulový reťazecnulový reťazec alebo prázdny reťazec) sa označuje dvoma dvojitými úvodzovkami, medzi ktorými nie je nič („“);

Všetky reťazcové konštanty b musia byť na rovnakom riadku.

Pri písaní doslovných číselných konštánt v kóde VBA postupujte podľa týchto pravidiel:

ь číselné konštanty musia pozostávať iba z číselných znakov od 0 do 9;

ь číselná konštanta môže začínať znamienkom (-) a môže obsahovať desatinnú čiarku;

b Pre ​​číselné konštanty môžete použiť exponenciálny zápis.

VBA rozpoznáva dátumové konštanty v ktoromkoľvek z niekoľkých rôznych formátov; musíte umiestniť všetky konštanty dátumu medzi znaky libry (#). Nasledujúce riadky zobrazujú niektoré formáty dátumových konštant, ktoré VBA rozpoznáva: #2-5-97 21:17:34# #5. február 1997 21:17:34# #Mag-31-97# #15. apríl 1997#

Bez ohľadu na to, v akom formáte je zapísaná doslovná konštanta dátumu, VBA preformátuje túto konštantu (keď sa kurzor odstráni z riadku po zapísaní konštanty), aby zodpovedala jednému z nasledujúcich dvoch formátov v závislosti od toho, či konštanta Date obsahuje informácie o čase: #2/5/1997 21:17:34 PM# #2/5/1997# Existujú len dve platné booleovské konštanty: True a False.

Nastavenie typu konštanty

Keď deklarujete pomenovanú konštantu alebo použijete doslovnú konštantu, VBA si „myslí“, že hodnota reprezentovaná touto konštantou má

dátový typ, ktorý sa najviac zhoduje s výrazom priradeným konštante.

Vo VBA môžete nastaviť typ konštanty. Všeobecná syntax na deklarovanie typovanej konštanty je nasledovná:

Konšt názov Ako typ = hodnota[, názov Ako typ = hodnota]

názov je akýkoľvek platný názov konštanty, typu je názov ktoréhokoľvek z dátových typov VBA a hodnotu je hodnota, ktorú priradíte konštante.

Nasledujúci riadok ilustruje správnu deklaráciu konštanty s konkrétnym typom:

Const Pi as Double = 3,14

Internékonštanty

VBA ponúka niekoľko vnútorné konštanty(vnútorný konštanty), tiež nazývaný preddefinované konštanty(vopred určené konštanty). Interná konštanta je pomenovaná konštanta, ktorá bola definovaná vývojármi VBA. Všetky interné konštanty definované VBA začínajú písmenami vb na označenie, že sú definované jazykom Visual Basic for Applications (alebo Visual Basic). Napríklad konštanty vbOKLen, vbOKZrušiť definované VBA. Interné konštanty Excelu 2002 začínajú písmenami xl aby bolo jasné, že ich definuje Excel. Vďaka interným konštantám je jednoduchšie použiť niektoré zo vstavaných procedúr VBA, ako je napríklad príkaz MsgBox, o ktorej už viete, a prevádzkovateľa InputBox, o ktorých sa bude hovoriť ďalej v tejto časti.

Zobrazte polia správ. Získavanie údajov od používateľa

Prijímanie údajov od používateľa, ich ukladanie do premennej a zobrazovanie výsledkov akcií na nej vykonaných sú základné prvky potrebné na písanie interaktívnych procedúr. Interaktívne(interaktívne) Procedúra je procedúra, ktorá komunikuje s používateľom, to znamená, že procedúra interaguje s používateľom zobrazovaním správ a prijímaním vstupu.

Funkcia MsgBox zobrazenie okna so správou má nasledujúcu syntax:

MsgBox(Prompt [, Tlačidlá ] [, Názov ] [, HelpFile , Kontext ])

argument Prompt MsgBox zobrazí tento reťazec v dialógovom okne; musí vždy poskytnúť argument Prompt, keďže toto je požadovaný argument(požadovaný argument). Argumentovať Tlačidlá (voliteľný argument), je číselný výraz, ktorý určuje tlačidlá a správy, ktoré sa majú zobraziť v dialógovom okne. Argumentovať Názov predstavuje ľubovoľnú hodnotu reťazca (doslova, konštantu alebo premennú). MsgBoxNázov, VBA sa zobrazí v záhlaví dialógového okna MsgBox slovo " Microsoftexcel" . Argumentovať HelpFile - súbor pomocníka Kontext - sekcia v súbore pomocníka. Text správy môže byť uzavretý v zátvorkách, ale zátvorky sú voliteľné, keď je funkcia MsgBox

používaný ako operátor.

Volá sa užívateľský vstup vstupné Data(vstup). Ak chcete získať vstup od používateľa procedúry, použite funkciu InputBox. Funkcia(funkciu) je špeciálny typ procedúry VBA, ktorá vracia hodnotu. Funkcia InputBox zobrazí dialógové okno s textom, ktorý používateľa vyzve na zadanie určitej hodnoty, a textové pole na zadanie tejto hodnoty. Zobrazí sa dialógové okno InputBox, obsahuje aj príkazové tlačidlá OK A Zrušiť.

Funkcia InputBox má nasledujúcu syntax:

stringvar=InputBox( Prompt[, Názov] [, Predvolené] [, XPos] [, YPos] _

[, HelpFile, Kontext])

Tu stringvar predstavuje akúkoľvek premennú, ktorá môže uložiť reťazec (alebo premennú typu Reťazec alebo - Varianta). Argumentovať Prompt predstavuje ľubovoľnú hodnotu reťazca (doslova, konštantu alebo premennú). InputBox zobrazí tento reťazec ako výzvu v dialógovom okne; musí vždy poskytnúť argument Prompt, keďže toto je požadovaný argument; všetky ostatné sú voliteľné. Argumentovať Názov je druhý argument pre InputBox. Názov predstavuje ľubovoľnú hodnotu reťazca (doslova, konštantu alebo premennú). InputBox zobrazí text tohto riadku v záhlaví dialógového okna. Ak vynecháte argument Názov, VBA sa zobrazí v záhlaví dialógového okna InputBox slovo " Microsoftexcel" . Argumentovať Predvolené – reťazcový výraz zobrazený vo vstupnom poli ako predvolený, ak používateľ nezadá iný reťazec; ak je tento argument vynechaný, vstupné pole bude prázdne. Argumenty XPos A YPos môže byť akýkoľvek číselný výraz. Tieto argumenty vám umožňujú určiť, kde sa v aktívnom okne zobrazí vstupné pole a sú to súradnice ľavého horného rohu dialógového okna: XPos – horizontálna vzdialenosť od ľavého okraja okna; YPos je vertikálna vzdialenosť od horného okraja okna. Obe vzdialenosti sa merajú v twipoch ( twips); jeden twip sa rovná 1/20 bodu (bodka je miera tlačeného písma). Keďže bod je 1/72 palca, jeden twip je približne 0,0007 palca. Posledné dva voliteľné argumenty funkcie InputBox- Toto HelpFile A Kontext. Majú rovnaký účel ako argumenty podobných funkcií. MsgBox.

Použitie argumentov pomenovanej funkcie

Ako ste si možno všimli, je ľahké neúmyselne vynechať čiarky na konci alebo zmeniť usporiadanie hodnôt argumentov vo funkciách, ktoré majú voliteľné argumenty alebo viaceré argumenty, a to aj napriek pomoci vlastnosti Auto Rýchlo (Stručná informácia) editor VB. Vynechanie alebo preusporiadanie argumentov v zozname argumentov funkcie môže mať za následok chyby nesúladu typu. Chyba (ešte horšia) sa nemusí odhaliť. Aby sa predišlo programovým chybám a uľahčilo používanie funkcií, ktoré majú voliteľné argumenty, VBA poskytuje alternatívu k uvádzaniu hodnôt v zozname argumentov v špecifickom poradí. Môžete tiež preniesť

pomocou hodnôt argumentov funkcie pomenované argumenty(pomenovaný argumenty) funkcie. Nasledujúce riadky ukazujú dve tvrdenia MsgBox, ktoré majú rovnaký výsledok; prvý príkaz používa normálnu metódu enumerácie argumentov a druhý príkaz používa metódu pomenovaných argumentov:

MsgBox AnyMsg, AnyTitle

Výzva MsgBox:=AkákoľvekSpráva, Názov:=AkýkoľvekTitul

Znak, ktorý priraďuje hodnotu pomenovanému argumentu (:=), nie je presne ten istý bežný operátor priradenia (=). Ak pri priraďovaní hodnoty k pomenovanému argumentu vynecháte dvojbodku (:), VBA nemusí nevyhnutne zistiť chybu syntaxe, ale nemusí správne interpretovať príkaz. Keď VBA vykoná tento príkaz, zobrazí jednu z niekoľkých možných chýb spustenia, často chybu nesúladu typu.

V tom istom volaní funkcie nemôžete kombinovať pomenované argumenty s bežným zoznamom argumentov. Pre každé jednotlivé volanie funkcie musíte použiť buď pomenované argumenty, alebo zoznam regulárnych argumentov.

Úloha 5. Napíšte postup, ktorý vypočíta plochu kruhu, ale dostane polomer kruhu od používateľa postupu.

Pre to:

Zadajte postup (Výpis 7):

Výpis 7 – Príjem vstupných údajov pomocou operátoraInputBox

    Const Pi As Single = 3,14" aproximácia hodnoty pi

    Dim CircleArea As Single“ uloží vypočítanú oblasť kruhu 3

4 podzoznam3_07()

    Const BoxTitle = "Oblasť kruhu"!}

    Polomer stlmenia ako jeden, teplota ako reťazec 7

    Temp = InputBox("Enter Radius" & Chr(13) & "circle", BoxTitle)

    Polomer = CSng (teplota)

    Oblasť kruhu = Pi * Polomer * Polomer

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Riadky 1 a 2 výpisu 7 deklarujú konštantu Pi a variabilné oblasť kruhu modulárnej úrovni. Riadok 4 obsahuje skutočné vyhlásenie o postupe. Riadok 5 deklaruje konštantu procedurálnej úrovne BoxTitle; táto konštanta má v procedúre iba lokálny prístup Zoznam3_07. Na riadku 8 príkaz volá funkciu InputBox. Zobrazuje svoj prvý argument ako text v dialógovom okne a vyzve používateľa, aby zadal hodnoty nejakého typu. V tomto operátorovi InputBox zobrazí text „Zadajte polomer kruhu“ (funkcia Chr(13) je symbolom prechodu na Nový riadok), aby ste používateľom postupu povedali, akú hodnotu by mali zadať. InputBox používa druhý argument,

12 Koniec pod

reprezentovaný konštantou BoxTitle, ako názov dialógového okna. Pri vykonávaní výpisu InputBox zobrazí sa dialógové okno (obr. 16)

Oblasť kruhu

Zadajte polomer kruhu

Ryža. 16 Používateľ zadá číslo do textového poľa a vyberie príkazové tlačidlo OK alebo Zrušiť zatvorte dialógové okno ako každé iné okno systému Windows. Kedykoľvek zavoláte akúkoľvek funkciu, musíte nejako použiť hodnotu vrátenú funkciou. Zavolá sa hodnota vrátená funkciou výsledok funkcie(funkciu výsledok). Ako je uvedené v riadku 8 v prípade funkcie InputBox, ktorej výsledok je priradený k premennej tepl. Výsledok funkcie InputBox je vždy reťazec (preto premenná tepl bol vyhlásený ako Reťazec). Keďže premenná tepl bol výslovne deklarovaný ako Reťazec, pred použitím v matematických výpočtoch sa musí hodnota reťazca skonvertovať na číselnú hodnotu. Riadok 9 výpisu 7 robí práve to pomocou vstavanej funkcie VBA csng na konverziu používateľského vstupu na číslo typu Single.

Výrazy vVizuálneZákladné

Výraz(výraz) je hodnota alebo skupina hodnôt, ktorá vyjadruje jednu hodnotu. Každý výraz vypočítané až(alebo má za následok) odlišnú hodnotu. Výrazy pozostávajú z jednej alebo viacerých z nasledujúcich častí: konštanty (doslovné alebo pomenované), premenné (akéhokoľvek dátového typu), operačné znaky, polia, prvky poľa, funkcie.

Výsledkom všetkých výrazov je jedna hodnota určitého typu údajov. Výsledkom výrazov môže byť aj jedna zo špeciálnych hodnôt Prázdny(neinicializovaná premenná typu Varianta alebo výsledok výrazu obsahujúceho neinicializovanú premennú typu Varianta) alebo Nulový(Nulový predstavuje výraz obsahujúci neplatné údaje). Keď vo výraze použijete ľubovoľný znak, volajú sa dátové prvky (premenné alebo konštanty), na ktoré sa pôsobí operandy(operandy); väčšina operácií vyžaduje dva operandy.

Kompatibilita dátových typov. Automatická konverzia dát

Nie všetky typy údajov sú navzájom kompatibilné a v rovnakom výraze nemôžete použiť nekompatibilné typy údajov. Napríklad aritmetické pridanie reťazca k číslu nedáva zmysel, pretože takýto výraz nemá zmysel a VBA ho nedokáže vyhodnotiť.

Mnohé typy údajov sú navzájom kompatibilné. Napríklad môžete

kombinovať rôzne typy číselných údajov v rovnakom výraze; VBA automaticky vykonáva potrebné prevody typov na rôznych číselných typoch. VBA môže tiež niekedy automaticky konvertovať iné typy údajov, takže všetky typy vo výraze sú kompatibilné, aj keď to nie je vždy možné. Je veľmi dôležité ovládať a poznať typ výrazu, pretože ak výrazy obsahujú nekompatibilné typy, VBA vyvolá chybu pri spustení – chybu typové nezhody(typu- nesúlad). Pri spracovaní výrazu obsahujúceho rôzne typy údajov sa VBA najskôr „pokúsi“ vyriešiť akýkoľvek rozdiel medzi typmi konvertovaním hodnôt vo výraze na kompatibilné typy údajov. Ak konverzia typu nevyrieši žiadne rozdiely, zobrazí sa chyba spustenia a procedúra sa zastaví. Napríklad vo výraze 25 & "Computer Science" VBA vždy vykoná zreťazenie reťazcov (spojí dva reťazce), bez ohľadu na typy premenných; výsledkom je typ Reťazec; tento výraz nikdy nevyvolá chybu nesúladu typu.

VBA zvyčajne konvertuje všetky typy číselných údajov vo výraze na typ s najvyššou presnosťou a potom priradí tento typ výsledku výrazu. Napríklad, ak výraz obsahuje číselné hodnoty s typmi Celé číslo A Slobodný, výsledkom výrazu je typ Slobodný– typ s najvyššou presnosťou v tomto výraze. Ak priradíte výsledok číselného výrazu premennej s menšou presnosťou, ako je skutočný typ výsledku výrazu, VBA zaokrúhli výsledok výrazu, kým sa jeho presnosť nezhoduje s očakávaným typom. Napríklad, ak priradíte číselný výraz, ktorého výsledkom bude číslo ako Dvojité, typ premennej Celé číslo, VBA zaokrúhli číslo s dvojitou presnosťou na zadanie Celé číslo.

Pri prevode čísla na reťazec VBA vytvorí reťazec obsahujúci všetky číslice daného čísla plus desatinnú čiarku (ak ju má číslo). Napríklad číslo 3413.72 (bodka sa používa na zapísanie čísla do kódu) sa skonvertuje na reťazec "3413.72". Ak je číslo veľmi veľké alebo veľmi malé, VBA môže vytvoriť reťazcovú reprezentáciu čísla vo vedeckej notácii; napríklad číslo 0,0000000004927 sa prevedie na reťazec "4,927E-11".

VBA dokáže konvertovať reťazec na číslo len vtedy, ak reťazec obsahuje znakovú reprezentáciu čísla v desiatkovom alebo exponenciálnom formáte. Reťazce "988.6", "812", "-186.7", "1,3E10" predstavujú čísla a VBA ich dokáže previesť na čísla. Reťazce "1 045", "74 550 $" a "Dobré ráno!" nemožno previesť na čísla.

Keď VBA konvertuje hodnoty typu Boolean do čísel, význam Pravda sa prevedie na 1 a hodnota Nepravdivé– na 0. Keď VBA skonvertuje číslo na typ Boolean, nula sa prevedie na Nepravdivé a akákoľvek iná hodnota sa prevedie na Pravda. Keď VBA konvertuje hodnoty typu Boolean k reťazcom, VBA používa reťazec "True". Pravda a "Nepravda" pre Nepravdivé.

Kedy VBA konvertuje typ údajov Dátum do čísla, výsledkom je číselná hodnota - číslo typu Dvojité, ktorý obsahuje počet dní od 30. decembra 1899 (záporné číslo predstavuje skorší dátum ako 30.12.1899). Desatinná časť čísla (ak existuje) vyjadruje čas dňa ako súčasť

deň; 0 je polnoc a 0,5 je poludnie. Vo VBA, prevod numerických dátových typov na typy Dátum je len inverzná konverzia typu Dátum do čísla.

Operátor priradenia (=)

Tento operátor sa používa na priradenie výsledku výrazu k premennej. Syntax formulára operátora priradenia je nasledovná:

varname = výraz

premenlivý varname - akákoľvek premenná, a výraz - akýkoľvek výraz.

Pri vykonávaní príkazu priradenia VBA najskôr vyhodnotí výraz napravo od príkazu priradenia (=) a potom uloží výsledok výrazu do premennej, ktorej názov je naľavo od príkazu priradenia.

Obrázok operátora priradenia vo vývojovom diagrame:

varname = výraz

Keď priradíte výsledok výrazu k premennej s konkrétnym typom údajov, výsledkom môže byť typ údajov kompatibilný s typom premennej, ktorá prijíma novú hodnotu. V mnohých prípadoch dokáže VBA konvertovať typ údajov výsledku výrazu na typ, ktorý je kompatibilný s typom premennej, ktorá nadobudne novú hodnotu, ak výsledok výrazu a premenná ešte nemajú kompatibilné typy. Variabilný typ Varianta je možné priradiť akýkoľvek typ údajov.

Aritmetické operácie

VBA dokáže vykonávať všetky bežné aritmetické operácie (implementované prostredníctvom aritmetických výrazov): sčítanie, odčítanie, násobenie a delenie, ako aj zvyšovanie čísel na zadanú mocninu a poskytuje ďalšie špeciálne matematické operácie pre celočíselné delenie a delenie modulo (tabuľka 11). .

Tabuľka 11- Znaky operátora (notácie) používané v aritmetických výrazoch VBA (Ni je akýkoľvek platný číselný výraz VBA)

Podpísať

Syntax

Meno/Popis

Doplnenie. Pridáva N1 k N2

Odčítanie. Odčíta N2 od N1

Násobenie. N1 vynásobí N2

divízie. Delí N1 číslom N2.

Celočíselné delenie. Vydelí N1 číslom N2, pričom zahodí akúkoľvek zlomkovú časť tak, aby výsledkom bolo celé číslo.

Rozdelenie modulov. Vydelí N1 číslom N2 a vráti iba zvyšok operácie delenia.

Umocňovanie. Zvyšuje N1 na silu N2.

Oba operandy musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na číslo.

Porovnávacie operácie

Porovnávacie operácie sa niekedy nazývajú aj vzťahové operácie(vzťahový operátorov). Najčastejšie sa porovnávacie operácie používajú na špecifikáciu kritérií pre rozhodovanie alebo na formulovanie popisu podmienok, za ktorých by sa mala skupina inštrukcií opakovať (zacyklenie).

Výsledkom akejkoľvek porovnávacej operácie je hodnota typu Boolean: Pravda alebo Nepravdivé. Porovnávacie operátory sa používajú na porovnanie doslovných, konštantných alebo premenných hodnôt akéhokoľvek podobného typu (tabuľka 12).

Meno/Popis

Rovnosť. Pravda , AkElrovná sa E2, inak -Nepravdivé

Menej ako. Pravda , AkElmenej ako E2, inak -Nepravdivé

Menšie alebo rovnaké.Pravda ak je E1 menšie alebo rovné

E2, inak -Nepravdivé

Viac ako. Pravda , ak je E1 väčšie ako E2, inak -Nepravdivé

Väčšie alebo rovné.Pravda ak je E1 väčšie alebo rovné

E2, inak -Nepravdivé

Nerovná sa.Pravda, ak sa E1 nerovná E2, inak - Nepravdivé

Objekt. Pravda ak El odkazuje na ten istý objekt ako E2, inak -Nepravdivé Podobnosť. Oba operandy musia byť typu

Tabuľka 12– Znaky (zápis) porovnávacích operácií (E v tejto tabuľke predstavuje akýkoľvek platný výraz VBA)

Prevádzka/Operátor

Syntax

f

vzorka,

Reťazec. Pravda, ak sa zhoduje El

Porovnanie binárnych a textových reťazcov

VBA poskytuje dva rôzne spôsoby porovnávania rôznych znakov prípadu. Prvá metóda, ktorú VBA používa na porovnávanie reťazcov, sa volá binárne (binárne) alebo binárne porovnanie a je predvolenou porovnávacou metódou. Ak chcete vybrať metódu porovnávania reťazcov dostupnú vo VBA (binárnu alebo textovú), použite smernicu MožnosťPorovnaj:

Možnosť Porovnať [ Binárne | Text]

V textovom porovnaní VBA „považuje“ veľké písmená za ekvivalent malých písmen.

Reťazenie reťazcov

VBA vám dáva možnosť spájať (lepiť) reťazce dohromady a vytvárať dlhšie reťazce. Spojenie jedného reťazca s druhým sa nazýva zreťazenie(zreťazenie) linky. Znak & možno použiť iba na zreťazenie reťazcov. Všeobecná syntax pre znak & je:

Operand1 & Operand2 [& Operand3… ]

Operand1 A Operand2 – všetky platné reťazce alebo číselné výrazy. Ak jeden alebo oba operandy sú číselné výrazy, VBA pred vykonaním operácie zreťazenia skonvertuje čísla na reťazce. Typ údajov výsledku zreťazenia reťazcov je vždy typ Reťazec.

Logické operátory

Najbežnejšie použitie logických príkazov VBA je spájanie výsledkov jednotlivých porovnávacích výrazov na vytvorenie komplexných rozhodovacích kritérií v procedúre alebo na vytvorenie podmienok, za ktorých sa musí skupina príkazov opakovať (tabuľka 13).

Tabuľka 13– Booleovské operátory (E v tejto tabuľke predstavuje akýkoľvek platný výraz s logickým výsledkom, ako je napríklad operácia porovnania)

Názov/popis syntaxe operátora

A El a E2 Konjunkcia. Pravda ak E1 aj E2 majú hodnotu

Pravda , inak -Nepravdivé Alebo El alebo E2 Disjunkcia. Pravda ak jeden výraz alebo oba (E1 a

E2) sú rovnakéPravda ; inak -Nepravdivé Nie Nie El Negácia. Pravda ak na E1 záleží Nepravdivé; Nepravdivé,

AkElje rovnéPravda

Výnimka. Pravda ak E1 a E2 majú rozdielne

hodnoty; inak -Nepravdivé

Ekvivalencia. Pravda ak má E1 to isté

hodnota ako E2; inak -Nepravdivé

implikácia. Nepravdivé keď sa E1 rovná Pravda A

E2 jeNepravdivé ; inak -Pravda .

Operačné priority pri hodnotení komplexných výrazov

komplexné(zložený) výraz(komplexné výraz) je akýkoľvek výraz vytvorený z dvoch alebo viacerých výrazov. Mnohé z výrazov, ktoré píšete, sú zložité výrazy, najmä ak riadia postupnosť vykonávania kódu v procedúrach alebo predstavujú rôzne matematické vzorce (tabuľka 14).

Tabuľka 14– Hierarchia operátorov/operácií od najvyššej po najnižšiu prioritu

Operátor/podpis Komentáre

umocnenie, najvyššia priorita

unárne mínus

Násobenie a delenie majú rovnakú prednosť; vyhodnocujú sa tak, ako sa objavujú vo výraze zľava doprava

Sčítanie a odčítanie majú rovnakú prednosť; vyhodnocujú sa tak, ako sa objavujú vo výraze zľava doprava

Akékoľvek zreťazenie reťazcov sa vykoná po akýchkoľvek aritmetických operáciách vo výraze a pred akýmikoľvek porovnávacími alebo porovnávacími operáciami. logické operácie

<, <=, >, >=,

Páči sa mi, =,<>, Je

Všetky porovnávacie operátory majú rovnakú prioritu a vo výraze sa vyhodnocujú zľava doprava. Použite zátvorky na zoskupenie operátorov porovnávania vo výrazoch

Používanie funkciíVisual Basic

Už ste použili vstavané funkcie VBA: InputBox A MsgBox. Funkcia(funkciu) je vstavaný vzorec, ktorý pracuje s výrazmi a generuje hodnotu. Funkcia vždy vráti hodnotu, ktorú VBA vloží do programu v mieste, kde sa objaví názov funkcie. Funkcie VBA sú rozdelené do niekoľkých skupín podľa typu operácie alebo výpočtu, ktorý vykonávajú. Nemýľte si pojmy funkciu A postup. Procedúra zvyčajne vykonáva konkrétnu úlohu (alebo skupinu úloh) rovnakým spôsobom, ako konkrétny príkaz ponuky v Exceli, Worde alebo inej aplikácii vykonáva konkrétnu úlohu. Funkcia pracuje s jednou alebo viacerými hodnotami a vracia nejakú výslednú hodnotu (napríklad vzorec v bunke hárka programu Excel). Ak chcete použiť funkciu, jednoducho zadajte názov funkcie do príkazu VBA spolu so všetkými argumentmi, ktoré funkcia vyžaduje, v bode príkazu, kde potrebujete použiť výsledok funkcie. Zavolá sa vloženie názvu funkcie do príkazu VBA na vyvolanie funkcie výzva(volania) funkcie.

Vstavané funkcie VBA sú rozdelené do niekoľkých kategórií na základe všeobecného účelu funkcií (matematika, konverzia údajov, dátum a čas, reťazec a manipulácia s diskom).

Matematické funkcie

VBA poskytuje štandardnú sadu matematických funkcií (tabuľka 15). Tabuľka 15– matematické funkcie VBA (N znamená ľubovoľný číselný výraz)

návraty/akcia

Funkcie (ar-

gumičky)

Vráti absolútnu hodnotuN

abs(N)

Kosínus uhlaN, KdeN

Cos(N)

Vráti sínus uhla;Nje uhol meraný v radiánoch

Sin(N)

Tan(N)

Vráti tangens uhla;N- uhol v radiánoch

Atn(N)

Vráti arkus tangensNako uhol v radiánoch

Vráti konštantu e, zvýšený na výkon N ( e je základom prirodzených logaritmov a je (približne) rovná sa 2,718282)

Vráti celú časť čísla N. Fix nezaokrúhli číslo, ale zahodí akúkoľvek zlomkovú časť. Ak je N záporné, funkcia Fix vráti najbližšie záporné celé číslo väčší alebo rovnýN

Log(N)

Vráti celú časť čísla N. Int nezaokrúhli číslo, ale zahodí akúkoľvek zlomkovú časť. Ak je N záporné, Int vráti najbližšie záporné celé číslo menší alebo rovnýNVráti prirodzený logaritmusN

náhodný

argument

je

sa vracia

voliteľné. Funkciu Rnd použite až potom

inicializácia generátora náhodných čísel VBA operátorom

Randomizovať

Vráti znamienko čísla: -1, ak je N záporné; 1, ak N je

pozitívny; 0 akNje 0

Vráti druhú odmocninu z N. VBA zobrazí chybu

čas vykonania, akN- negatívny

Funkcie konverzie údajov

Visual Basic poskytuje niekoľko funkcií na konverziu jedného typu údajov na iný (tabuľka 16). Pomocou týchto funkcií môžete vyriešiť chyby nesúladu typov a poskytnúť explicitnú kontrolu nad typmi údajov vo výrazoch.

Tabuľka 16- Funkcie konverzie údajov (N je ľubovoľné číslo, S je ľubovoľný reťazec a E je akýkoľvek typ výrazu)

Funkcia(ar- Návraty/Akciagumičky)

Vráti číslo kódu znaku zodpovedajúce prvému písmenu linkyS. Napríklad písmeno "A" má kód znaku 65

Funkcia (argumenty)

návraty/akcia

Vráti reťazec jedného znaku zodpovedajúci kódu N, čo musí byť číslo od 0 do 255 vrátane. Napríklad kód znaku 65 vráti písmeno "A" (Chr(13) je znak návratu vozíka, Chr(10) je znak posunu riadka)

Vráti reťazec obsahujúci hodnotu reprezentovanú výrazom E vo formáte podľa pokynov obsiahnutých v S

Vráti reťazec obsahujúci hexadecimálnu reprezentáciu N

Oct(N) Vráti reťazec obsahujúci osmičkovú reprezentáciu N

Vráti celé číslo typu Dlhé A, ktoré predstavuje hodnotu základných farieb obrázka. N v každom argumente musí byť celé číslo v rozsahu 0 až 255 vrátane. Argumenty (zľava doprava) sú hodnoty pre červenú, zelenú a modrú.

Str(N) Vráti reťazec ekvivalentný číselnému výrazu N

Vráti číselnú hodnotu zodpovedajúcu číslu reprezentovanému reťazcom S, ktorý musí obsahovať iba číslice a jednu desatinnú čiarku, inak ho VBA nedokáže skonvertovať na číslo. Ak VBA nedokáže skonvertovať reťazec na S, potom funkcia Val vráti 0

CBool(N) Vráti boolovský ekvivalent číselného výrazu N

bajtov(od 0 do 255); E je akýkoľvek platný číselný alebo reťazcový výraz, ktorý možno previesť na číslo

Vráti číselnú hodnotu typu mena

Vráti hodnotu typu Dátum. E môže byť akýkoľvek platný výraz (reťazec alebo číslo) predstavujúci dátum v rozsahu 1/1/100 12/31/9999 vrátane

Vráti číselnú hodnotu typu Dvojité, ktoré je možné previesť na číslo

Vráti číselnú hodnotu typu Celé číslo; E je akýkoľvek platný číselný alebo reťazcový výraz, ktorý možno previesť na číslo

Vráti číselnú hodnotu typu Dlhé; E je akýkoľvek platný číselný alebo reťazcový výraz, ktorý možno previesť na číslo

Funkcia (argumenty)

návraty/akcia

Vráti číselnú hodnotu typu Slobodný; E je akýkoľvek platný číselný alebo reťazcový výraz, ktorý možno previesť na číslo

Vráti hodnotu typu Reťazec; E – akýkoľvek platný číselný alebo reťazcový výraz

Vráti hodnotu typu Varianta; E – akýkoľvek platný číselný alebo reťazcový výraz

Funkcie dátumu a času

Funkcie dátumu a času VBA sa bežne používajú na získanie aktuálneho dátumu a času, rozdelenie hodnoty dátumu na jednotlivé časti alebo konverziu reťazcov a čísel na hodnoty typu Dátum(Tabuľka 17).

Tabuľka 17– Funkcie dátumu a času (N je akýkoľvek platný číselný výraz a D je akýkoľvek platný výraz, napr Dátum(vrátane hodnôt ako Dátum, čísla alebo reťazce, ktoré VBA dokáže previesť na dátum); všetky argumenty funkcie sú povinné, pokiaľ nie je uvedené inak)

návraty/akcia

Funkcie (ar-

gumičky)

Vráti systémový dátum. Túto funkciu môžete použiť aj ako postup na nastavenie systémových hodín počítača. Viac podrobností nájdete v pomocníkovi systémovVBA

Vráti systémový čas počítača ako hodnotu typu Dátum. Túto funkciu môžete použiť aj ako postup na nastavenie systémových hodín. Viac podrobností nájdete od systém pomoci VBAVráti systémový dátum a čas

Dátum A

Vráti celé číslo, ktoré je súčasťou výrazu typu Dátum,

vrátane

Vráti celé číslo, ktoré je súčasťou výrazu typu Dátum A

Pracovný deň (D) Hodina (D)

vrátane

Vráti celé číslo obsahujúce deň v týždni pre výraz typu

Dátum. Deň v týždni sa vráti ako číslo medzi 1 a 7,

vrátane; 1 je nedeľa, 2 je pondelok atď.

Vráti celé číslo obsahujúce hodiny ako časť času,

číslo medzi 0 a 23 vrátane. Ak výraz D nie je

obsahuje časové hodnoty, tedahodinavráti 0

Funkcie (ar-gumičky)

DateAdd(S, N, D)

DateSerial(N, N, N)

TimeSerial (N, N, N)

návraty/akcia

Vráti celé číslo obsahujúce minúty ako súčasť času v

typový výraz Dátum. Minúty sa vrátia ako číslo medzi 0

a 59 vrátane. Ak výraz D neobsahuje hodnotu

časMinútavráti 0

Vráti celé číslo obsahujúce sekundy ako súčasť času v

typový výraz Dátum. Sekundy sa vrátia ako číslo medzi

0 a 59 vrátane. Ak výraz D neobsahuje hodnotu

časPo druhévráti 0

Vráti hodnotu [typ Varianta(Dátum)], ktorý obsahuje dátum do

DateDiff(S, D1, Vráti hodnotu [typ Varianta(Dlhé)] počet dočasných D2[,Nl [, N2 ]]) intervaly medzi dvoma konkrétnymi dátumami DatePart(S, D, [, Vráti zadanú časť [typ Varianta(Celé číslo)] N1 [, N2]]) daný dátum

ku ktorému sa pridáva daný časový interval

Vráti sekvenčnú hodnotu dátumu pre daný dátum. Zľava doprava predstavujú argumenty rok, mesiac a deň. Argument roka musí byť celé číslo od 100 do 9999, mesiace od 1 do 12, dni od 1 do 31 (všetky rozsahy sú zahrnuté)

Vráti sériovú časovú hodnotu. Zľava doprava predstavujú argumenty hodiny, minúty a sekundy. Argument hodín musí byť celé číslo medzi 0 a 23, argumenty minúty aj sekundy musia byť čísla od 0 do 59 Vráti hodnotu typu Dátum, ekvivalentné dátumu uvedenému argumentom E, ktorý musí byť reťazec, číslo alebo konštanta predstavujúca dátum

polnoci podľa systémového času počítača Niektoré z týchto funkcií už boli použité v príkladoch v tejto knihe, iné budú použité neskôr.

Funkcie reťazcov

Funkcie reťazca VBA sa často používajú na nájdenie daných reťazcov v rámci iných reťazcov, na porovnanie jedného reťazca s druhým a na kopírovanie vybraných častí reťazcov (tabuľka 18).

Vráti hodnotu typu Dátum A obsahujúce čas špecifikovaný argumentom E, ktorým môže byť reťazec, číslo alebo konštanta predstavujúca čas Vráti číslo predstavujúce počet sekúnd od

Tabuľka 18– Reťazcové funkcie (N je akýkoľvek platný číselný výraz a S je akýkoľvek platný reťazcový výraz)

gumový)

Vráti polohu S2 v S1. N1 je východisková pozícia pre

Vyhľadávanie; N2 definuje typ porovnania. N1 a N2 sú voliteľné. Ak sa vynechá N2, potom prúd inštaláciaMožnosť Porovnaj InStrRev(Sl, S2 Vráti pozíciu, kde sa reťazec S2 nachádza v S1

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

Len(S) LTrim(S)

Medzerník (N) StrComp(Sl, S2, N)

v smere od konca (alebo N1) po začiatok reťazca. N2 definuje typ porovnania. Ak sa vynechá N2, vyhľadávanie použije aktuálna inštaláciaMožnosť Porovnaj

Vráti reťazec (typ Reťazec), ktorý obsahuje kópiu písmena S so všetkými veľkými písmenami skonvertovanými na znaky malými písmenami

Vráti reťazec; skopíruje N znakov zo S, začínajúc zľava extrémny charakterS

Vráti počet znakov v S vrátane úvodných a koncových znakov priestory

z ľavej strany reťazca (začiatočné medzery) Vráti reťazec; skopíruje N2 znakov z S, počnúc od pozície znaku v S určenej argumentom N1. N2 je voliteľný; ak je N2 vynechané, potom Mid vráti všetko znaky v reťazciSz pozícieN1 na koniec riadku Vráti hodnotu typu String; skopíruje N znakov z S,

počnúc znakom úplne vpravoS

Vráti kópiu reťazca S po odstránení prázdnych znakov

z pravej strany reťazca (koncové znaky)

Vráti reťazec medzier dĺžkyNpostavy

Porovná S1 s S2 a vráti číslo označujúce výsledok porovnania: -1, ak SI< S2; 0, если SI = S2; 1, если SI >S2. N je voliteľné a označuje, či by sa pri porovnaní mali rozlišovať veľké a malé písmená. Ak vynecháte N, reťazce sa porovnajú pomocou aktuálneho nastavenia. MožnosťPorovnaj

Vráti reťazec skonvertovaný na nový formulár v závislosti od číselného kódu špecifikovaného argumentom N. VBA poskytuje interné konštanty na použitie s funkciou StrConv; najužitočnejšie sú: vbProperCase(konvertuje reťazec tak, že každé písmeno, ktoré začína slovo, je veľké), vbLowerCase(konvertuje reťazec na malé písmená) a vbUpperCase(konvertuje reťazec na veľké písmená)

Funkcia(ar- Návraty/Akciagumový)

String(N, S) Vráti reťazec s dĺžkou N znakov, ktorý pozostáva zo znaku

daný prvým znakom vS Trim(S) Vráti kópiu reťazca S za úvodným a

koncové medzery z tohto reťazca UCase(S) Vráti S so všetkými malými písmenami,

prevedené na veľké písmená Viaceré uvedené v tabuľke. 16 funkcií konverzie dátových typov sa vzťahuje aj na manipuláciu s reťazcami: najmä Chr, Format, CStr.

Formátovanie hodnôt údajov

Hoci VBA dokáže automaticky konvertovať akýkoľvek typ údajov na reťazec na zobrazenie pomocou funkcie MsgBox alebo na vloženie do pracovného hárka programu Excel, formát údajov, ktorý VBA vyberie, nemusí byť taký, aký chcete. Pri prevode čísla na reťazec VBA nepridáva do reťazca oddeľovač tisícok, znaky dolára ani iné číselné formátovanie. Ak je číslo veľmi veľké alebo veľmi malé, VBA vytvorí reťazec predstavujúci číslo v exponenciálnom formáte. Pri prevode dátumov VBA vždy používa krátky formát dátumu a času používaný operačným systémom počítača a vždy zobrazuje dátum aj čas.

Ak chcete získať takmer akýkoľvek formát dátumu pri prevode čísel alebo dátumov na reťazce, môžete použiť funkciu Formátovať; môžete dokonca použiť funkciu Formátovať na formátovanie údajov reťazca podľa špecifického vzoru. Môžete tiež vytvoriť vlastné formáty obrazovky, ak potrebujete, aby sa údaje zobrazovali v konkrétnom formáte. Syntax operátora Formát je:

Formát( výraz [, Formátovať[, Prvý deň týždňa [, Prvý týždeň v roku]]])

výraz – akýkoľvek platný výraz (povinný); Formátovať – platný pomenovaný alebo používateľom definovaný formátový výraz (voliteľné); Prvý deň týždňa – konštanta, ktorá určuje prvý deň v týždni (voliteľné); Prvý týždeň v roku – konštanta, ktorá určuje prvý týždeň v roku (voliteľné).

Na argumenty Prvý deň týždňa A Prvý týždeň v roku VBA pomenoval konštanty, o ktorých sa môžete dozvedieť v systéme pomoci VBA v časti Dátumové konštanty.

Ak chcete použiť funkciu Formátovať, môžete buď zadať preddefinovaný formát (tzv pomenovaný formát(pomenovaný formát), alebo vytvorte obrázok konkrétneho formátu pomocou kombinácií špeciálnej skupiny znakov tzv zástupné symboly(zástupné symboly). Ak potrebujete vytvoriť vlastné formáty pre čísla, dátumy alebo časy, musíte vytvoriť reťazec obsahujúci zástupné znaky na určenie formátu obrázka, ktorý má funkcia použiť. Formátovať pri prevode hodnôt na reťazec (tabuľka 19). Okrem toho v tabuľke. 19 použité

číselná hodnota je napríklad 1234,5.

vytvoriť vlastný

Tabuľka 19– Formátovať zástupné symboly

zástupný znak

Akcia

Číselný znak, zobrazuje číslicu, ak je na danej pozícii jedna, alebo 0, ak žiadna nie je. Znak 0 môžete použiť na zobrazenie počiatočných núl pre celé čísla a koncových núl pre desatinné miesta; 00000.000 zobrazuje 00124,500

Číselný znak, zobrazuje číslicu, ak je na danej pozícii jedna, inak nezobrazuje nič. Výplňový znak # je ekvivalentný 0, okrem toho, že úvodné a koncové nuly sa nezobrazujú; #####.### zobrazuje 1234,5

$ Zobrazuje znak dolára; $###,###.00 zobrazí 1 234,50 $

Desatinný zástupný symbol, zobrazí desatinnú čiarku na určenom mieste v zástupnom reťazci 0; #.##.## zobrazuje 1234,5

Znak percenta, vynásobí hodnotu 100 a pridá znak percenta na pozíciu označenú zástupnými symbolmi 0; #0.00% zobrazí číslo 0,12345 ako 12,35 % (12,345 je zaokrúhlené na 12,35)

, (čiarka)

Oddeľovač tisícok pridáva čiarky ako oddeľovače tisícov v zástupných znakových reťazcoch 0 a #; ###,###,###. 00 zobrazuje 1 234,50

Zobrazuje hodnoty v exponenciálnom formáte s exponentom iba pre záporné hodnoty; #.#### E00 displeje 1.2345E03; 0,12345 sa zobrazí ako 1,2345E-01

Zobrazuje hodnoty v exponenciálnom formáte s exponentom pre kladné a záporné hodnoty; #.#### E+00 zobrazuje 1.2345E+03

Oddeľuje deň, mesiac a rok pre formátovanie hodnôt dátumu. mm/ dd/ yy zobrazuje 06/06/97. Znaky "/" možno nahradiť znakmi pomlčky, aby sa zobrazili ako 06-06-97

Určuje spôsob zobrazenia mesiacov v dátumoch; m zobrazuje 2, mm– 02, hmmm– feb mmmm- február

Určuje spôsob zobrazenia dní v dátumoch; d zobrazuje 1, dd zobrazuje 01, ddd– piatok, dddd- piatok

y Zobrazuje deň v roku ako číslo od 1 do 366

Určuje spôsob zobrazenia rokov v dátumoch; yy zobrazuje 99, uuuu– 1999

Zobrazuje štvrť roka ako číslo medzi 1 a 4

Zobrazuje deň v týždni ako číslo (1 je nedeľa)

Zobrazuje týždeň v roku ako číslo od 1 do 54

zástupný znak

Akcia

: (dvojbodka) Oddeľuje hodiny, minúty a sekundy v hodnotách formátu času; hh: mm: ss zobrazuje 02:02:02

Určuje spôsob zobrazenia hodín; pre hodnotu času 02:01:38 h zobrazuje 2, hh zobrazuje 02

Zástupný znak minúty pre čas; pre časovú hodnotu 02:01:08 n zobrazuje 1 a nn zobrazuje 01

Zástupný symbol sekúnd pre čas; pre časovú hodnotu 02:01:08 s zobrazuje 8 a ss zobrazuje 08

Zobrazuje čas v 12-hodinovom formáte s pridanými AM a PM; h: nnDOPOLUDNIA POPOLUDNÍ zobrazuje 16:00. Alternatívne formáty zahŕňajú am/pm, A/P a a/p

Zástupný znak znaku, zobrazuje medzeru, ak sa vo formátovanom reťazci nenachádza žiadny zodpovedajúci znak (predvolené poradie výplne je sprava doľava)

Zobrazuje všetky znaky veľkými písmenami

Zobrazuje všetky znaky malými písmenami

Používanie funkcií hostiteľskej aplikácie

Okrem funkcií zabudovaných do Visual Basic for Applications sú niektoré funkcie hostiteľskej aplikácie VBA dostupné z kódu VBA. Hostiteľ-aplikácia je aplikácia, ktorá vyvíja postupy VBA, ako sú Word, Excel, PowerPoint, Outlook alebo FrontPage. Excel má napríklad rôzne funkcie, ktoré vykonávajú matematické, logické, finančné a štatistické operácie s údajmi v hárkoch. Mnohé (aj keď nie všetky) z týchto funkcií Excelu sú prístupné z kódu VBA. Funkcie hostiteľskej aplikácie dostupné pre VBA nie sú súčasťou VBA, sú súčasťou hostiteľskej aplikácie. Funkcie dostupné pre VBA v jednej hostiteľskej aplikácii nemusia byť dostupné v inej.

Ak chcete použiť funkciu, ktorá patrí do nejakej hostiteľskej aplikácie, pozrite si funkciu prostredníctvom programového objektu Aplikácia. Objekt Application VBA predstavuje hostiteľskú aplikáciu a všetky jej prostriedky. Objekty sú podrobnejšie popísané v 6. časti.

Úloha 6. Napíšte postup, ktorý využíva funkciu Excelu Max.

Pre to:

Zadajte postup (Výpis 8):

Výpis 8 – Používanie funkcie ExceluMax

1 podzoznam3_08()

2 Aplikácia MsgBox. Max (9, 17, -18, 20)

Za slovom Aplikácia nasleduje bodka (.) a potom názov funkcie max bez medzier. Tento bod sa nazýva oddeľovací bod(bodka oddeľovač) označuje, že operátor odkazuje na funkciu max, ktorý je súčasťou objektu

Aplikácia.

Výsledok funkcie programu Excel nemožno ignorovať. Vo volaní funkcie programu Excel musíte vždy zahrnúť zátvorky a vždy nejakým spôsobom použiť výsledok funkcie: ako hodnotu vo výraze, ako argument inej funkcie alebo procedúry alebo v príkaze priradenia.

Nie všetky funkcie hostiteľskej aplikácie sú dostupné pre VBA. Ak si nie ste istý, či je pre VBA dostupná konkrétna funkcia hostiteľskej aplikácie, použite Objekt Prehliadač aby ste skontrolovali, či zoznam obsahuje členov (Komponent) túto funkciu s vybratým Funkcia pracovného listu na zozname triedy (triedy) a s vybratou hostiteľskou aplikáciou v zozname projektu/ Knižnica (Projekt / Knižnica). Ak požadovanú funkciu nie je uvedené, nie je k dispozícii pre VBA.

Kontrolné otázky

    Definujte pojem „typy údajov“. Aké typy údajov sa používajú vo VBA?

    Čo je identifikátor?

    Čo je to premenná? Čo znamená výraz „definovať premennú implicitne“ a čo znamená „explicitne“?

    Aké konštanty sa používajú vo VBA? Čo sú vnútorné konštanty?

    Na čo slúžia funkcie InputBox a MsgBox?

    čo je výraz?

    Definujte syntax operátora priradenia.

    Čo sú to relačné operácie?

    Čo je prioritou matematických operácií?

    Aké kľúčové slovo existuje vo VBA, ktoré sa má použiť pri prístupe Excel funkcie? Na čo môžete použiť okno prehliadača objektov?

  • Boolean- booleovský dátový typ môže uchovávať iba dve hodnoty: True alebo False, true alebo false. Použitie namiesto celočíselných premenných je dobrý štýl programovania.
  • bajtov- typ bajtu je nový vo Visual Basic 5 a je určený na ukladanie celých čísel od 0 do 255. Jeho použitie umožňuje výrazne ušetriť RAM a zmenšiť veľkosť polí v porovnaní s predchádzajúce verzie Visual Basic. Okrem toho sa používa pri práci s binárnymi súbormi.
  • mena - daný typ chýba vo verziách GW-BASIC a QuickBASIC. Je navrhnutý tak, aby sa zabránilo chybám pri konverzii. desatinné čísla do binárneho tvaru a naopak. (Nie je možné vyjadriť 1/10 ako súčet 1/2, 1/4, 1/8, 1/16 atď.) Tento typ môže mať až 4 číslice za desatinnou čiarkou a až 14 pred to. V rámci tohto rozsahu budú výpočty presné. Identifikátorom je znak „@“. Keďže všetky aritmetické operácie okrem sčítania a odčítania sa vykonávajú rovnako pomaly ako v prípade premenných s dvojnásobnou presnosťou, tento typ sa uprednostňuje pri finančných výpočtoch. (Pre tých, ktorí sa zaujímajú, tento typ používa 19-miestne celé čísla, ktoré sa potom delia 10 000. To umožňuje 15 desatinných miest a 4 desatinné miesta.)
  • Dátum- Tento typ údajov vám umožňuje ukladať hodnoty času a dátumu medzi polnocou 1. januára 100 a polnocou 31. decembra 9999. Takéto hodnoty sú v texte programu označené znakmi „#“, napríklad: NewYear = #január 1, 2000# Ak je zadaná iba hodnota dátumu, Visual Basic predpokladá, že čas je 00:00.
  • Desatinné je najvýkonnejší číselný typ. Na uloženie premennej tohto typu je pridelených 16 bajtov. Záporné a kladné hranice intervalu, v ktorom sa nachádzajú možné hodnoty tejto premennej, sú rovnaké v absolútnej hodnote a rovnajú sa +/- 79 228 162 514 264 337 593 543 950 335, ak sa použijú celé čísla. Ak je potrebné uložiť zlomkové hodnoty, hranice možných hodnôt sa posunú o niekoľko rádov v závislosti od toho, koľko desatinných miest vývojár používa. Tento typ možno použiť iba na ukladanie desatinných miest. Vývojár môže použiť až 28 desatinných miest.
  • Dvojité- Premenné tohto typu umožňujú ukladať čísla s presnosťou až 16 číslic a dĺžkou až 300 znakov. Identifikátor je "#". Výpočty s nimi sú tiež približné a ich rýchlosť je pomerne malá. Dvojité premenné sa používajú najmä na vedecké výpočty.
  • Celé číslo- Celočíselné premenné môžu ukladať len relatívne malé celé čísla (medzi -32768 a +32767). Aritmetické operácie nad takéto čísla sa vykonávajú veľmi rýchlo. Znak "%" sa používa na označenie tohto typu: IntegerPerem% = 3
  • Dlhé- tento typ sa prvýkrát objavil v jazyku QuickBASIC. Takéto premenné uchovávajú celočíselné hodnoty od -2 147 483 648 do +2 147 483 647. Označené symbolom "&". Aritmetické operácie na takýchto číslach sú tiež veľmi rýchle a pri práci s procesorom 386DX alebo 486DX bol len malý rozdiel v rýchlosti výpočtu medzi Long a Integer. LongPerem& = 123456789
  • Objekt- v skutočnosti je premenná tohto typu len odkazom na konkrétnu inštanciu objektu. Premenná je uložená v 4 bajtoch.
  • Slobodný- identifikátorom pre tieto čísla je symbol "!". Tento typ premennej vám umožňuje uložiť zlomkové čísla až do siedmich číslic. To znamená, že ak je výsledok 12345678,97, potom časť 8,97 nie je presná. Výsledkom môže byť napríklad 12345670,01. Čísla môžu mať dĺžku až 38 znakov. Výpočty s týmito premennými budú tiež približné. Okrem toho je aritmetika pomalšia ako pri celočíselných premenných.
  • Reťazec- reťazcové premenné ukladajú znaky. Jedným zo spôsobov, ako označiť tento typ premennej, je pridať znak „$“ na koniec jej názvu, napríklad: StringPerem$. Teoreticky môže takáto premenná obsahovať až 2 miliardy znakov. V každom prípade na konkrétnom počítači bude toto číslo oveľa menšie kvôli obmedzeným objemom. Náhodný vstup do pamäťe, prostriedky systému Windows alebo počet znakov použitých vo formulári. Jedným z najzákladnejších použití reťazcových premenných je výber informácií zo vstupných polí.

Ak napríklad zmeníte text v textovom poli 1, textové pole zobrazí rovnaký text, ale bez posledného znaku vpravo:

Možnosť Explicitné Dim strText As String Private Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub Private Sub Text1_Change() On Error Pokračovať ďalej Text2.Text = strText strText = Left(Text1.Text, Len(Text1) .Text) - 1) End Sub

Varianta- tento typ bol pridaný vo Visual Basic 5 od verzie 2.0. Premenná typu variant môže obsahovať dáta ľubovoľného typu. Ak Visual Basic nepozná typ prijímaných údajov, musíte použiť variant. Na type informácie nezáleží, pretože variant môže obsahovať ľubovoľný typ údajov (číselný, dátum/čas, reťazec). Visual Basic vykonáva potrebné transformácie údajov automaticky, takže sa o to nemusíte starať. Na druhej strane môžete pomocou vstavaných funkcií skontrolovať typ údajov uložených v premennej typu variant. Uľahčujú kontrolu, či používateľ zadáva informácie správne. Použitie typu údajov, ako je variant, spomaľuje program, pretože operácie konverzie typu si vyžadujú čas a zdroje. Mnohí programátori si navyše uvedomujú, že používanie automatických konverzií dátových typov vedie k nedbalým programom. Jediný dôvod v použití variantu spočíva v možných chybách pri konverzii typov priamo programátorom.

Niekedy pri používaní niektorých operátorov, funkcií API alebo len pre vlastnú potrebu je potrebné vytvoriť si vlastné dátové typy. Často sa označujú ako štruktúry. Vo svojom jadre je štruktúra ako jednorozmerné pole, ktoré vtesnáme do jednej premennej. Môže však obsahovať údaje rôznych typov.

Vytvorenie vlastného typu údajov sa vykonáva pomocou príkazu Type, ktorý sa používa v časti Všeobecné kódu formulára.