Základní vizuální typy proměnných. Programovací jazyk Visual Basic

Protože Visual Basic může určit variabilní typ od ní význam(cm. Varianta), pak typ proměnné nemusí být deklarován (neuveden). Nicméně, deklarace proměnné je pravidlem správné programátorské praxe a také umožňuje vyhnout se některým chybám v programu, jako je nestejný pravopis názvu proměnné na různých místech v programu, nedodržování datových typů ve výpočtech.

Proměnná je deklarována na začátku okna kódu nebo na začátku procedury pomocí operátora Ztlumit s takovým zápisem:

Dim VariableName jako VariableType

Jako typ proměnné jsou specifikována slova Byte, Dlouhý, Řetězec a další z tabulky typů (viz výše).

Například:
Ztlumit jako bajt
Proměnná deklarována A typ bajtů. Do takové proměnné můžete vložit číslo od 0 do 255. Když se pokusíte přiřadit proměnnou více dojde k chybě a číslo má zlomková část bude zaokrouhleno nahoru.

Dim b As String
Proměnná deklarována b typ Tětiva. Tato proměnná bude obsahovat text (i když text může být čísla, ale 2 plus 3 je 23).

Při deklaraci více proměnných je můžete vyčíslit pomocí čárka:
Dim a As Byte , b As String

Po řádku deklarace můžete přiřadit hodnotu proměnné.

Například:
Dim As Byte
a=5

Visual Basic také umožňuje vytvářet vlastní datové typy. Tato funkce je důležitá, když pracujete se skupinou datových prvků, které spolu souvisí, ale patří do různých kategorií dat. Pomocí příkazu Structure můžete vytvářet své vlastní typy ( UDT - uživatelsky definovaný typ) a pomocí příkazu Dim deklarovat proměnné související s těmito novými typy. Ale mějte na paměti, že příkaz Structure nemůže být umístěn v proceduře události – musí být umístěn v horní části kódu formuláře spolu s dalšími deklaracemi proměnných nebo v kódu modulu.

Například následující deklarace vytvoří vlastní datový typ s názvem Zaměstnanec, který může ukládat jména, datum narození a datum zaměstnání daného zaměstnance:

Struktura Zaměstnanec Dim Name As String Dim DateOf Birth As Date Dim HireDate as Date End Struktura

Jakmile byl datový typ vytvořen, můžete jej použít v kódu formuláře nebo v procedurách událostí modulu. Následující příkazy používají nový typ Zaměstnanec. První příkaz vytvoří proměnnou s názvem ProductManager typu Employee a druhý příkaz nastaví komponentu Name této proměnné na název "Eric Cody":

Dim ProductManager jako zaměstnanec ProductManager.Name = "Eric Cody"

Zní to jako nastavení vlastností, že? Visual Basic používá stejný zápis pro vztahy mezi objekty a vlastnostmi jako pro vztahy mezi uživatelem definovanými datovými typy a proměnnými komponentami.

Konstanty: proměnné, které se nemění

Pokud proměnná ve vašem programu obsahuje hodnotu, která se nikdy nemění (například číslo pí, což je pevná matematická entita), můžete zvážit uložení této hodnoty jako konstanty, nikoli jako proměnné. Konstanta je smysluplný název, který nahrazuje číslo nebo testovací řetězec, který se nikdy nemění. Konstanty jsou užitečné v tom, že zvyšují čitelnost kódu programu, snižují počet softwarové chyby a usnadnit provádění globálních změn v kódu. Konstanty se chovají jako proměnné, ale nemůžete změnit jejich hodnotu, když je program spuštěn. Jsou deklarovány pomocí klíčového slova Const, jak ukazuje následující příklad:

Const Pi As Double = 3,14159265

Tento příkaz vytvoří konstantu s názvem Pi, kterou lze použít v kódu programu místo hodnoty pi. Chcete-li konstantu zpřístupnit všem objektům a procedurám událostí ve formuláři, umístěte tento příkaz na začátek kódu formuláře spolu s dalšími deklaracemi proměnných a struktur, které se vztahují na všechny procedury událostí formuláře. Chcete-li zpřístupnit konstantu ze všech formulářů a programových modulů (nejen z Form1 ), vytvořte konstantu v kódu modulu tak, že jí předponu klíčové slovo veřejnost. Například:

Veřejná konst Pi jako dvojitá = 3,14159265

V následujícím cvičení použijeme konstanty v proceduře události.

Použití konstanty v proceduře události
  1. V nabídce Soubor vyberte Otevřít a klepněte na Projekt. Zobrazí se dialogové okno Otevřít projekt.
  2. Otevřete projekt Constant Tester umístěný ve složce c:\vbnet03sbs\ch.5\konstantní tester.
  3. Pokud formulář projektu není zobrazen, klepněte v Průzkumníkovi řešení Form1.vb a potom klepněte na tlačítko Zobrazit Návrhář. V Návrháři formulářů Windows se zobrazí formulář Neustálý test. Constant Tester je „kostra“ programu. Uživatelské rozhraní je kompletní, ale musíte zadat kód programu.
  4. Proveďte dvojité kliknutí na tlačítko Zobrazit konstantní formuláře. V editoru kódu se zobrazí procedura události Button1_Click.
  5. V proceduře události Button1_Click zadejte následující příkazy:

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

    Rada. Vyberte umístění svých deklarací podle toho, jak plánujete používat konstanty nebo proměnné. Programátoři se obvykle snaží, aby rozsah deklarací byl co nejmenší, ale zároveň by měl být dostupný ve všech částech kódu tam, kde je to nutné. Pokud je například konstanta potřebná pouze v jedné proceduře události, musíte deklaraci této konstanty umístit do této procedury události. Pokud jej však musíte zpřístupnit všem procedurám událostí formuláře, umístěte jeho deklaraci na začátek kódu formuláře.

    Chcete-li program spustit, klepněte na tlačítko Start na standardním panelu nástrojů.

    Klepněte na tlačítko Zobrazit konstantní. Konstanta Pi se objeví v poli štítku, jak je znázorněno níže.

    Chcete-li program zastavit, klikněte na tlačítko Výstup.

    Konstanty jsou užitečné v kódu programu, zejména při výpočtu matematické vzorce. Další část popisuje, jak používat operátory a proměnné k zápisu vzorců.

PROGRAMOVACÍ JAZYK VIZUÁLNÍ ZÁKLAD. TYPY DAT. POPIS PROMĚNNÝCH, KONSTANT, POLE

datový typ je způsob, jakým jsou data uložena a prezentována v počítačovém systému.

Následující typy dat lze ukládat a zpracovávat v jazyce Visual Basic.

Byte je nezáporné celé číslo. Přijímá hodnoty od 0 do 255, zabírá 1 bajt.

Boolean – logická hodnota. Nabývá jedné ze dvou hodnot True a False, zabírá 2 bajty.

Měna – desetinné rozšířené číslo. Používá se k provádění peněžních výpočtů s pevným počtem desetinných míst, zabírá 8 bajtů. (Až 15 číslic vlevo od desetinné čárky a až 4 číslice vpravo od desetinné čárky).

Datum - datum. Používá se k ukládání dat/časů, zabírá 8 bajtů.

Double - desetinné číslo s dvojnásobnou přesností, zabírá 8 bajtů.

Integer - krátká celočíselná hodnota, zabírá 2 bajty. Používá se k reprezentaci celých čísel v rozsahu -32768 až 32767.

Long - dlouhé celé číslo, zabírá 4 bajty. Používá se k reprezentaci celých čísel v rozsahu -2147483648 až 2147483647.

Single - desetinné číslo s normální přesností, zabírá 4 bajty. Používá se k vyjádření záporných čísel v rozsahu -3,402823E 38 až -1,401298E-45 a k vyjádření kladných čísel v rozsahu 1,401298E-45 až 3,402823E 38.

String - řetězec proměnné délky. Obsazená paměť lineárně závisí na počtu znaků v řetězci.

String * length - řetězec konstantní délky.

Varianta - libovolná hodnota. Používá se pro datové úložiště jakékoli typy. Pokud je hodnotou řetězec, zabírá 16 bajtů plus jeden bajt na znak.

Objekt – předmět. Používá se pouze k ukládání odkazů na objekty, zabírá 4 bajty.

Variabilní je pojmenovaná oblast paměti určená k ukládání dat, která se mění během provádění programu. Pro přístup k obsahu této oblasti paměti stačí znát název proměnné.

Název proměnné (identifikátor) je znakový řetězec, který odlišuje tuto proměnnou od jiných objektů programu (identifikuje proměnnou v programu).

Při pojmenovávání proměnných je třeba dodržovat následující pravidla:

První znak jména musí být písmeno. Zbývající znaky jsou písmena a čísla (velká a malá písmena se liší). Můžete použít znak "_";

  • v názvu nelze použít znak ".";
  • počet znaků v názvu by neměl přesáhnout 255;
  • název proměnné se nesmí shodovat s vyhrazenými (servisními) slovy jazyka.

Visual Basic má následující funkce. deklarace typu proměnné.

  1. Proměnná nemusí být vůbec deklarována. V tomto případě bude výchozí typ Variant. To však může vést k pomalému, neefektivnímu provozu programu a plýtvání pamětí.
  2. Proměnná může být deklarována explicitně pomocí příkazu definice proměnné:Dim VariableName [ As VariableType],
    například: Dim d as Long.
    Chcete-li proměnné vždy deklarovat explicitně, použijte možnost Option Explicit v sekci (General) (Declarations) existujících formulářů, modulů nebo tříd. Po nastavení této možnosti vyžaduje Visual Basic explicitní deklaraci proměnných, a pokud je v kódu použita nedeklarovaná proměnná, vygeneruje chybovou zprávu.
  3. Proměnná může být deklarována implicitně:

    S operátorem deklarace typu:

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

Místo OrgType je uvedeno jedno z klíčových slov označujících typ:

Deflnt (pro typ Integer);
- DefLng (pro typ Long);
- DefSng (pro typ Single);
- DefStr (pro typ String) a tak dále;

Typ proměnné lze někdy odvodit z přípony připojené k názvu proměnné. Pouze šest typů proměnných může mít přípony:

- % - Typ celého čísla;
- & - Dlouhý typ;
- ! - Jeden typ;
- # - Dvojitý typ;
- $ - Typ řetězce;
- @ - Typ měny.

Pokud se proměnná, jejíž typ je implicitně indikován příponou, vyskytuje v programu vícekrát, pak lze příponu zadat pouze jednou, při prvním použití proměnné v programu.

Konstanty- veličiny, jejichž hodnoty nelze změnit. Stejně jako proměnné jsou konstanty deklarovány na začátku textu programového kódu operátorem:

Const ConstantName = Hodnota, například: Const Pi = 3,14159

Jako hodnotu lze použít pouze konstantní hodnoty a jejich kombinace, včetně aritmetických a/nebo logických operátorů.

pole je soubor prvků určitého typu, z nichž každý má své pořadové číslo, které se nazývá index.

Definici pole provádí operátor:

Dim VariableName([DolníLimitTo]
Horní limit) .

