Objekt Range má desiatky vlastností. Programy VBA môžete písať nepretržite počas nasledujúcich 12 mesiacov a nikdy ich nepoužijete všetky. Tu získate stručný prehľad niektorých najbežnejšie používaných vlastností Excel VBA Range. Úplné podrobnosti nájdete v systéme pomoci vo VBE. (Pozrite si tieto dodatočné zdroje, kde nájdete pomoc s Excelom VBA .)
Niektoré vlastnosti Excelu VBA Range sú vlastnosti len na čítanie, čo znamená, že váš kód si môže pozrieť ich hodnoty, ale nemôže ich zmeniť („Pozri, ale nedotýkaj sa“). Napríklad každý objekt Excel VBA Range má vlastnosť Address, ktorá obsahuje adresu rozsahu. Môžete pristupovať k tejto vlastnosti iba na čítanie, ale nemôžete ju zmeniť – čo dáva dokonalý zmysel, keď sa nad tým zamyslíte.
Mimochodom, nasledujúce príklady sú zvyčajne skôr vyhláseniami než úplnými postupmi. Ak by ste chceli niektorú z týchto možností vyskúšať (a mali by ste), vytvorte na to procedúru Sub. Mnohé z týchto príkazov VBA fungujú správne iba vtedy, ak je pracovný hárok aktívnym hárkom.
Excel VBA: Vlastnosť Value
Vlastnosť Value predstavuje hodnotu obsiahnutú v bunke. Je to vlastnosť čítania a zápisu, takže váš kód VBA môže čítať alebo meniť hodnotu.
Nasledujúce vyhlásenie zobrazí okno s hlásením, ktoré zobrazuje hodnotu v bunke A1 na Háre1:
MsgBox Worksheets("Sheet1").Range("A1").Value
Je logické, že vlastnosť Value môžete čítať len pre objekt Range s jednou bunkou. Napríklad nasledujúci príkaz generuje chybu:
MsgBox Worksheets("Sheet1").Range("A1:C3").Value
Môžete však zmeniť vlastnosť Hodnota pre rozsah ľubovoľnej veľkosti. Nasledujúci príkaz zadá číslo 123 do každej bunky v rozsahu:
Pracovné hárky("Hárok1").Rozsah ("A1:C3").Hodnota = 123
Hodnota je predvolená vlastnosť pre objekt Excel VBA Range. Inými slovami, ak vynecháte vlastnosť pre rozsah, Excel použije svoju vlastnosť Hodnota. Oba nasledujúce príkazy zadávajú hodnotu 75 do bunky A1 aktívneho hárka:
Rozsah("A1").Hodnota = 75
Rozsah("A1") = 75
Excel VBA: Vlastnosť Text
Vlastnosť Text vracia reťazec, ktorý predstavuje text tak, ako je zobrazený v bunke – formátovanú hodnotu. Vlastnosť Text je len na čítanie. Predpokladajme, že bunka A1 obsahuje hodnotu 12,3 a je naformátovaná tak, aby zobrazovala dve desatinné miesta a znak dolára (12,30 USD). Nasledujúci výpis zobrazí okno so správou, ktoré obsahuje 12,30 USD:
MsgBox Pracovné hárky("Hárok1").Rozsah("A1").Text
Ale nasledujúci príkaz zobrazí okno so správou obsahujúce 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Value
Ak bunka obsahuje vzorec, vlastnosť Text vráti výsledok vzorca. Ak bunka obsahuje text, vlastnosť Text a vlastnosť Hodnota vždy vrátia to isté, pretože text (na rozdiel od čísla) nemožno formátovať tak, aby sa zobrazoval inak.
Excel VBA: Vlastnosť Count
Vlastnosť Count vráti počet buniek v rozsahu. Počíta všetky bunky, nielen neprázdne. Count je vlastnosť len na čítanie, presne ako by ste očakávali. Nasledujúci príkaz pristupuje k vlastnosti Počet a zobrazuje výsledok (9) v okne so správou:
Rozsah MsgBox("A1:C3").Počet
Excel VBA: Vlastnosti stĺpca a riadka
Vlastnosť Column vráti číslo stĺpca rozsahu jednej bunky. Jeho pomocník, vlastnosť Row, vracia číslo riadku rozsahu jednej bunky. Obe vlastnosti sú len na čítanie. Napríklad nasledujúci príkaz zobrazuje 6, pretože bunka F3 je v šiestom stĺpci:
MsgBox Sheets("Hárok1").Rozsah("F3").Stĺpec
Ďalší výraz zobrazí 3, pretože bunka F3 je v treťom riadku:
MsgBox Sheets("Hárok1").Rozsah("F3").Riadok
Ak objekt Excel VBA Range pozostáva z viac ako jednej bunky, vlastnosť Column vráti číslo stĺpca prvého stĺpca v rozsahu a vlastnosť Row vráti číslo riadka prvého riadka v rozsahu.
Nezamieňajte si vlastnosti Stĺpec a Riadok s vlastnosťami Stĺpce a Riadky. Vlastnosti Stĺpec a Riadok vrátia jednu hodnotu. Vlastnosti Stĺpce a Riadky na druhej strane vracajú objekt Rozsah. Aký rozdiel robí „s“.
Excel VBA: Vlastnosť adresy
Adresa, vlastnosť len na čítanie, zobrazuje adresu bunky pre objekt Range ako absolútnu referenciu (znak dolára pred písmenom stĺpca a pred číslom riadku). Nasledujúce vyhlásenie zobrazí okno so správou zobrazené nižšie:
Rozsah MsgBox(Cells(1, 1), Cells(5, 5)).Address
Toto okno so správou zobrazuje vlastnosť Adresa rozsahu 5 x 5.
Excel VBA: Vlastnosť HasFormula
Vlastnosť HasFormula (ktorá je len na čítanie) vráti hodnotu True, ak rozsah jednej bunky obsahuje vzorec. Ak bunka obsahuje niečo iné ako vzorec (alebo je prázdna), vráti hodnotu False. Ak rozsah pozostáva z viac ako jednej bunky, VBA vráti hodnotu True, iba ak všetky bunky v rozsahu obsahujú vzorec, alebo hodnotu False, ak všetky bunky v rozsahu vzorec nemajú. Vlastnosť vráti hodnotu Null, ak rozsah obsahuje zmes vzorcov a neformulácií. Null je akousi krajinou nikoho: Odpoveď nie je ani Pravda, ani Nepravda a každá bunka v rozsahu môže, ale nemusí mať vzorec.
Pri práci s vlastnosťami, ktoré môžu vrátiť hodnotu Null, musíte byť opatrní. Presnejšie povedané, jediný typ údajov, ktorý dokáže pracovať s hodnotou Null, je Variant.
Predpokladajme napríklad, že bunka A1 obsahuje hodnotu a bunka A2 obsahuje vzorec. Nasledujúce príkazy generujú chybu, pretože rozsah nepozostáva zo všetkých vzorcov alebo všetkých nevzorcov:
Dim FormulaTest ako Boolean
FormulaTest = Rozsah("A1:A2").HasFormula
Typ údajov Boolean dokáže spracovať iba hodnotu True alebo False. Null spôsobí, že Excel si sťažuje a zobrazí chybové hlásenie. Ak chcete vyriešiť tento typ situácie, najlepšie je uistiť sa, že premenná FormulaTest je deklarovaná ako Variant a nie ako Boolean. Nasledujúci príklad používa praktickú funkciu TypeName jazyka VBA (spolu s konštruktom If-Then-Else) na určenie typu údajov premennej FormulaTest. Ak rozsah obsahuje zmes vzorcov a neformulácií, v okne hlásenia sa zobrazí Zmiešané! V opačnom prípade sa zobrazí True alebo False .
Sub CheckFormulas()
Dim FormulaTest ako variant
FormulaTest = Rozsah("A1:A2").HasFormula
Ak TypeName (FormulaTest) = "Null" Potom
MsgBox "Zmiešané!"
Inak
Test vzorca MsgBox
Koniec Ak
End Sub
Excel VBA: Vlastnosť písma
Vlastnosť môže vrátiť objekt. Vlastnosť Font objektu Excel VBA Range je ďalším príkladom tohto konceptu v práci. Vlastnosť Font vráti objekt Font.
Objekt Font, ako môžete očakávať, má veľa prístupných vlastností. Ak chcete zmeniť niektorý aspekt písma rozsahu, musíte najprv pristúpiť k objektu Písmo rozsahu a potom manipulovať s vlastnosťami tohto objektu. Môže to byť mätúce, ale možno vám tento príklad pomôže.
Nasledujúci príkaz používa vlastnosť Font objektu Range na vrátenie objektu Font. Potom je vlastnosť Bold objektu Font nastavená na True. V jednoduchej angličtine toto vyhlásenie spôsobí, že sa bunka zobrazí tučným písmom:
Rozsah("A1").Font.Tučné = True
Pravdou je, že v skutočnosti nemusíte vedieť, že pracujete so špeciálnym objektom Font, ktorý je obsiahnutý v objekte Excel VBA Range. Pokiaľ používate správnu syntax, funguje to dobre. Zaznamenávanie vašich akcií pomocou makrorekordéra vám často povie všetko, čo potrebujete vedieť o správnej syntaxi.
Excel VBA: Vlastnosť interiéru
Tu je ďalší príklad vlastnosti, ktorá vracia objekt. Vlastnosť Interior objektu Range vracia objekt Interior (zvláštny názov, ale tak sa to volá). Tento typ odkazovania na objekt funguje rovnakým spôsobom ako vlastnosť Font.
Napríklad nasledujúci príkaz zmení vlastnosť Color objektu Interior obsiahnutého v objekte Range:
Rozsah("A1").Farba interiéru = 8421504
Inými slovami, toto vyhlásenie zmení pozadie bunky na stredne šedé. Čo je to? Nevedeli ste, že 8421504 je stredne šedá? Niektoré pohľady do úžasného sveta farieb Excelu nájdete na vedľajšom bočnom paneli „Rýchly a špinavý základný náter“.
Excel VBA: Vlastnosť vzorca
Vlastnosť Vzorec predstavuje vzorec v bunke. Toto je vlastnosť čítania a zápisu, takže k nej môžete pristupovať a zobraziť vzorec v bunke alebo vložiť vzorec do bunky. Napríklad nasledujúci príkaz zadá vzorec SUM do bunky A13:
Rozsah("A13"). Vzorec = "=SUM(A1:A12)"
Všimnite si, že vzorec je textový reťazec a je uzavretý v úvodzovkách. Všimnite si tiež, že vzorec začína znakom rovnosti, ako všetky vzorce.
Ak samotný vzorec obsahuje úvodzovky, veci sú trochu zložitejšie. Povedzme, že chcete vložiť tento vzorec pomocou VBA:
=SUM(A1:A12)&"Obchody"
Tento vzorec zobrazuje hodnotu, za ktorou nasleduje slovo Stores . Aby bol tento vzorec prijateľný, musíte nahradiť všetky úvodzovky vo vzorci dvoma úvodzovkami. V opačnom prípade je VBA zmätený a tvrdí, že došlo k chybe syntaxe (pretože existuje!). Takže tu je vyhlásenie, ktoré zadáva vzorec, ktorý obsahuje úvodzovky:
Rozsah("A13").Vzorec = "=SUM(A1:A12)&"" Obchody"""
Mimochodom, môžete získať prístup k vlastnosti vzorca bunky, aj keď bunka nemá vzorec. Ak bunka nemá vzorec, vlastnosť Vzorec vráti rovnakú hodnotu ako vlastnosť Hodnota.
If you need to know whether a cell has a formula, use the HasFormula property.
Be aware that VBA “speaks” U.S. English. This means that to put a formula in a cell, you must use the U.S. syntax. If you use a non-English version of Excel, read up on the FormulaLocal property in the Help system.
Excel VBA: The NumberFormat property
The NumberFormat property represents the number format (expressed as a text string) of the Range object. This is a read-write property, so your VBA code can either examine the number format or change it. The following statement changes the number format of column A to a percentage with two decimal places:
Columns("A:A").NumberFormat = "0.00%"
Follow these steps to see a list of other number formats (better yet, turn on the macro recorder while you do this):
Activate a worksheet.
Stlačte Ctrl+1, aby ste sa dostali do dialógového okna Formát buniek.
Kliknite na kartu Číslo.
Ak chcete zobraziť a použiť niektoré ďalšie reťazce formátu čísel, vyberte kategóriu Vlastné.