Objekt Range má desítky vlastností. Programy VBA můžete psát nepřetržitě po dobu následujících 12 měsíců a nikdy je nepoužijete všechny. Zde získáte stručný přehled některých nejběžněji používaných vlastností Excel VBA Range. Úplné podrobnosti najdete v systému nápovědy ve VBE. (Prohlédněte si tyto další zdroje, kde najdete nápovědu k Excel VBA .)
Některé vlastnosti Excel VBA Range jsou vlastnosti pouze pro čtení, což znamená, že váš kód se může podívat na jejich hodnoty, ale nemůže je změnit („Podívejte se, ale nedotýkejte se“). Například každý objekt Excel VBA Range má vlastnost Address, která obsahuje adresu rozsahu. K této vlastnosti pouze pro čtení máte přístup, ale nemůžete ji změnit – což dává dokonalý smysl, když se nad tím zamyslíte.
Mimochodem, příklady, které následují, jsou spíše prohlášení než úplné postupy. Pokud byste chtěli některou z těchto možností vyzkoušet (a měli byste), vytvořte k tomu proceduru Sub. Mnoho z těchto příkazů VBA také funguje správně, pouze pokud je aktivním listem list.
Excel VBA: Vlastnost Value
Vlastnost Hodnota představuje hodnotu obsaženou v buňce. Jde o vlastnost čtení a zápisu, takže váš kód VBA může hodnotu buď číst, nebo měnit.
Následující příkaz zobrazí okno se zprávou, které zobrazuje hodnotu v buňce A1 na Listu1:
MsgBox Worksheets("Sheet1").Range("A1").Value
Je logické, že vlastnost Value můžete číst pouze pro objekt Range s jednou buňkou. Například následující příkaz generuje chybu:
MsgBox Worksheets("Sheet1").Range("A1:C3").Value
Můžete však změnit vlastnost Hodnota pro rozsah libovolné velikosti. Následující příkaz vloží číslo 123 do každé buňky v rozsahu:
Worksheets("Sheet1").Rozsah("A1:C3").Hodnota = 123
Hodnota je výchozí vlastností pro objekt Excel VBA Range. Jinými slovy, pokud vynecháte vlastnost pro rozsah, Excel použije její vlastnost Value. Oba následující příkazy zadávají hodnotu 75 do buňky A1 aktivního listu:
Rozsah("A1").Hodnota = 75
Rozsah("A1") = 75
Excel VBA: Vlastnost Text
Vlastnost Text vrací řetězec, který představuje text tak, jak je zobrazen v buňce – formátovanou hodnotu. Vlastnost Text je pouze pro čtení. Předpokládejme, že buňka A1 obsahuje hodnotu 12,3 a je naformátována tak, aby zobrazovala dvě desetinná místa a znak dolaru (12,30 $). Následující příkaz zobrazí okno se zprávou obsahující 12,30 $:
MsgBox Worksheets("Sheet1").Range("A1").Text
Ale další příkaz zobrazí okno se zprávou obsahující 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Value
Pokud buňka obsahuje vzorec, vlastnost Text vrátí výsledek vzorce. Pokud buňka obsahuje text, vlastnost Text a vlastnost Value vždy vrátí totéž, protože text (na rozdíl od čísla) nelze formátovat tak, aby se zobrazoval jinak.
Excel VBA: Vlastnost Count
Vlastnost Count vrátí počet buněk v rozsahu. Počítá všechny buňky, nejen neprázdné. Count je vlastnost pouze pro čtení, jak byste očekávali. Následující příkaz přistupuje k vlastnosti počtu rozsahu a zobrazí výsledek (9) v okně se zprávou:
Rozsah MsgBox("A1:C3").Počet
Excel VBA: Vlastnosti sloupce a řádku
Vlastnost Column vrací číslo sloupce rozsahu jedné buňky. Jeho pomocník, vlastnost Row, vrací číslo řádku rozsahu jedné buňky. Oba jsou vlastnosti pouze pro čtení. Například následující příkaz zobrazuje 6, protože buňka F3 je v šestém sloupci:
MsgBox Sheets("Sheet1").Range("F3").Sloupec
Další výraz zobrazí 3, protože buňka F3 je ve třetím řádku:
MsgBox Sheets("Sheet1").Range("F3").Řádek
Pokud se objekt Excel VBA Range skládá z více než jedné buňky, vrátí vlastnost Column číslo sloupce prvního sloupce v rozsahu a vlastnost Row vrátí číslo řádku prvního řádku v rozsahu.
Nezaměňujte vlastnosti Column a Row s vlastnostmi Columns a Rows. Vlastnosti Column a Row vracejí jednu hodnotu. Vlastnosti Columns a Rows na druhou stranu vracejí objekt Range. Jaký rozdíl dělá „s“.
Excel VBA: Vlastnost Adresa
Adresa, vlastnost pouze pro čtení, zobrazuje adresu buňky pro objekt Range jako absolutní odkaz (znak dolaru před písmenem sloupce a před číslem řádku). Následující prohlášení zobrazí okno se zprávou zobrazené níže:
Rozsah MsgBox(Cells(1, 1), Cells(5, 5)).Adresa
Toto okno se zprávou zobrazuje vlastnost Adresa rozsahu 5 x 5.
Excel VBA: Vlastnost HasFormula
Vlastnost HasFormula (která je jen pro čtení) vrátí hodnotu True, pokud rozsah jedné buňky obsahuje vzorec. Pokud buňka obsahuje něco jiného než vzorec (nebo je prázdná), vrátí hodnotu False. Pokud se rozsah skládá z více než jedné buňky, VBA vrátí hodnotu True, pouze pokud všechny buňky v oblasti obsahují vzorec, nebo False, pokud všechny buňky v rozsahu vzorec nemají. Vlastnost vrátí hodnotu Null, pokud rozsah obsahuje směs vzorců a neformulí. Null je druh země nikoho: Odpověď není ani pravda, ani nepravda a jakákoli buňka v rozsahu může nebo nemusí mít vzorec.
Při práci s vlastnostmi, které mohou vrátit hodnotu Null, musíte být opatrní. Přesněji řečeno, jediný datový typ, který dokáže pracovat s Null, je Variant.
Předpokládejme například, že buňka A1 obsahuje hodnotu a buňka A2 obsahuje vzorec. Následující příkazy generují chybu, protože rozsah se neskládá ze všech vzorců nebo všech neformulí:
Dim FormulaTest jako Boolean
FormulaTest = Rozsah("A1:A2").HasFormula
Datový typ Boolean dokáže zpracovat pouze hodnotu True nebo False. Null způsobí, že si Excel stěžuje a zobrazí chybovou zprávu. Chcete-li tento typ situace vyřešit, je nejlepší zajistit, aby proměnná FormulaTest byla deklarována jako varianta, nikoli jako logická. Následující příklad používá praktickou funkci TypeName jazyka VBA (spolu s konstrukcí If-Then-Else) k určení datového typu proměnné FormulaTest. Pokud rozsah obsahuje směs vzorců a neformulí, zobrazí se v okně zprávy Mixed! V opačném případě se zobrazí True nebo False .
Dílčí CheckFormulas()
Dim FormulaTest jako varianta
FormulaTest = Rozsah("A1:A2").HasFormula
If TypeName(FormulaTest) = "Null" Then
MsgBox "Smíšené!"
Jiný
Test vzorce MsgBox
End If
End Sub
Excel VBA: Vlastnost písma
Vlastnost může vrátit objekt. Vlastnost Font objektu Excel VBA Range je dalším příkladem tohoto konceptu v práci. Vlastnost Font vrací objekt Font.
Objekt Font, jak můžete očekávat, má mnoho přístupných vlastností. Chcete-li změnit některé aspekty písma rozsahu, musíte nejprve přistoupit k objektu Font rozsahu a poté manipulovat s vlastnostmi tohoto objektu. Může to být matoucí, ale možná pomůže tento příklad.
Následující příkaz používá vlastnost Font objektu Range k vrácení objektu Font. Potom se vlastnost Tučné písma nastaví na hodnotu True. V jednoduché angličtině tento příkaz způsobí, že se buňka zobrazí tučně:
Rozsah("A1").Font.Tučné = True
Pravdou je, že opravdu nepotřebujete vědět, že pracujete se speciálním objektem Font, který je obsažen v objektu Excel VBA Range. Pokud používáte správnou syntaxi, funguje to dobře. Záznam vašich akcí pomocí záznamníku maker vám často řekne vše, co potřebujete vědět o správné syntaxi.
Excel VBA: Vlastnost Interior
Zde je další příklad vlastnosti, která vrací objekt. Vlastnost Interior objektu Range vrací objekt Interior (zvláštní název, ale tak se tomu říká). Tento typ odkazování na objekt funguje stejným způsobem jako vlastnost Font.
Například následující příkaz změní vlastnost Color objektu Interior obsaženého v objektu Range:
Rozsah("A1").Interior.Color = 8421504
Jinými slovy, tento příkaz změní pozadí buňky na středně šedé. co to je Nevěděli jste, že 8421504 je středně šedá? Některé pohledy do úžasného světa barev Excelu najdete na nedalekém postranním panelu „Rychlý a špinavý základní nátěr“.
Excel VBA: Vlastnost Formule
Vlastnost Formula představuje vzorec v buňce. Toto je vlastnost čtení a zápisu, takže k ní můžete přistupovat, abyste mohli buď zobrazit vzorec v buňce, nebo vložit vzorec do buňky. Například následující příkaz zadá vzorec SUM do buňky A13:
Rozsah("A13").Vzorec = "=SUM(A1:A12)"
Všimněte si, že vzorec je textový řetězec a je uzavřen v uvozovkách. Všimněte si také, že vzorec začíná rovnítkem, stejně jako všechny vzorce.
Pokud samotný vzorec obsahuje uvozovky, věci jsou trochu složitější. Řekněme, že chcete vložit tento vzorec pomocí VBA:
=SUM(A1:A12)&"Obchody"
Tento vzorec zobrazuje hodnotu následovanou slovem Stores . Aby byl tento vzorec přijatelný, musíte nahradit všechny uvozovky ve vzorci dvěma uvozovkami. V opačném případě se VBA zmátne a tvrdí, že došlo k chybě syntaxe (protože existuje!). Zde je tedy příkaz, který zadává vzorec obsahující uvozovky:
Rozsah("A13").Vzorec = "=SOUČET(A1:A12)&"" Obchody"""
Mimochodem, můžete získat přístup k vlastnosti Vzorec buňky, i když buňka nemá vzorec. Pokud buňka nemá žádný vzorec, vlastnost Vzorec vrátí stejnou hodnotu jako vlastnost Hodnota.
Pokud potřebujete vědět, zda má buňka vzorec, použijte vlastnost HasFormula.
Uvědomte si, že VBA „mluví“ americkou angličtinou. To znamená, že pro vložení vzorce do buňky musíte použít americkou syntaxi. Pokud používáte neanglickou verzi Excelu, přečtěte si o vlastnosti FormulaLocal v systému nápovědy.
Excel VBA: Vlastnost NumberFormat
Vlastnost NumberFormat představuje formát čísla (vyjádřený jako textový řetězec) objektu Range. Toto je vlastnost čtení a zápisu, takže váš kód VBA může formát čísla buď prozkoumat, nebo jej změnit. Následující příkaz změní číselný formát sloupce A na procenta se dvěma desetinnými místy:
Columns("A:A").NumberFormat = "0,00%"
Chcete-li zobrazit seznam dalších formátů čísel, postupujte podle těchto kroků (ještě lépe, když to uděláte, zapněte záznam maker):
Aktivujte pracovní list.
Stisknutím Ctrl+1 otevřete dialogové okno Formát buněk.
Klepněte na kartu Číslo.
Chcete-li zobrazit a použít některé další řetězce formátování čísel, vyberte kategorii Vlastní.