Například: Dim b (a až 15) - deklarace pole b, skládajícího se z 15 prvků.

Visual Basic ve výchozím nastavení indexuje prvky pole počínaje nulou, tj. index 0 označuje první prvek pole, index 1 druhý a tak dále. Příkaz Option Base 1 umožňuje zadat indexování pole od 1. Tento příkaz musí být v sekci (General) (Declarations).

V této části se dozvíte o typech dat, se kterými lze VBA manipulovat, jak VBA ukládá dočasná data, jak kombinovat proměnné a konstanty k vytváření nových hodnot a naučíte se, jak zahrnout vestavěné funkce do výrazů.

Laboratorní práce číslo 3. Přehled datových typů VB. proměnné a

konstanty. Kompatibilita datových typů. operátor přiřazení. Aritmetické a logické operátory. Vestavěné funkce

Účel lekce: Znát datové typy. Vědět, jak vytvářet proměnné. Vědět, jak přiřadit datové typy proměnným. Umět vytvářet pojmenované konstanty. Znát rozsah

proměnné a konstanty. Znát typ konverze. Vědět, jak používat operátor přiřazení. Znát aritmetické a logické operace. Vědět, jak používat zřetězení řetězců. Vědět, jak používat vestavěné funkce VBA. Materiály na lekci: MS Excel 2003.

Přehled datových typůVizuálníZákladní (VB)

Než se seznámíte s proměnnými, měli byste pochopit, jak VBA ukládá různé druhy informací. VBA, stejně jako většina ostatních programovacích systémů, rozděluje zpracovaná data na čísla, data, text a další typy. Datový typ(data typ) je termín, který označuje určité druhy dat, která VBA ukládá a může s nimi manipulovat. V tabulce. 9 zobecněných typů data VBA, ukazuje, kolik paměti každý typ zabírá, stručně popisuje datové typy a uvádí rozsah hodnot, které může typ uložit.

Tabulka 9– Datové typy VBA

Zadejte název

Velikost vbajtů

Celá kladná čísla od 0 do 255

Celá čísla od -32768 do 32767

Dlouhá celá čísla od -2147483648 do 2147483647

Reálná čísla s běžnou přesností

plovoucí bod.

Záporná čísla:

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

Kladná čísla:

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

Reálná čísla s dvojitou přesností

plovoucí bod.

Záporná čísla:

od -1,79769313486232E308 do

4,94065645841247E-324.

Kladná čísla:

od 4,94065645841247E-324 do

1,79769313486232E308

Čísla s až 15 číslicemi před desetinnou čárkou a 4 číslicemi za desetinnou čárkou (jednotky měny). -922337203685477,5808 až 922337203685477,5807

Chcete-li uložit booleovské hodnoty; může obsahovat pouze hodnoty True (True) nebo False (False).

Zadejte název

Velikost vbajtů

Popis a rozsah hodnot

Chcete-li uložit kombinaci informací o datu a času. Období může být od 1. ledna 100 do 31. prosince 9999. Časový rozsah od 00:00:00 do 23:59:59

Řetězec (řetězec s proměnnou délkou)

10 bajtů + Slouží k uložení textu. Může mít délku řetězce od 0 znaků do (přibližně) 2 miliard znaků

Řetězec (řetězec

pevná délka)

Délka Slouží k uložení textu. Může řetězce (jeden obsahuje od jedné do (přibližně) 65 400 bajtů na znak)

16 bajtů + 1 ​​bajt/znak

Typ Variant může ukládat jakýkoli jiný typ dat. Rozsah pro data varianty závisí na skutečných ukládaných datech. V případě textu rozsah odpovídá typu řetězce; v případě čísel je rozsah stejný jako u typu Double

Používá se pro přístup k jakémukoli objektu rozpoznanému VBA. Ukládá adresu objektu do paměti

V tabulce. 9 jste narazili na reprezentaci dat tzv exponenciální zápis(vědecký notový zápis), který slouží k zobrazení na externích zařízeních (monitor, tiskárna atd.) velmi velkých a velmi malých čísel v kompaktním formátu. V exponenciálním zápisu se hodnoty zapisují bez úvodních nebo koncových nul a nalevo od desetinné čárky je pouze jedna číslice. Číslo se do určité míry vynásobí 10, aby se ukázalo, kde se desetinné místo skutečně nachází.

VBA má šest různých typů číselných dat: bajtů, Celé číslo, Dlouho, Singl, Dvojnásobek A Měna. Číselné datové typy se používají k ukládání (a manipulaci) čísel v různých formátech v závislosti na konkrétním typu.

Program VBA (jako každý jiný program) obvykle „dělá“ rozhodnutí tím, že zkontroluje, zda jsou splněny různé podmínky. Pro zjednodušení testovacích podmínek a zajištění uložení výsledků takového testování poskytuje VBA datový typ Boolean. Booleovské hodnoty Skutečný A Nepravdivé volal booleovský(Boolean) hodnoty. Jejich jméno je spojeno se jménem matematika, který vyvinul systém matematické logiky. Booleovský datový typ VBA se také nazývá datový typ. Boolean. Booleovský typ VBA vyžaduje dva bajty paměti a může mít jednu ze dvou hodnot: Skutečný nebo Nepravdivé. Pokud zobrazíte typ Boolean na obrazovce jej VBA automaticky převede na řetězec obsahující buď slovo Skutečný, nebo Nepravdivé. Booleovské hodnoty se získají jako

výsledek srovnávací operace.

VBA používá typ datum pro ukládání dat a časů. Není třeba se starat o to, jak VBA ukládá typová data. datum, - můžete jednoduše zobrazovat, ukládat nebo manipulovat s daty; VBA automaticky spravuje všechny podrobnosti převodu sériového čísla na rok, měsíc, den a čas. typ VBA datum je typ po sobě jdoucí data(seriál Termíny). Po sobě jdoucí data ukládají datum jako počet dní od daného počátečního data. Základní datum pro typ VBA datum je 30. prosince 1899. VBA používá záporná čísla k vyjádření dat před 30. 12. 1899 a kladná čísla pro data po 30. 12. 1899. Číslo 0 představuje samotné datum 30. 12. 1899. V tomto schématu je 1. leden 1900 zapsán jako 2 (1/1/1990 jsou 2 dny po 30.12.1899), ale -2 je datum 28.12.1899 (dva dny před 30.12.1899) . Chcete-li to ověřit, napište jednoduchý postup.

Cvičení 1. Napište proceduru, která zobrazí datovou zprávu.

Pro tohle:

Napište postup (Výpis 3):

Výpis 3 Postupdatumový test

1 dílčí datumTest()

2 Ztlumit d jako datum 3

V důsledku tohoto postupu se na obrazovce zobrazí základní datum (obr. 15).

Rýže. 15 V hodnotě sekvenčního data představuje celočíselná část (číslice nalevo od desetinné čárky) celkový počet dní od základního data. Sériové datum VBA může mít číslice vpravo od desetinné čárky; tato čísla označují denní dobu jako součást dne. Jedna hodina je 1/24 dne (přibližně 0,0416. Podobně jedna minuta je 1/1440 dne a sekunda 1/86400 dne. Jedno datum můžete odečíst od druhého, přidat k datu nebo odečtením čísel jej změníte. hodnoty. Pokud například potřebujete určit počet dní mezi dvěma daty, stačí odečíst dřívější datum od pozdějšího. Protože se jedná o hodnoty typu datum, VBA "ví", že účelem výpočtu je získat rozdíl ve dnech mezi těmito dvěma daty. Podobně, pokud potřebujete určit datum 60 dní po daném datu, jednoduše k tomuto datu přidejte 60.

VBA má několik vestavěných procedur (popsaných v této části) pro samostatné extrahování roku, měsíce, dne, hodiny, minuty a sekundy z typ proměnné datum.

Volají se jakákoli textová data uložená v programu VBA linky(struny). Řetězce ve VBA jsou uloženy pomocí datového typu Tětiva. Řetězce jsou tak pojmenovány, protože s textovými daty se obvykle zachází jako s řetězci znaků. Řádek může obsahovat textové znaky jakéhokoli typu: písmena abecedy, čísla, interpunkční znaménka nebo různé symboly. Existují dvě kategorie strun: struny s proměnnou délkou, které rostou nebo se zmenšují, a struny s pevnou délkou, které vždy zůstávají stejné velikosti. Všechny řetězce ve VBA mají proměnnou délku, pokud neurčíte řetězec s pevnou délkou. Většina uživatelských vstupních dat (v dialogová okna, buňky listu) jsou data řetězce. Vzhledem k tomu, že na obrazovce můžete zobrazit pouze text, je nutné všechny ostatní datové typy před zobrazením převést na data řetězce. Mnoho vestavěných procedur VBA (např msgbox) používat data řetězce ve všech nebo některých svých argumentech.VBA poskytuje několik operátorů pro zřetězení(zřetězit), tj. spojovat a porovnávat řetězce. VBA má také několik vestavěných rutin, které pomáhají extrahovat podřetězce z delších řetězců, vyhledávat znaky nebo slova v řetězci, měnit velikost písmen v řetězci a tak dále. Tato část popisuje operátory řetězců VBA a postupy pro manipulaci s řetězci VBA.

Datový typ Varianta je speciální datový typ, který může ukládat jakýkoli z typů uvedených v tabulce. 9, kromě typu Objekt. VBA používá typ Varianta pro všechny proměnné, pokud výslovně nedeklarujete typ proměnné, jak je popsáno dále v této části. Zadejte data Varianta převezmou charakteristiky konkrétního typu, který aktuálně uchovávají. Například pokud datový typ Varianta obsahovat data řetězce, Varianta přebírá vlastnosti typu String. Pokud typ dat Varianta obsahovat čísla, Varianta přebírá charakteristiky nějakého číselného typu, obvykle − Dvojnásobek, i když typy Varianta může mít i typové vlastnosti Celé číslo, Dlouho, Singl nebo Měna. I když typy Varianta jsou pohodlné a ušetří část práce při psaní procedur, vyžadují více paměti než jakýkoli jiný datový typ, s výjimkou velkých řetězců. Dále matematické operace a porovnávací operace na datech typu Varianta jsou pomalejší než podobné operace s daty jakéhokoli jiného typu. Obecně byste se měli vyhnout používání proměnných Varianta: pokud se spoléháte na proměnné jako Varianta, můžete si vytvořit zvyk nedbalého programování a bude pro vás obtížné najít a opravit chyby ve vašich programech.

Proměnné

Variabilní(proměnné) je název, který programátor dané oblasti přiřadí

počítačová paměť používaná k ukládání určitého typu dat. Proměnné VBA mohou ukládat libovolný z datových typů uvedených v tabulce 1. 9.

Identifikátor(identifikátor) je název, který dáváte prvkům v procedurách a modulech, které vytváříte, jako jsou proměnné. Pojem identifikátor je založen na skutečnosti, že vámi vytvořená jména identifikují konkrétní místa v paměti (v případě názvu proměnné), skupiny instrukcí (v případě názvu makra nebo procedury) nebo jiné prvky programu.

Názvy proměnných nerozlišuje malá a velká písmena(ne pouzdro- citlivý), tedy psaní názvu proměnné velkými písmeny resp velká písmena na tom nezáleží.

Nejjednodušší způsob, jak vytvořit proměnnou, je použít ji v příkazu VBA. VBA vytvoří proměnnou a rezervuje paměť pro paměťové místo proměnné, když se tato proměnná poprvé objeví v příkazu (obvykle příkaz, který ukládá datovou hodnotu do proměnné).

Uložení hodnoty dat do proměnné se nazývá přiřazení proměnné(přiřazování a proměnné nebo tvorba an úkol). Přiřazení se provádí pomocí operátoru přiřazení reprezentovaného rovnítkem (=). Následující řádek je příkladem přiřazení hodnoty proměnné:

Tento operátor ukládá číselnou hodnotu 25 na paměťové místo určené názvem proměnné MyVar.

Vytvoření proměnné pomocí jejího použití v příkazu se nazývá implicitní deklarace proměnné(implicitní proměnné prohlášení). Použitím proměnné v příkazu implicitně říkáte (deklarujete) VBA, že chcete tuto proměnnou vytvořit. Všechny proměnné, které VBA vytváří implicitní deklarací proměnné, mají datový typ Varianta. Implicitní deklarace proměnné je také známá jako deklarace proměnné "za běhu"(na- a- létat).

Implicitní deklarace proměnných je pohodlná, ale má potenciální problémy. Například když máte proměnnou pojmenovanou MyVar a později udělat chybu v názvu zadáním MVar. V závislosti na tom, kde se ve vašem kódu objeví nesprávný název proměnné, může VBA vyvolat chybu běhu nebo jednoduše vytvořit novou proměnnou. Pokud VBA vytvoří novou proměnnou, můžete mít problémy, které je velmi obtížné zjistit.

Z těchto a dalších důvodů vám VBA dává možnost explicitní(explicitní) deklarace proměnných.

Chcete-li explicitně deklarovat proměnné, použijte příkaz VBA Ztlumit s následující syntaxí:

Ztlumit název1 [, název2 ]

jménoN je libovolný platný identifikátor proměnné. Všechny proměnné, které vytvoříte pomocí tohoto formuláře klíčových slov Ztlumit, jsou proměnné

typ Varianta.

Proměnná může být deklarována pouze jednou v jedné proceduře nebo modulu. Protože příkaz Dim je před všemi příkazy, které skutečně používají proměnnou, můžete jej umístit kamkoli v proceduře. V programátorské praxi je dobrým pravidlem shromáždit všechny explicitní deklarace proměnných na jednom místě na začátku procedury.

Úkol 2. Upravte postup ahoj excel z předchozí části pomocí explicitní definice proměnné.

Pro tohle:

změnit postup ahoj excel (Výpis 4):

Výpis 4 Postupahoj excel

1 dílčí HelloExcel()

2 Dim HelloMsg "proměnná pro MsgBox 3

Operátor Ztlumit (na řádku 2) výpisu 4 deklaruje proměnnou Dobrý den, Msg a vyhradí pro něj paměťovou oblast (v tomto podprogramu Dobrý den, Msg je typová proměnná Varianta). Řádek 2 obsahuje koncový komentář označující účel této proměnné. Řádek 4 je přiřazení k proměnné Dobrý den, Msg linky "Ahoj,vynikat!" . Dále (na řádku 5) je jako jeden z argumentů procedury použita proměnná HelloMsg MsgBox. Funkce MsgBox zobrazí stejné okno se zprávou jako předtím. Ačkoli MsgBox nyní přijímá svůj první argument z proměnné, tato proměnná obsahuje stejné informace o řetězci, které byly dříve (ve výpisech předchozí části) zapsány přímo do příkazu MsgBox.

Všechny proměnné ve VBA, ať už jsou deklarovány implicitně nebo explicitně, jsou typu Variant, pokud neurčíte typ proměnné v příkazu, který ji deklaruje. Pro vyhlášení zadali proměnná a její typ pomocí operátoru Ztlumit přidejte za proměnnou klíčové slovo As a poté zadejte název datového typu pro tuto proměnnou. Zde je obecná syntaxe pro použití operátoru Ztlumit při deklaraci typovaných proměnných:

Ztlumit varnamel [, varname2 ]

varnameN představuje jakýkoli platný název proměnné VBA, a typN - libovolný z názvů datových typů VBA.

Jakmile je typovaná proměnná deklarována, ať už je proměnná deklarována explicitně nebo implicitně a jak je typ specifikován, tato proměnná si zachovává stejný typ tak dlouho, dokud existuje. Proměnnou nelze znovu deklarovat ani předefinovat její typ.

S implicitní deklarací můžete také určit typ proměnné přidáním

speciální znak tzv symbol definice typu(typ- definice charakter) na konec názvu proměnné. V tabulce. Tabulka 10 uvádí definiční symboly typu VBA a typy, které představují. Tabulka 10– Symboly definice typu

Typ

Definice Symbol

Typ

Symbol definice

Celé čísloDlouho

MěnaDvojnásobek

Znaky definice typu se mohou objevit pouze na konci názvu proměnné. I když byste měli vědět, jaké symboly definice typu jsou a jak se používají, zřídka je potřebujete používat – použití příkazu Dim s klíčovým slovem As je mnohem jednodušší a přehlednější. Většina programátorů VBA nepoužívá symboly definice typu.

Úkol 3. Upravte postup ahoj excel z úkolu 3 pomocí definice typované proměnné.

Pro tohle:

změnit postup ahoj excel (Výpis 5):

Výpis 5 Postupahoj excel

1 dílčí HelloExcel()

2 Ztlumit HelloMsg jako řetězec 3

    HelloMsg = "Ahoj Excel!"

    Title$ = "Můj první program"

    MsgBox HelloMsg, Title$

Tato verze postupu ahoj excel funguje v podstatě stejným způsobem jako předchozí. Řádek 1 obsahuje deklaraci procedury. Výpis řádku 2 Ztlumit explicitně deklaruje proměnnou Dobrý den, Msg. Od operátora Ztlumit zahrnuje klíčové slovo Tak jako a zadejte název Tětiva, variabilní Dobrý den, Msg má typ Tětiva. Řádek 4 přiřadí text zprávy řetězcové proměnné Dobrý den, Msg. Řádek 5 implicitně deklaruje proměnnou Název $ a zároveň k proměnné přiřadí text nadpisu zprávy. Protože název proměnné Název $ má na konci definiční znak typu pro řetězec, tato proměnná je také typu String. Nakonec řádek 6 používá příkaz MsgBox zobrazit okno se zprávou; v tomto prohlášení jsou jak text zprávy, tak záhlaví okna proměnné: Dobrý den, Msg A Název $, resp.

Po přidání znaku definice typu do proměnné je nutné zahrnout znak definice typu pokaždé, když použijete název proměnné.

Zda jsou nebo nejsou deklarovány proměnné typu Tětiva pomocí operátora Ztlumit nebo přidáním znaku pro definici typu $ budou vytvořené řetězcové proměnné ve výchozím nastavení řetězce s proměnnou délkou.

Proměnné řetězce proměnné délky mění délku v závislosti na délce řetězce uloženého v proměnné. Někdy možná budete muset použít linku pevná délka(pevný- délka). Řetězce pevné délky mají vždy stejnou délku. Následující řádek ukazuje obecnou syntaxi pro vytvoření řetězce s pevnou délkou:

Ztlumit varname Jako řetězec * N

varname je jakýkoli platný název proměnné, a N je libovolné číslo od 1 do 65400 znaků

Rozsah: Variabilní přístupnost

Období rozsah(rozsah) odkazuje na rozsah procedury nebo modulu VBA, kde je k dispozici daná proměnná, procedura nebo jiný identifikátor. Tato část popisuje dvě základní úrovně rozsahu: procedurální a modulární. Proměnné, procedury a identifikátory, které jsou dostupné pouze v rámci procedury, mají rozsah na úrovni procedury, zatímco ty, které jsou dostupné všem procedurám v modulu, mají rozsah na úrovni modulu.

Proměnná deklarovaná v proceduře je přístupná pouze této proceduře. Například proměnná Dobrý den, Msg z řádku 2 výpisu 5 je k dispozici pouze v postupu ahoj excel; žádná jiná procedura nemá přístup k této proměnné.

Proto říkáme, že proměnná Dobrý den, Msg Má to procedurální rozsah(postup- úroveň rozsah). Ve skutečnosti proměnná Dobrý den, Msg skutečně existuje pouze v době, kdy VBA skutečně provádí proceduru ahoj excel.

Úkol 4. Vytvořte dvě procedury, jejichž oborem jsou proměnné na úrovni procedury.

Pro tohle:

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

Výpis 6 Postupahoj excel

1 dílčí HelloExcel()

2 Ztlumit HelloMsg jako řetězec 3

    HelloMsg = "Ahoj Excel!"

    MsgBox HelloMsg, "Můj první program"

8 Sub HelloDave()

9 Ztlumit HelloMsg jako řetězec 10

    HelloMsg = "Ahoj Excel!"

    MsgBox HelloMsg, "Další schránka"

Řádky 1-6 obsahují stejný postup ahoj excel z výpisu 4, který funguje úplně stejně. Do modulu byla přidána procedura Ahoj Dave, který začíná na řádku 8 výpisu 6. Postup Ahoj Dave funguje stejně jako postup ahoj excel, pouze zobrazí v dialogovém okně jinou textovou zprávu a název. V řádcích 2 a 9 oba postupy používají příkaz Ztlumit pro deklaraci lokálně pojmenovaných proměnných Dobrý den, Msg.

Někdy je nutné, aby několik procedur mělo přístup ke stejné proměnné. Obvykle je efektivnější vypočítat hodnotu jednou, uložit ji do proměnné a poté tuto proměnnou použít ve více procedurách, než počítat stále stejnou hodnotu.

VBA umožňuje deklarovat proměnné, které jsou dostupné pro více procedur. Když je proměnná dostupná pro všechny procedury v modulu, říká se, že proměnná má rozsah. modulární úroveň(modul úroveň). VBA omezuje rozsah proměnné na úrovni modulu na modul, ve kterém je proměnná deklarována (VBA poskytuje způsoby, jak rozšířit rozsah proměnné ještě dále; tyto metody jsou popsány později).

Chcete-li proměnnou zpřístupnit všem procedurám v konkrétním modulu, vložte příkaz Ztlumit pro něj na začátku modulu, před deklarací procedur.

Cvičení 1

Vytvořte dvě procedury a jednu deklaraci proměnné na úrovni modulu (přesuňte příkaz na řádek 1 Ztlumit s proměnnou Dobrý den, Msg odstranění řádků 2 a 9 ze seznamu 6).

Název proměnné musí být v rámci svého rozsahu jedinečný. Je však možné mít zapnuté proměnné se stejným názvem odlišnýúrovně rozsahu. Když mají proměnné stejný název, ale různé rozsahy, VBA použije proměnnou s nejvíce místní(místní) rozsah.

Vyžadování Explicitní deklarace proměnné

I když je implicitní deklarace proměnných (deklarace proměnných jednoduše jejich použitím) pohodlná, jsou s tím určité problémy. Když jsou proměnné deklarovány implicitně, existuje riziko neúmyslného vytvoření nové proměnné, když opravdu potřebujete použít existující, nebo použití existující proměnné, když uživatel zamýšlí vytvořit novou. Obě tyto situace vedou k chybám v kódu, které je velmi těžké vystopovat.

Aby bylo možné kdykoli snadněji odhalit chyby související s implicitní deklarací proměnných, poskytuje VBA příkaz VolbaExplicitní. Použitím VolbaExplicitní VBA vyžaduje, aby byly deklarovány všechny proměnné (pomocí Ztlumit) před jejich použitím v modulu.

Chcete-li nastavit režim, ve kterém VBA vyžaduje explicitní deklaraci pro všechny proměnné v modulu, přidejte příkaz VolbaExplicitní do oblasti deklarace modulu, to znamená na začátek modulu, před jakoukoli deklarací proměnných nebo procedur. Příkazy jako VolbaExplicitní, jsou nazývány direktivy kompilátoru(kompilátor směrnice).

tým VolbaExplicitní ovlivňuje pouze modul, ve kterém se vyskytuje. Pokud projekt obsahující tento modul obsahuje i další moduly, nejsou příkazem ovlivněny VolbaExplicitní. Do každého modulu, který vyžaduje explicitní deklarace proměnných, musíte zahrnout příkaz Option Explicit.

Protože inkluze VolbaExplicitní do všech modulů je velmi užitečné, VB Editor poskytuje způsob, jak tento příkaz automaticky zahrnout do každého nového modulu, když je vytvořen. Pro editor VB přidat příkaz VolbaExplicitní v každém novém modulu postupujte takto:

y vyberte příkaz Nástroje/ Možnosti (Služba/Parametry); VB editor zobrazí dialogové okno Možnosti;

a klikněte na záložku Editor (Editor) v případě potřeby zobrazíte možnosti úprav;

y zaškrtněte políčko Vyžadovat variabilní Prohlášení (Explicitní deklarace proměnných);

u vyberte OK. VB editor zavře dialogové okno Možnosti.

Cvičení 2

Nastavte příkaz na automatické povolení Volba Explicitní do každého nového modulu při jeho vytvoření.

Konstanty

Konstantní(konstantní) je hodnota v programu VBA, která se nemění. Výše uvedené příklady procedur používají řetězcové konstanty typu "Ahoj,vynikat!" A "Můj první program". Konstanty jako tyto se nazývají doslovné konstanty(doslovný konstanty), protože doslovná hodnota je zapsána přímo do kódu.

V kódu VBA můžete také psát doslovné číselné konstanty a data; příklady číselných doslovných konstant zahrnují čísla 25 , 3.14 . Příklady doslovných datových konstant zahrnují data #12/31/96# nebo #28. října 1997#(Více o psaní datových konstant se dozvíte později v této části).

VBA umožňuje vytvářet pojmenované konstanty(jmenoval konstanty). Pojmenovaná konstanta, stejně jako proměnná, má své jméno; tento název představuje konkrétní neměnnou hodnotu. Na rozdíl od proměnné se však hodnota pojmenované konstanty nikdy nemění. Následující řádek ukazuje obecnou syntaxi pro deklaraci pojmenovaných konstant:

Const jméno = valuel [operátor název2… ] _

[, patez =hodnota3 [operátor název4 ] … ]

jménoN představuje jakýkoli platný identifikátor, hodnotaN – jakákoliv datová hodnota: číselná, řetězcová nebo datumová, a operátor je aritmetická nebo srovnávací operace mezi dvěma názvy dříve popsaných konstant. Další řádky zobrazit několik deklarací pojmenovaných konstant: Const Pi = 3.14, text = "Ahoj Excel!"

Konst Pi2 = 2*Pi

Rozsah konstant

Stejně jako u proměnných můžete pojmenované konstanty deklarovat v procedurách nebo v deklarační oblasti na začátku modulu. Konstanta deklarovaná v proceduře má rozsah na úrovni procedury, zatímco konstanta deklarovaná v rozsahu deklarace modulu má rozsah na úrovni modulu. Pojmenované konstanty se řídí stejnými pravidly rozsahu jako proměnné.

Psaní doslovných konstant

Při psaní doslovných řetězcových konstant v kódu VBA dodržujte tato pravidla:

ь řetězcové konstanty musí být uzavřeny do dvojitých uvozovek (");

b je prázdná řetězcová konstanta (tzv nulový řetězecnula tětiva nebo prázdný tětiva) se označuje dvěma dvojitými uvozovkami, mezi nimiž není nic ("");

Řetězcová konstanta b musí být všechny na stejném řádku.

Při psaní doslovných číselných konstant v kódu VBA dodržujte tato pravidla:

ь číselné konstanty se musí skládat pouze z číselných znaků od 0 do 9;

ь číselná konstanta může začínat znaménkem (-) a může obsahovat desetinnou čárku;

b Pro číselné konstanty můžete použít exponenciální zápis.

VBA rozpozná datové konstanty v některém z několika různých formátů; musíte umístit všechny datové konstanty mezi znaky libry (#). Následující řádky ukazují některé formáty datových konstant, které VBA rozpoznává: #2-5-97 21:17:34# #5. února 1997 21:17:34# #Mag-31-97# #15. dubna 1997#

Bez ohledu na to, v jakém formátu je zapsána doslovná konstanta Datum, VBA tuto konstantu přeformátuje (když je textový kurzor odstraněn z řádku po zapsání konstanty), aby odpovídala jednomu z následujících dvou formátů, v závislosti na tom, zda konstanta Datum obsahuje informace o čase: #2/5/1997 21:17:34 PM# #2/5/1997# Existují pouze dvě platné booleovské konstanty: True a False.

Nastavení typu konstanty

Když deklarujete pojmenovanou konstantu nebo použijete doslovnou konstantu, VBA si „myslí“, že hodnota reprezentovaná touto konstantou má

datový typ, který nejvíce odpovídá výrazu přiřazenému ke konstantě.

Ve VBA můžete nastavit typ konstanty. Obecná syntaxe pro deklaraci typované konstanty je následující:

Const název Tak jako typ = hodnota[, název Tak jako typ = hodnota]

název je jakýkoli platný název konstanty, typ je název libovolného datového typu VBA a hodnota je hodnota, kterou přiřadíte konstantě.

Následující řádek ilustruje správnou deklaraci konstanty s konkrétním typem:

Const Pi As Double = 3,14

Vnitřníkonstanty

VBA nabízí několik vnitřní konstanty(vnitřní konstanty), také zvaný předdefinované konstanty(předem určený konstanty). Interní konstanta je pojmenovaná konstanta, která byla definována vývojáři VBA. Všechny vnitřní konstanty definované VBA začínají písmeny vb k označení, že jsou definovány jazykem Visual Basic for Applications (nebo Visual Basic). Například konstanty vbOKOnly, vbOKZrušit definovaný VBA. Interní konstanty aplikace Excel 2002 začínají písmeny xl aby bylo jasné, že je definuje Excel. Díky interním konstantám je snazší použít některé z vestavěných procedur VBA, jako je například příkaz MsgBox, o kterém již víte, a operátora InputBox, které jsou diskutovány dále v této části.

Zobrazit pole zpráv. Získávání dat od uživatele

Příjem dat od uživatele, jejich ukládání do proměnné a zobrazování výsledků akcí na nich provedených jsou základními prvky potřebnými pro psaní interaktivních procedur. Interaktivní(interaktivní) Procedura je procedura, která komunikuje s uživatelem, to znamená, že procedura interaguje s uživatelem zobrazováním zpráv a přijímáním vstupu.

Funkce MsgBox zobrazení okna se zprávou má následující syntaxi:

MsgBox(Výzva [, Tlačítka ] [, Titul ] [, Soubor nápovědy , Kontext ])

argument Výzva MsgBox zobrazí tento řetězec v dialogovém okně; musí vždy poskytnout argument Výzva, protože toto je požadovaný argument(Požadované argument). Argument Tlačítka (volitelný argument), je číselný výraz, který určuje tlačítka a zprávy, které se mají zobrazit v dialogovém okně. Argument Titul představuje libovolnou řetězcovou hodnotu (literál, konstantu nebo proměnnou). MsgBoxTitul, VBA se zobrazí v záhlaví dialogového okna MsgBox slovo " Microsoftvynikat" . Argument Soubor nápovědy - soubor nápovědy Kontext - sekce v souboru nápovědy. Text zprávy může být uzavřen v závorkách, ale závorky jsou volitelné, když je funkce MsgBox

používán jako operátor.

Zavolá se uživatelský vstup vstupní data(vstup). Chcete-li získat vstup od uživatele procedury, použijte funkci InputBox. Funkce(funkce) je speciální typ procedury VBA, která vrací hodnotu. Funkce InputBox zobrazí dialogové okno obsahující text, který uživatele vyzve k zadání nějaké hodnoty, a textové pole pro zadání této hodnoty. Zobrazí se dialogové okno InputBox, obsahuje také příkazová tlačítka OK A zrušení.

Funkce InputBox má následující syntaxi:

stringvar=InputBox( Výzva[, Titul] [, Výchozí] [, XPos] [, YPos] _

[, Soubor nápovědy, Kontext])

Tady stringvar představuje jakoukoli proměnnou, která může uložit řetězec (nebo proměnnou typu Tětiva nebo - Varianta). Argument Výzva představuje libovolnou řetězcovou hodnotu (literál, konstantu nebo proměnnou). InputBox zobrazí tento řetězec jako výzvu v dialogovém okně; musí vždy poskytnout argument Výzva, protože toto je požadovaný argument; všechny ostatní jsou volitelné. Argument Titul je druhý argument pro InputBox. Titul představuje libovolnou řetězcovou hodnotu (literál, konstantu nebo proměnnou). InputBox zobrazí text tohoto řádku v záhlaví dialogového okna. Pokud vynecháte argument Titul, VBA se zobrazí v záhlaví dialogového okna InputBox slovo " Microsoftvynikat" . Argument Výchozí – řetězcový výraz zobrazený ve vstupním poli jako výchozí, pokud uživatel nezadá jiný řetězec; pokud je tento argument vynechán, bude vstupní pole prázdné. Argumenty XPos A YPos může být jakýkoli číselný výraz. Tyto argumenty umožňují určit, kde se v aktivním okně objeví vstupní pole a jsou to souřadnice levého horního rohu dialogového okna: XPos – vodorovná vzdálenost od levého okraje okna; YPos je svislá vzdálenost od horního okraje okna. Obě vzdálenosti se měří ve twipech ( twips); jeden twip se rovná 1/20 bodu (tečka je rozměr tiskového písma). Protože bod je 1/72 palce, jeden twip je přibližně 0,0007 palce. Poslední dva volitelné argumenty funkce InputBox- Tento Soubor nápovědy A Kontext. Mají stejný účel jako argumenty podobné funkce. MsgBox.

Použití argumentů pojmenovaných funkcí

Jak jste si možná všimli, je snadné nechtěně vynechat koncové čárky nebo přeskupit hodnoty argumentů ve funkcích, které mají volitelné argumenty nebo více argumentů, a to navzdory pomoci vlastnosti Auto Rychlý (Stručné informace) editor VB. Vynechání nebo přeuspořádání argumentů v seznamu argumentů funkce může vést k chybám při neshodě typů. Chyba (ještě horší) nemusí být odhalena. Aby se předešlo chybám při programování a usnadnilo používání funkcí, které mají volitelné argumenty, VBA poskytuje alternativu k výpisu hodnot v seznamu argumentů v určitém pořadí. Můžete také přenést

hodnoty argumentů funkce pomocí pojmenované argumenty(jmenoval argumenty) funkce. Následující řádky ukazují dvě tvrzení MsgBox, které mají stejný výsledek; první příkaz používá normální metodu výčtu argumentů a druhý příkaz používá metodu pojmenované argumenty:

MsgBox AnyMsg, AnyTitle

Výzva MsgBox:=Jakákoli zpráva, Název:=Jakýkoli název

Znak, který přiřazuje hodnotu pojmenovanému argumentu (:=), není přesně stejný běžný operátor přiřazení (=). Pokud při přiřazování hodnoty pojmenovanému argumentu vynecháte dvojtečku (:), VBA nemusí nutně detekovat chybu syntaxe, ale nemusí správně interpretovat příkaz. Když VBA provede tento příkaz, zobrazí jednu z několika možných chyb za běhu, často chybu nesouladu typu.

Ve stejném volání funkce nemůžete kombinovat pojmenované argumenty s běžným seznamem argumentů. Pro každé jednotlivé volání funkce musíte použít buď pojmenované argumenty, nebo seznam běžných argumentů.

Úkol 5. Napište proceduru, která vypočítá plochu kruhu, ale obdrží poloměr kruhu od uživatele procedury.

Pro tohle:

Zadejte postup (výpis 7):

Výpis 7 – Příjem vstupních dat pomocí operátoraInputBox

    Const Pi As Single = 3,14" aproximace hodnoty pí

    Dim CircleArea As Single“ uloží vypočítanou oblast kruhu 3

4 dílčí seznam3_07()

    Const BoxTitle = "Kruhová oblast"!}

    Poloměr tlumení jako jeden, teplota jako řetězec 7

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

    Poloměr = CSng (teplota)

    CircleArea = Pi * Poloměr * Poloměr

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Řádky 1 a 2 výpisu 7 deklarují konstantu Pi a variabilní kruhová oblast modulární úroveň. Řádek 4 obsahuje deklaraci skutečné procedury. Řádek 5 deklaruje konstantu procedurální úrovně BoxTitle; tato konstanta má v proceduře pouze místní přístup Seznam3_07. Na řádku 8 příkaz volá funkci InputBox. Zobrazí svůj první argument jako text v dialogovém okně a vyzve uživatele k zadání hodnot nějakého typu. U tohoto operátora InputBox zobrazí text "Zadejte poloměr kruhu" (funkce Chr(13) je symbol přechodu do nový řádek), abyste uživatelům postupu řekli, jakou hodnotu by měli zadat. InputBox používá druhý argument,

12 End Sub

reprezentovaný konstantou BoxTitle, jako název dialogového okna. Při provádění výpisu InputBox zobrazí se dialogové okno (obr. 16)

Oblast kruhu

Zadejte poloměr kružnice

Rýže. 16 Uživatel zadá číslo do textového pole a vybere příkazové tlačítko OK nebo zrušení zavřete dialog jako kterékoli jiné okno Windows. Kdykoli voláte jakoukoli funkci, musíte nějak použít hodnotu vrácenou funkcí. Zavolá se hodnota vrácená funkcí výsledek funkce(funkce výsledek). Jak je uvedeno na řádku 8 v případě funkce InputBox, jehož výsledek je přiřazen k proměnné Temp. Výsledek funkce InputBox je vždy řetězec (proto proměnná Temp bylo oznámeno jako Tětiva). Vzhledem k tomu, že proměnná Temp byl výslovně deklarován jako Tětiva, musí být řetězcová hodnota převedena na číselnou hodnotu, než ji lze použít v matematických výpočtech. Řádek 9 výpisu 7 dělá právě to pomocí vestavěné funkce VBA csng převést uživatelský vstup na řadu typu Single.

Výrazy vVizuálníZákladní

Výraz(výraz) je hodnota nebo skupina hodnot, která vyjadřuje jednu hodnotu. Každý výraz vypočteno až(nebo má za následek) odlišnou hodnotu. Výrazy se skládají z jedné nebo více z následujících částí: konstanty (doslovné nebo pojmenované), proměnné (jakéhokoli datového typu), operační znaky, pole, prvky pole, funkce.

Výsledkem všech výrazů je jediná hodnota určitého datového typu. Výsledkem výrazů může být také jedna ze speciálních hodnot Prázdný(neinicializovaná proměnná typu Varianta nebo výsledek výrazu obsahujícího neinicializovanou proměnnou typu Varianta) nebo Nula(Nula představuje výraz obsahující neplatná data). Když ve výrazu použijete jakýkoli znak, jsou volány datové prvky (proměnné nebo konstanty), na které se působí operandy(operandy); většina operací vyžaduje dva operandy.

Kompatibilita datových typů. Automatická konverze dat

Ne všechny datové typy jsou vzájemně kompatibilní a ve stejném výrazu nelze použít nekompatibilní datové typy. Například aritmetické přidání řetězce k číslu nedává smysl, protože takový výraz nemá smysl a VBA ho nedokáže vyhodnotit.

Mnoho datových typů je vzájemně kompatibilních. Například můžete

kombinovat různé typy číselných dat ve stejném výrazu; VBA automaticky provádí potřebné převody typů u různých číselných typů. VBA může také někdy automaticky převádět jiné datové typy, takže všechny typy ve výrazu jsou kompatibilní, i když to není vždy možné. Je velmi důležité ovládat a znát typ výrazu, protože pokud výrazy obsahují nekompatibilní typy, VBA vyvolá chybu běhu – chybu typové neshody(typ- nesoulad). Při zpracování výrazu obsahujícího různé datové typy se VBA nejprve „pokusí“ vyřešit jakýkoli typový rozdíl převodem hodnot ve výrazu na kompatibilní datové typy. Pokud převod typu nevyřeší žádné rozdíly, zobrazí se chyba za běhu a postup se zastaví. Například ve výrazu 25 & "Computer Science" VBA vždy provádí zřetězení řetězců (spojuje dva řetězce), bez ohledu na typy proměnných; výsledkem je typ Tětiva; tento výraz nikdy nevyvolá chybu neshody typu.

VBA obvykle převede všechny číselné datové typy ve výrazu na typ s nejvyšší přesností a pak tento typ přiřadí výsledku výrazu. Například pokud výraz obsahuje číselné hodnoty s typy Celé číslo A Singl, výsledkem výrazu je typ Singl– typ s nejvyšší přesností v tomto výrazu. Pokud přiřadíte výsledek číselného výrazu proměnné s menší přesností, než je skutečný typ výsledku výrazu, VBA zaokrouhlí výsledek výrazu, dokud jeho přesnost nebude odpovídat očekávanému typu. Pokud například přiřadíte číselný výraz, jehož výsledkem bude číslo jako Dvojnásobek, typ proměnné Celé číslo, VBA zaokrouhluje číslo s dvojitou přesností Celé číslo.

Při převodu čísla na řetězec VBA vytvoří řetězec obsahující všechny číslice tohoto čísla plus desetinnou čárku (pokud ji číslo má). Číslo 3413.72 (tečka se používá k zápisu čísla do kódu) se například převede na řetězec "3413.72". Pokud je číslo velmi velké nebo velmi malé, VBA může vytvořit řetězcovou reprezentaci čísla ve vědeckém zápisu; například číslo 0,0000000004927 se převede na řetězec "4,927E-11".

VBA dokáže převést řetězec na číslo pouze tehdy, pokud řetězec obsahuje znakové vyjádření čísla v desítkovém nebo exponenciálním formátu. Řetězce "988.6", "812", "-186.7", "1,3E10" představují čísla a VBA je umí převést na čísla. Struny "1,045", "74,550 $" a "Dobré ráno!" nelze převést na čísla.

Když VBA převádí hodnoty typu Boolean do čísel, význam Skutečný se převede na 1 a hodnota Nepravdivé– na 0. Když VBA převede číslo na typ Boolean, nula se převede na Nepravdivé a jakákoli jiná hodnota se převede na Skutečný. Když VBA převádí hodnoty typu Boolean k řetězcům, VBA používá řetězec "True". Skutečný a "nepravda" pro Nepravdivé.

Kdy VBA převádí datový typ datum do čísla, výsledkem je číselná hodnota - číslo typu Dvojnásobek, který obsahuje počet dní od 30. prosince 1899 (záporné číslo představuje datum dřívější než 30. 12. 1899). Desetinná část čísla (pokud existuje) vyjadřuje denní dobu jako součást

den; 0 je půlnoc a 0,5 je poledne. Ve VBA převod číselných datových typů na typy datum je pouze inverzní konverze typu datum do čísla.

Operátor přiřazení (=)

Tento operátor se používá k přiřazení výsledku výrazu k proměnné. Syntaxe formuláře operátoru přiřazení je následující:

varname = výraz

variabilní varname - jakákoli proměnná, a výraz - jakýkoli výraz.

Při provádění příkazu přiřazení VBA nejprve vyhodnotí výraz napravo od příkazu přiřazení (=) a poté uloží výsledek výrazu do proměnné, jejíž název je nalevo od příkazu přiřazení.

Obrázek operátoru přiřazení ve vývojovém diagramu:

varname = výraz

Když přiřadíte výsledek výrazu k proměnné s konkrétním datovým typem, výsledek může být datového typu kompatibilního s typem proměnné přijímající novou hodnotu. V mnoha případech dokáže VBA převést datový typ výsledku výrazu na typ, který je kompatibilní s typem proměnné, která nabývá nové hodnoty, pokud výsledek výrazu a proměnná ještě nemají kompatibilní typy. Variabilní typ Varianta lze přiřadit libovolný datový typ.

Aritmetické operace

VBA může provádět všechny obvyklé aritmetické operace (implementované prostřednictvím aritmetických výrazů): sčítání, odčítání, násobení a dělení, stejně jako zvyšování čísel na zadanou mocninu a poskytuje další speciální matematické operace pro dělení celých čísel a dělení modulo (Tabulka 11). .

Tabulka 11- Operátorové znaky (notace) používané v aritmetických výrazech VBA (Ni je jakýkoli platný číselný výraz VBA)

Podepsat

Syntax

Název/Popis

Přidání. Přidá N1 k N2

Odčítání. Odečte N2 od N1

Násobení. Vynásobí N1 N2

Divize. Dělí N1 N2.

Celočíselné dělení. Vydělí N1 N2 a zahodí jakoukoli zlomkovou část, takže výsledkem je celé číslo.

Modulo rozdělení. Vydělí N1 N2 a vrátí pouze zbytek operace dělení.

Umocňování. Zvyšuje N1 na sílu N2.

Oba operandy musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Srovnávací operace

Někdy se také nazývají srovnávací operace vztahové operace(vztahový operátory). Nejčastěji se srovnávací operace používají ke specifikaci kritérií pro rozhodování nebo k formulaci popisu podmínek, za kterých by se měla skupina instrukcí opakovat (zacyklení).

Výsledkem jakékoli porovnávací operace je hodnota typu Boolean: Skutečný nebo Nepravdivé. Porovnávací operátory se používají k porovnání doslovných, konstantních nebo proměnných hodnot jakéhokoli podobného typu (tabulka 12).

Název/Popis

Rovnost. Skutečný , PokudElrovná se E2, jinak -Nepravdivé

Méně než. Skutečný , PokudElméně než E2, jinak -Nepravdivé

Menší nebo rovno.Skutečný pokud je E1 menší nebo rovno

E2, jinak -Nepravdivé

Více než. Skutečný , pokud je E1 větší než E2, jinak -Nepravdivé

Větší nebo rovno.Skutečný pokud je E1 větší nebo rovno

E2, jinak -Nepravdivé

Ne rovné.Skutečný, pokud E1 není rovno E2, jinak - Nepravdivé

Objekt. Skutečný pokud El odkazuje na stejný objekt jako E2, jinak -Nepravdivé Podobnost. Oba operandy musí být typu

Tabulka 12– Znaky (zápis) operací porovnání (E v této tabulce představuje jakýkoli platný výraz VBA)

Úkon/Operátor

Syntax

F

vzorek,

Tětiva. Skutečný, pokud se El shoduje

Porovnání binárních a textových řetězců

VBA poskytuje dva různé způsoby porovnání různých znaků případu. První metoda, kterou VBA používá k porovnání řetězců, se nazývá binární (binární) nebo binární porovnání a je výchozí metodou porovnání. Chcete-li vybrat metodu porovnání řetězců dostupnou ve VBA (binární nebo textovou), použijte direktivu VolbaPorovnejte:

Možnost Porovnat [ Binární | Text]

Při porovnání textu VBA „zachází s velkými písmeny jako s malými písmeny.

Zřetězení řetězců

VBA vám dává možnost zřetězit (slepit) řetězce dohromady a vytvořit tak delší řetězce. Spojení jednoho řetězce s druhým se nazývá zřetězení(zřetězení) řádky. Znak & lze použít pouze pro zřetězení řetězců. Obecná syntaxe pro znaménko & je:

Operand1 & Operand2 [& Operand3… ]

Operand1 A Operand2 – všechny platné řetězcové nebo číselné výrazy. Pokud jsou jedním nebo oběma operandy číselné výrazy, jazyk VBA převede čísla na řetězce před provedením operace zřetězení. Datovým typem výsledku zřetězení řetězců je vždy typ Tětiva.

Logické operátory

Nejběžnějším použitím logických příkazů VBA je kombinace výsledků jednotlivých porovnávacích výrazů za účelem vytvoření složitých rozhodovacích kritérií v proceduře nebo vytvoření podmínek, za kterých se musí skupina příkazů opakovat (Tabulka 13).

Tabulka 13– Booleovské operátory (E v této tabulce představuje jakýkoli platný výraz s logickým výsledkem, jako je operace porovnání)

Syntaxe operátora Název/popis

A El a E2 Spojení. Skutečný pokud E1 i E2 mají hodnotu

Skutečný , v opačném případě -Nepravdivé Nebo El nebo E2 Disjunkce. Skutečný pokud jeden výraz nebo oba (E1 a

E2) jsou stejnéSkutečný ; v opačném případě -Nepravdivé Ne El Negace. Skutečný pokud na E1 záleží Nepravdivé; Nepravdivé,

LiElje rovenSkutečný

Výjimka. Skutečný pokud se E1 a E2 liší

hodnoty; v opačném případě -Nepravdivé

Rovnocennost. Skutečný pokud má E1 totéž

hodnota jako E2; v opačném případě -Nepravdivé

implikace. Nepravdivé když je E1 rovno Skutečný A

E2 jeNepravdivé ; v opačném případě -Skutečný .

Operační priority při vyhodnocování složitých výrazů

komplex(kompozitní) výraz(komplex výraz) je jakýkoli výraz vytvořený ze dvou nebo více výrazů. Mnoho z výrazů, které píšete, jsou složité výrazy, zejména pokud řídí posloupnost provádění kódu v procedurách nebo představují různé matematické vzorce (Tabulka 14).

Tabulka 14– Hierarchie operátorů/operací od nejvyšší po nejnižší prioritu

Operátor/podepsat Komentáře

umocňování, Nejvyšší prioritou

unární mínus

Násobení a dělení mají stejnou přednost; jsou vyhodnoceny tak, jak se objevují ve výrazu zleva doprava

Sčítání a odčítání mají stejnou přednost; jsou vyhodnoceny tak, jak se objevují ve výrazu zleva doprava

Jakékoli zřetězení řetězců se provádí po jakýchkoli aritmetických operacích ve výrazu a před jakýmkoli porovnáváním nebo porovnáváním. logické operace

<, <=, >, >=,

Jako, =,<>, Je

Všechny operátory porovnání mají stejnou prioritu a jsou ve výrazu vyhodnocovány zleva doprava. Použijte závorky k seskupení operátorů porovnání ve výrazech

Používání funkcíVisual Basic

Již jste použili vestavěné funkce VBA: InputBox A MsgBox. Funkce(funkce) je vestavěný vzorec, který pracuje s výrazy a generuje hodnotu. Funkce vždy vrátí hodnotu, kterou VBA vloží do programu v místě, kde se objeví název funkce. Funkce VBA jsou rozděleny do několika skupin podle typu operace nebo výpočtu, který provádějí. Nepleťte si pojmy funkce A postup. Procedura obvykle provádí určitý úkol (nebo skupinu úkolů) stejným způsobem, jakým konkrétní příkaz nabídky v Excelu, Wordu nebo jiné aplikaci provádí určitou úlohu. Funkce pracuje s jednou nebo více hodnotami a vrací nějakou výslednou hodnotu (jako vzorec v buňce listu aplikace Excel). Chcete-li použít funkci, jednoduše zadejte název funkce do příkazu VBA spolu s argumenty, které funkce vyžaduje, v bodě příkazu, kde potřebujete použít výsledek funkce. Zavolá se zadání názvu funkce do příkazu VBA, aby se funkce vyvolala výzva(povolání) funkce.

Vestavěné funkce VBA jsou rozděleny do několika kategorií na základě obecného účelu funkcí (matematika, převod dat, datum a čas, manipulace s řetězci a diskem).

Matematické funkce

VBA poskytuje standardní sadu matematických funkcí (tabulka 15). Tabulka 15– matematické funkce VBA (N znamená jakýkoli číselný výraz)

návraty/akce

Funkce (ar-

gumy)

Vrátí absolutní hodnotuN

břišní svaly(N)

Kosinus úhluN, KdeN

Cos(N)

Vrátí sinus úhlu;Nje úhel měřený v radiánech

Hřích(N)

Opálení(N)

Vrátí tangens úhlu;N- úhel v radiánech

Atn(N)

Vrátí arkus tangensNjako úhel v radiánech

Vrací konstantu E, zvýšen na výkon N ( E je základem přirozených logaritmů a je (přibližně) rovná se 2,718282)

Vrátí celočíselnou část N. Fix nezaokrouhlí číslo, ale zahodí jakoukoli zlomkovou část. Pokud je N záporné, Fix vrátí nejbližší záporné celé číslo větší nebo rovnoN

Log(N)

Vrátí celočíselnou část N. Int nezaokrouhlí číslo, ale zahodí jakoukoli zlomkovou část. Pokud je N záporné, Int vrátí nejbližší záporné celé číslo menší nebo rovnoNVrátí přirozený logaritmusN

náhodný

argument

je

se vrací

volitelný. Funkci Rnd použijte až poté

inicializace generátoru náhodných čísel VBA operátorem

Randomizovat

Vrátí znaménko čísla: -1, je-li N záporné; 1, pokud N je

pozitivní; 0 pokudNje 0

Vrátí druhou odmocninu z N. VBA zobrazí chybu

doba provedení, pokudN- negativní

Funkce konverze dat

Visual Basic poskytuje několik funkcí pro převod jednoho datového typu na jiný (Tabulka 16). Pomocí těchto funkcí můžete vyřešit chyby nesouladu typů a poskytnout explicitní kontrolu nad datovými typy ve výrazech.

Tabulka 16– Funkce převodu dat (N je libovolné číslo, S je libovolný řetězec a E je jakýkoli typ výrazu)

Funkce(ar- Vrátí/Akcegumy)

Vrátí číslo kódu znaku odpovídající prvnímu písmenu linkyS. Například písmeno „A“ má kód znaku 65

Funkce (argumenty)

návraty/akce

Vrátí jeden znakový řetězec odpovídající znakovému kódu N, což musí být číslo mezi 0 a 255 včetně. Například kód znaku 65 vrátí písmeno "A" (Chr(13) je znak pro návrat vozíku, Chr(10) je znak pro posun řádku)

Vrátí řetězec obsahující hodnotu reprezentovanou výrazem E ve formátu podle instrukcí obsažených v S

Vrátí řetězec obsahující hexadecimální reprezentaci N

Oct(N) Vrátí řetězec obsahující osmičkovou reprezentaci N

Vrátí celé číslo typu Dlouho A, které představuje hodnotu primárních barev obrázku. N v každém argumentu musí být celé číslo v rozsahu 0 až 255 včetně. Argumenty (zleva doprava) jsou hodnoty pro červenou, zelenou a modrou.

Str(N) Vrátí řetězec ekvivalentní číselnému výrazu N

Vrátí číselnou hodnotu odpovídající číslu reprezentovanému řetězcem S, který musí obsahovat pouze číslice a jednu desetinnou čárku, jinak ji VBA nemůže převést na číslo. Pokud VBA nedokáže převést řetězec na S, pak funkce Val vrátí 0

CBool(N) Vrátí booleovský ekvivalent číselného výrazu N

bajtů(od 0 do 255); E je jakýkoli platný číselný nebo řetězcový výraz, který lze převést na číslo

Vrátí číselnou hodnotu typu Měna

Vrátí hodnotu typu datum. E může být jakýkoli platný výraz (řetězec nebo číslo) představující datum v rozsahu 1/1/100 12/31/9999 , včetně

Vrátí číselnou hodnotu typu Dvojnásobek, které lze převést na číslo

Vrátí číselnou hodnotu typu Celé číslo; E je jakýkoli platný číselný nebo řetězcový výraz, který lze převést na číslo

Vrátí číselnou hodnotu typu Dlouho; E je jakýkoli platný číselný nebo řetězcový výraz, který lze převést na číslo

Funkce (argumenty)

návraty/akce

Vrátí číselnou hodnotu typu Singl; E je jakýkoli platný číselný nebo řetězcový výraz, který lze převést na číslo

Vrátí hodnotu typu Tětiva; E – jakýkoli platný číselný nebo řetězcový výraz

Vrátí hodnotu typu Varianta; E – jakýkoli platný číselný nebo řetězcový výraz

Funkce data a času

Funkce data a času VBA se běžně používají k získání aktuálního data a času, rozdělení hodnoty data na její součásti nebo převodu řetězců a čísel na hodnoty typu datum(Tabulka 17).

Tabulka 17– Funkce data a času (N je jakýkoli platný číselný výraz a D je jakýkoli platný výraz, např datum(včetně hodnot jako datum, čísla nebo řetězce, které VBA dokáže převést na datum); všechny argumenty funkce jsou povinné, pokud není uvedeno jinak)

návraty/akce

Funkce (ar-

gumy)

Vrátí systémové datum. Tuto funkci můžete také použít jako postup pro nastavení systémových hodin počítače. Více podrobností naleznete v nápovědě systémyVBA

Vrátí systémový čas počítače jako hodnotu typu datum. Tuto funkci můžete také použít jako postup pro nastavení systémových hodin. Další podrobnosti lze nalézt z systém nápovědy VBAVrátí systémové datum a čas

datum A

Vrátí celé číslo, které je součástí výrazu typu datum,

včetně

Vrátí celé číslo, které je součástí výrazu typu datum A

Den v týdnu (D) Hodina (D)

včetně

Vrátí celé číslo obsahující den v týdnu pro výraz typu

datum. Den v týdnu je vrácen jako číslo mezi 1 a 7,

včetně; 1 je neděle, 2 je pondělí a tak dále.

Vrátí celé číslo obsahující hodiny jako část času,

číslo mezi 0 a 23 včetně. Pokud výraz D není

obsahuje časové hodnoty, tedyHodinavrátí 0

Funkce (ar-gumy)

DatumPřidat(S, N, D)

DateSerial(N, N, N)

TimeSerial (N, N, N)

návraty/akce

Vrátí celé číslo obsahující minuty jako součást času v

typový výraz datum. Minuty jsou vráceny jako číslo mezi 0

a 59 včetně. Pokud výraz D neobsahuje hodnotu

časMinutavrátí 0

Vrátí celé číslo obsahující sekundy jako součást času v

typový výraz datum. Sekundy jsou vráceny jako číslo mezi

0 a 59 včetně. Pokud výraz D neobsahuje hodnotu

časDruhývrátí 0

Vrátí hodnotu [typ Varianta(datum)] obsahující datum do

DateDiff(S, D1, Vrátí hodnotu [typ Varianta(Dlouho)] počet dočasných D2[,Nl [, N2 ]]) intervaly mezi dvěma konkrétními daty DatePart(S, D, [, Vrátí zadanou část [typ Varianta(Celé číslo)] N1 [, N2]]) dané datum

ke kterému se přidá daný časový interval

Vrátí sekvenční hodnotu data pro dané datum. Zleva doprava představují argumenty rok, měsíc a den. Argument roku musí být celé číslo mezi 100 a 9999, měsíce mezi 1 a 12, dny mezi 1 a 31 (všechny rozsahy jsou včetně)

Vrátí hodnotu sériového času. Zleva doprava představují argumenty hodiny, minuty a sekundy. Argument hodin musí být celé číslo mezi 0 a 23, argumenty minuty i sekundy musí být čísla od 0 do 59 Vrátí hodnotu typu datum, ekvivalentní k datu danému argumentem E, což musí být řetězec, číslo nebo konstanta představující datum

půlnoci podle systémového času počítače Některé z těchto funkcí již byly použity v příkladech v této knize, jiné budou použity později.

Řetězcové funkce

Řetězcové funkce VBA se často používají k nalezení daných řetězců v jiných řetězcích, k porovnání jednoho řetězce s jiným a ke kopírování vybraných částí řetězců (Tabulka 18).

Vrátí hodnotu typu datum A obsahující čas určený argumentem E, což může být řetězec, číslo nebo konstanta představující čas Vrátí číslo představující počet sekund od

Tabulka 18– Řetězcové funkce (N je jakýkoli platný číselný výraz a S je jakýkoli platný řetězcový výraz)

gumový)

Vrátí pozici S2 v S1. N1 je výchozí pozice pro

Vyhledávání; N2 definuje typ srovnání. N1 a N2 jsou volitelné. Pokud je vynecháno N2, pak proud instalaceVolba Porovnejte InStrRev(Sl, S2 Vrátí pozici, kde se řetězec S2 vyskytuje v S1

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

Len(S) LTrim(S)

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

ve směru od konce (nebo N1) k začátku řetězce. N2 definuje typ srovnání. Pokud je vynechán N2, pak vyhledávání použije aktuální instalaceVolba Porovnejte

Vrátí řetězec (typ Tětiva) obsahující kopii S se všemi velkými písmeny převedenými na znaky malá písmena

Vrátí řetězec; zkopíruje N znaků z S, počínaje zleva extrémní charakterS

Vrátí počet znaků v S, včetně začátku a konce prostory

z levé strany řetězce (mezery na začátku) Vrátí řetězec; zkopíruje N2 znaků z S, počínaje pozicí znaku v S zadanou argumentem N1. N2 je volitelný; pokud je N2 vynecháno, pak Mid vrátí vše znaky v řetězciSz poziceN1 na konec řádku Vrátí hodnotu typu String; zkopíruje N znaků z S,

počínaje znakem zcela vpravoS

Vrátí kopii řetězce S po odstranění prázdných znaků

z pravé strany řetězce (koncové znaky)

Vrátí řetězec mezer délkyNsymboly

Porovná S1 s S2 a vrátí číslo udávající výsledek porovnání: -1, pokud SI< S2; 0, если SI = S2; 1, если SI >S2. N je nepovinné a udává, zda by se při porovnání měla rozlišovat malá a velká písmena. Pokud je vynecháno N, budou řetězce porovnány pomocí aktuálního nastavení. VolbaPorovnejte

Vrátí řetězec převedený na nový formulář v závislosti na číselném kódu určeném argumentem N. VBA poskytuje interní konstanty pro použití s ​​funkcí StrConv; nejužitečnější jsou: vbProperCase(převede řetězec tak, aby každé písmeno začínající slovo bylo velké), vbLowerCase(převede řetězec na malá písmena) a vbUpperCase(převede řetězec na velká písmena)

Funkce(ar- Vrátí/Akcegumový)

String(N, S) Vrací řetězec o délce N znaků, který se skládá ze znaku

daný prvním znakem vS Trim(S) Vrací kopii řetězce S za úvodním a

koncové mezery z tohoto řetězce UCase(S) Vrátí S se všemi malými písmeny,

převedeny na velká písmena Několik jich je uvedeno v tabulce. 16 funkcí převodu datových typů se vztahuje také na manipulaci s řetězci: zejména Chr, Format, CStr.

Formátování datových hodnot

Ačkoli jazyk VBA dokáže automaticky převést jakýkoli typ dat na řetězec pro zobrazení pomocí funkce MsgBox nebo pro vložení do listu aplikace Excel, formát dat, který VBA vybere, nemusí být to, co chcete. Při převodu čísla na řetězec VBA nepřidává do řetězce oddělovač tisíců, znaky dolaru ani jiné číselné formátování. Také, pokud je číslo velmi velké nebo velmi malé, VBA vytvoří řetězec představující číslo v exponenciálním formátu. Při převodu dat VBA vždy používá krátký formát data a času používaný operačním systémem počítače a vždy zobrazuje datum i čas.

Chcete-li získat téměř jakýkoli formát data při převodu čísel nebo dat na řetězce, můžete použít funkci Formát; můžete dokonce použít funkci Formát k formátování dat řetězce podle konkrétního vzoru. Můžete také vytvořit vlastní formáty obrazovky, pokud potřebujete, aby se data zobrazovala v určitém formátu. Syntaxe operátoru Format je:

Formát( výraz [, Formát[, První den týdne [, První týden roku]]])

výraz – jakýkoli platný výraz (povinný); Formát – platný výraz pojmenovaného nebo uživatelem definovaného formátu (volitelné); První den týdne – konstanta, která určuje první den v týdnu (volitelné); První týden roku – konstanta, která určuje první týden v roce (volitelné).

Pro argumenty První den týdne A První týden roku Jazyk VBA pojmenoval konstanty, o kterých se můžete dozvědět v systému nápovědy VBA v části Datumové konstanty.

Chcete-li použít funkci Formát, můžete buď zadat předdefinovaný formát (tzv pojmenovaný formát(jmenoval formát), nebo vytvořit obrázek konkrétního formátu pomocí kombinací speciální skupiny znaků tzv zástupné symboly(zástupné symboly). Pokud potřebujete vytvořit vlastní formáty pro čísla, data nebo časy, musíte vytvořit řetězec obsahující zástupné znaky pro určení formátu obrázku, který má funkce používat. Formát při převodu hodnot na řetězec (tabulka 19). Navíc v tabulce. 19 použité

jako příklad je číselná hodnota 1234,5.

vytvořit vlastní

Tabulka 19– Formátovat zástupné symboly

zástupný znak

Akce

Číselný znak, zobrazuje číslici, pokud je na dané pozici jedna, nebo 0, pokud žádná není. Znak 0 můžete použít k zobrazení úvodních nul pro celá čísla a koncových nul pro desetinná místa; 00000.000 zobrazuje 00124,500

Číselný znak, zobrazuje číslici, pokud je na dané pozici jedna, jinak nezobrazuje nic. Výplňový znak # je ekvivalentní 0, kromě toho, že úvodní a koncové nuly se nezobrazují; #####.### zobrazí 1234,5

$ Zobrazuje znak dolaru; $###,###.00 zobrazí 1 234,50 $

Desetinný zástupný symbol, zobrazí desetinnou čárku na určené pozici v zástupném řetězci 0; #.##.## zobrazí 1234,5

Znak procent, vynásobí hodnotu 100 a přidá znak procenta na pozici označenou zástupnými symboly 0; #0.00% zobrazí číslo 0,12345 jako 12,35 % (12,345 je zaokrouhleno nahoru na 12,35)

, (čárka)

Oddělovač tisíců, přidává čárky jako oddělovače tisíců v zástupných znakových řetězcích 0 a #; ###,###,###. 00 zobrazuje 1 234,50

Zobrazuje hodnoty v exponenciálním formátu se znaménkem exponentu pouze pro záporné hodnoty; #.#### E00 displeje 1.2345E03; 0,12345 se zobrazí jako 1,2345E-01

Zobrazuje hodnoty v exponenciálním formátu s exponentem pro kladné a záporné hodnoty; #.#### E+00 zobrazuje 1.2345E+03

Odděluje den, měsíc a rok pro formátování hodnot data. mm/ dd/ yy zobrazí 06/06/97. Znaky "/" lze nahradit znaky pomlčky, aby se zobrazily jako 06-06-97

Určuje způsob zobrazení měsíců v datech; m zobrazuje 2, mm– 02, hmmm– únor mmmm- Únor

Určuje způsob zobrazení dnů v datech; d zobrazí 1, dd zobrazuje 01, ddd– pá, dddd- Pátek

y Zobrazuje den v roce jako číslo mezi 1 a 366

Určuje, jak zobrazit roky v datech; yy zobrazuje 99, uuuu– 1999

Zobrazuje čtvrtletí roku jako číslo mezi 1 a 4

Zobrazuje den v týdnu jako číslo (1 je neděle)

Zobrazuje týden v roce jako číslo mezi 1 a 54

zástupný znak

Akce

: (dvojtečka) Odděluje hodiny, minuty a sekundy v hodnotách formátu času; hh: mm: ss zobrazuje 02:02:02

Určuje způsob zobrazení hodin; pro hodnotu času 02:01:38 h zobrazuje 2, hh zobrazí 02

Zástupný symbol pro čas; pro hodnotu času 02:01:08 n zobrazí 1 a nn zobrazí 01

Zástupný symbol sekund pro čas; pro hodnotu času 02:01:08 s zobrazí 8 a ss zobrazuje 08

Zobrazuje čas ve 12hodinovém formátu s přidanými AM a PM; h: nnDOPOLEDNE ODPOLEDNE zobrazí 16:00. Alternativní formáty zahrnují am/pm, A/P a a/p

Zástupný znak znaku, zobrazí mezeru, pokud ve formátovaném řetězci není žádný odpovídající znak (výchozí pořadí odsazení je zprava doleva)

Zobrazí všechny znaky velkými písmeny

Zobrazí všechny znaky malými písmeny

Použití funkcí hostitelské aplikace

Kromě funkcí zabudovaných do jazyka Visual Basic for Applications jsou některé funkce hostitelské aplikace VBA dostupné z kódu VBA. Hostitel-aplikace je aplikace, která vyvíjí postupy VBA, jako je Word, Excel, PowerPoint, Outlook nebo FrontPage. Excel má například různé funkce, které provádějí matematické, logické, finanční a statistické operace s daty v listech. Mnoho (i když ne všechny) z těchto funkcí Excelu jsou přístupné z kódu VBA. Funkce hostitelské aplikace dostupné pro VBA nejsou součástí VBA, jsou součástí hostitelské aplikace. Funkce dostupné pro VBA v jedné hostitelské aplikaci nemusí být dostupné v jiné.

Chcete-li použít funkci, která patří nějaké hostitelské aplikaci, použijte funkci prostřednictvím objektu programu aplikace. Objekt Application VBA představuje hostitelskou aplikaci a všechny její prostředky. Objekty jsou podrobněji popsány v 6. části.

Úkol 6. Napište postup, který používá funkci Excel Max.

Pro tohle:

Zadejte postup (výpis 8):

Výpis 8 – Použití funkce ExcelMax

1 podseznam3_08()

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

Za slovem aplikace následuje tečka (.) a poté název funkce max bez mezer. Tento bod se nazývá oddělovací bod(tečka oddělovač) označuje, že operátor odkazuje na funkci max, který je součástí objektu

aplikace.

Výsledek funkce aplikace Excel nelze ignorovat. Do volání funkce aplikace Excel musíte vždy zahrnout závorky a vždy nějakým způsobem použít výsledek funkce: jako hodnotu ve výrazu, jako argument jiné funkce nebo procedury nebo v příkazu přiřazení.

Ne všechny funkce hostitelské aplikace jsou dostupné pro VBA. Pokud si nejste jisti, zda je pro VBA k dispozici konkrétní funkce hostitelské aplikace, použijte Objekt Prohlížeč zkontrolovat, zda seznam obsahuje členové (Komponent) tuto funkci s vybranou Funkce listu na seznamu třídy (Třídy) a s vybranou hostitelskou aplikací v seznamu projekt/ Knihovna (Projekt / Knihovna). Li požadovanou funkci není uveden, není k dispozici pro VBA.

Kontrolní otázky

    Definujte pojem "datové typy". Jaké datové typy se používají ve VBA?

    Co je to identifikátor?

    Co je to proměnná? Co znamená výraz „definovat proměnnou implicitně“ a co znamená „explicitně“?

    Jaké konstanty se používají ve VBA? Co jsou vnitřní konstanty?

    K čemu slouží funkce InputBox a MsgBox?

    co je to výraz?

    Definujte syntaxi operátoru přiřazení.

    Co jsou to relační operace?

    Jaká je priorita matematických operací?

    Jaké klíčové slovo existuje ve VBA, které se má použít při přístupu Excel funkce? K čemu můžete použít okno Prohlížeč objektů?

  • Boolean- datový typ boolean může uložit pouze dvě hodnoty: True nebo False, true nebo false. Jeho použití místo celočíselných proměnných je dobrý styl programování.
  • bajtů- typ byte je nový ve Visual Basic 5 a je navržen pro ukládání celých čísel od 0 do 255. Jeho použití umožňuje výrazně šetřit RAM a zmenšit velikost polí ve srovnání s předchozí verze Visual Basic. Kromě toho se používá při práci s binárními soubory.
  • Měna - daný typ chybí ve verzích GW-BASIC a QuickBASIC. Je navržen tak, aby se zabránilo chybám při převodu. desetinná čísla do binárního tvaru a naopak. (Není možné vyjádřit 1/10 jako součet 1/2, 1/4, 1/8, 1/16 atd.) Tento typ může mít až 4 číslice za desetinnou čárkou a až 14 před to. V tomto rozsahu budou výpočty přesné. Identifikátorem je znak „@“. Vzhledem k tomu, že všechny aritmetické operace kromě sčítání a odčítání se provádějí stejně pomalu jako v případě proměnných s dvojnásobnou přesností, je tento typ preferován pro finanční výpočty. (Pro ty, kdo by se zajímali, tento typ používá 19místná celá čísla, která se pak dělí 10 000. To umožňuje 15 desetinných míst a 4 desetinná místa.)
  • datum- Tento typ dat vám umožňuje ukládat hodnoty času a data mezi půlnocí 1. ledna 100 a půlnocí 31. prosince 9999. Takové hodnoty jsou v textu programu označeny znaky "#", například: NewYear = #leden 1, 2000# Pokud je zadáno pouze datum, Visual Basic předpokládá, že čas je 00:00.
  • Desetinný je nejvýkonnější číselný typ. Pro uložení proměnné tohoto typu je přiděleno 16 bajtů. Záporné a kladné hranice intervalu, ve kterém se možné hodnoty této proměnné nacházejí, jsou stejné v absolutní hodnotě a rovny +/- 79 228 162 514 264 337 593 543 950 335, pokud jsou použita celá čísla. Pokud je nutné ukládat zlomkové hodnoty, pak se hranice možných hodnot posunou o několik řádů v závislosti na tom, kolik desetinných míst vývojář používá. Tento typ lze použít pouze k ukládání desetinných míst. Vývojář může použít až 28 desetinných míst.
  • Dvojnásobek- Proměnné tohoto typu umožňují ukládat čísla s přesností až 16 číslic a délkou až 300 znaků. Identifikátor je "#". Výpočty s nimi jsou také přibližné a jejich rychlost je poměrně malá. Dvojité proměnné se používají hlavně pro vědecké výpočty.
  • Celé číslo- Celočíselné proměnné mohou ukládat pouze relativně malá celá čísla (mezi -32768 a +32767). Aritmetické operace přes taková čísla se provádějí velmi rychle. Znak "%" se používá k označení tohoto typu: IntegerPerem% = 3
  • Dlouho- tento typ se poprvé objevil v jazyce QuickBASIC. Tyto proměnné ukládají celočíselné hodnoty od -2 147 483 648 do +2 147 483 647. Označeno symbolem "&". Aritmetické operace na takových číslech jsou také velmi rychlé a při práci s procesorem 386DX nebo 486DX byl jen malý rozdíl v rychlosti výpočtu mezi Long a Integer. LongPerem& = 123456789
  • Objekt- ve skutečnosti je proměnná tohoto typu pouze odkazem na konkrétní instanci objektu. Proměnná je uložena ve 4 bytech.
  • Singl- identifikátorem těchto čísel je symbol "!". Tento typ proměnné umožňuje ukládat zlomková čísla až do sedmi číslic. To znamená, že pokud je výsledek 12345678,97, pak část 8,97 není přesná. Výsledkem může být například 12345670.01. Čísla mohou mít až 38 znaků. Výpočty s těmito proměnnými budou také přibližné. Aritmetika je navíc pomalejší než u celočíselných proměnných.
  • Tětiva- řetězcové proměnné ukládají znaky. Jedním ze způsobů, jak označit tento typ proměnné, je přidat znak "$" na konec jejího názvu, například: StringPerem$. Teoreticky může taková proměnná obsahovat až 2 miliardy znaků. V každém případě na konkrétním počítači bude toto číslo mnohem menší kvůli omezeným objemům. paměť s náhodným přístupem, prostředky systému Windows nebo počet znaků použitých ve formuláři. Jedním z nejzákladnějších použití řetězcových proměnných je výběr informací ze vstupních polí.

Pokud například změníte text v textovém poli 1, textové pole zobrazí stejný text, ale bez posledního znaku vpravo:

Možnost Explicitní Dim strText As String Private Sub Form_Load() Text1.Text = "" Text2.Text = "" End Sub Private Sub Text1_Change() Při chybě Pokračovat Další Text2.Text = strText strText = Left(Text1.Text, Len(Text1) .Text) - 1) End Sub

Varianta- tento typ byl přidán do Visual Basic 5 od verze 2.0. Proměnná typu varianta může obsahovat data libovolného typu. Pokud Visual Basic nezná typ přijímaných dat, musíte použít variantu. Na typu informace nezáleží, protože varianta může obsahovat libovolný typ dat (číselné, datum/čas, řetězec). Visual Basic provádí potřebné transformace dat automaticky, takže se o to nemusíte starat. Na druhou stranu můžete pomocí vestavěných funkcí zkontrolovat typ dat uložených v proměnné typové varianty. Usnadňují kontrolu, zda uživatel zadává informace správně. Použití datového typu, jako je varianta, zpomaluje program, protože operace převodu typu vyžaduje čas a zdroje. Mnoho programátorů si navíc uvědomuje, že používání automatických převodů datových typů vede k nedbalým programům. Jediný důvod v použití varianty spočívá v možných chybách při převodu typů přímo programátorem.

Někdy, při použití některých operátorů, funkcí API nebo jen pro vlastní potřebu, je potřeba vytvořit si vlastní datové typy. Často jsou označovány jako struktury. Struktura je ve svém jádru jako jednorozměrné pole, které nacpeme do jedné proměnné. Může však obsahovat data různých typů.

Vytvoření vlastního datového typu se provádí pomocí příkazu Type, který se používá v části Obecné kódu formuláře.