Objekt Range ima na desetine lastnosti. Programe VBA lahko pišete neprekinjeno naslednjih 12 mesecev in jih nikoli ne uporabite vseh. Tukaj dobite kratek pregled nekaterih najpogosteje uporabljenih lastnosti obsega Excel VBA. Za popolne podrobnosti si oglejte sistem pomoči v VBE. (Oglejte si te dodatne vire za pomoč pri Excelu VBA .)
Nekatere lastnosti obsega Excel VBA so lastnosti samo za branje, kar pomeni, da lahko vaša koda pogleda njihove vrednosti, vendar jih ne more spremeniti (»Glejte, vendar se ne dotikajte«). Vsak predmet Excel VBA Range ima na primer lastnost Address, ki vsebuje naslov obsega. Do te lastnosti, ki je samo za branje, lahko dostopate, vendar je ne morete spremeniti – kar je povsem smiselno, če pomislite nanjo.
Mimogrede, primeri, ki sledijo, so običajno izjave in ne popolni postopki. Če želite poskusiti kar koli od tega (in bi morali), ustvarite podpostopek, da to storite. Prav tako mnogi od teh stavkov VBA delujejo pravilno le, če je delovni list aktiven list.
Excel VBA: Lastnost Vrednost
Lastnost Value predstavlja vrednost, ki jo vsebuje celica. Je lastnost branja-pisanja, tako da lahko vaša koda VBA prebere ali spremeni vrednost.
Naslednji stavek prikaže okno s sporočilom, ki prikazuje vrednost v celici A1 na listu 1:
MsgBox Worksheets("Sheet1").Range("A1").Value
Razumljivo je, da lahko lastnost Value berete samo za enocelični objekt Range. Na primer, naslednji stavek ustvari napako:
MsgBox Worksheets("Sheet1").Range("A1:C3").Value
Lahko pa spremenite lastnost Value za obseg poljubne velikosti. Naslednji stavek vnese številko 123 v vsako celico v obsegu:
Delovni listi("List1").Razpon("A1:C3").Vrednost = 123
Vrednost je privzeta lastnost za objekt obsega Excel VBA. Z drugimi besedami, če izpustite lastnost za obseg, Excel uporabi svojo lastnost Value. Naslednji stavki vneseta vrednost 75 v celico A1 aktivnega delovnega lista:
Obseg("A1").Vrednost = 75
Razpon ("A1") = 75
Excel VBA: Lastnost Besedilo
Lastnost Text vrne niz, ki predstavlja besedilo, kot je prikazano v celici – oblikovano vrednost. Lastnost Besedilo je samo za branje. Recimo, da celica A1 vsebuje vrednost 12,3 in je oblikovana tako, da prikaže dve decimalki in znak za dolar (12,30 $). Naslednji stavek prikaže sporočilo, ki vsebuje 12,30 $:
Delovni listi MsgBox("List1").Razpon("A1").Besedilo
Toda naslednji stavek prikaže sporočilo, ki vsebuje 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Value
Če celica vsebuje formulo, lastnost Besedilo vrne rezultat formule. Če celica vsebuje besedilo, lastnost Besedilo in lastnost Vrednost vedno vrneta isto stvar, ker besedila (za razliko od števila) ni mogoče oblikovati za drugačen prikaz.
Excel VBA: Lastnost Count
Lastnost Count vrne število celic v obsegu. Šteje vse celice, ne samo neprazne celice. Število je lastnost samo za branje, tako kot bi pričakovali. Naslednji stavek dostopa do lastnosti Count obsega in prikaže rezultat (9) v sporočilnem polju:
Obseg MsgBox("A1:C3").Števec
Excel VBA: Lastnosti stolpca in vrstice
Lastnost Column vrne številko stolpca obsega ene celice. Njegova pomočnica, lastnost Vrstica, vrne številko vrstice enoceličnega obsega. Obe sta lastnosti samo za branje. Naslednji stavek na primer prikaže 6, ker je celica F3 v šestem stolpcu:
Listi MsgBox("List1").Razpon("F3").Stolpec
Naslednji izraz prikazuje 3, ker je celica F3 v tretji vrstici:
Listi MsgBox("List1").Razpon("F3").Vrstica
Če je objekt obsega Excel VBA sestavljen iz več kot ene celice, lastnost Column vrne številko stolpca prvega stolpca v obsegu, lastnost Vrstica pa številko vrstice prve vrstice v obsegu.
Ne zamenjujte lastnosti stolpca in vrstice z lastnostmi stolpcev in vrstic. Lastnosti stolpca in vrstice vrneta eno samo vrednost. Lastnosti stolpcev in vrstic po drugi strani vrnejo predmet Range. Kakšno razliko naredi "s".
Excel VBA: Lastnost Naslov
Naslov, lastnost samo za branje, prikaže naslov celice za objekt Range kot absolutno referenco (znak za dolar pred črko stolpca in pred številko vrstice). Naslednja izjava prikaže sporočilo, prikazano spodaj:
Obseg MsgBox(Celice(1, 1), Celice(5, 5)).Naslov
V tem sporočilnem polju je prikazana lastnost naslova obsega 5 na 5.
Excel VBA: lastnost HasFormula
Lastnost HasFormula (ki je samo za branje) vrne True, če obseg ene celice vsebuje formulo. Vrne False, če celica vsebuje nekaj drugega kot formula (ali je prazna). Če obseg obsega več kot eno celico, VBA vrne True samo, če vse celice v obsegu vsebujejo formulo ali False, če vse celice v obsegu nimajo formule. Lastnost vrne Null, če obseg vsebuje mešanico formul in neformul. Null je nekakšna nikogaršnja dežela: odgovor ni niti resnični niti napačen in vsaka celica v obsegu ima lahko formulo ali pa tudi ne.
Pri delu z lastnostmi, ki lahko vrnejo Null, morate biti previdni. Natančneje, edini tip podatkov, ki lahko obravnava ničelno vrednost, je Variant.
Predpostavimo na primer, da celica A1 vsebuje vrednost, celica A2 pa formulo. Naslednji stavki ustvarijo napako, ker obseg ni sestavljen iz vseh formul ali vseh neformul:
Dim FormulaTest kot Boolean
FormulaTest = Obseg("A1:A2").Ima formulo
Boolean podatkovni tip lahko obravnava samo True ali False. Null povzroči, da se Excel pritoži in prikaže sporočilo o napaki. Če želite popraviti to vrsto situacije, je najbolje, da se prepričate, da je spremenljivka FormulaTest deklarirana kot Variant in ne kot Boolean. Naslednji primer uporablja priročno funkcijo TypeName VBA (skupaj s konstrukcijo If-Then-Else), da določi tip podatkov spremenljivke FormulaTest. Če obseg vsebuje mešanico formul in neformul, se v sporočilnem polju prikaže Mešano! V nasprotnem primeru prikaže True ali False .
Sub CheckFormulas()
Dim FormulaTest kot različica
FormulaTest = Obseg("A1:A2").Ima formulo
Če TypeName(FormulaTest) = "Null", potem
MsgBox "Mešano!"
Drugače
MsgBox FormulaTest
Konec Če
Končni sub
Excel VBA: Lastnost Pisava
Lastnost lahko vrne predmet. Lastnost Pisava predmeta Excel VBA Range je še en primer tega koncepta. Lastnost Font vrne objekt Font.
Kot lahko pričakujete, ima objekt Font veliko dostopnih lastnosti. Če želite spremeniti nekatere vidike pisave obsega, morate najprej dostopati do predmeta Pisava obsega in nato manipulirati z lastnostmi tega predmeta. To je morda zmedeno, a morda bo ta primer pomagal.
Naslednji stavek uporablja lastnost Font predmeta Range za vrnitev predmeta Pisava. Nato je lastnost Bold objekta Font nastavljena na True. V preprosti angleščini ta izjava naredi celico prikazano krepko:
Obseg("A1").Pisava.Bold = True
Resnica je, da vam v resnici ni treba vedeti, da delate s posebnim objektom Font, ki je vsebovan v predmetu obsega Excel VBA. Dokler uporabljate ustrezno sintakso, deluje v redu. Pogosto vam zapisovanje dejanj s snemalnikom makrov pove vse, kar morate vedeti o pravilni skladnji.
Excel VBA: Lastnost Notranjost
Tukaj je še en primer lastnosti, ki vrne predmet. Lastnost Interior objekta Range vrne objekt Interior (čudno ime, vendar se tako imenuje). Ta vrsta sklicevanja na objekt deluje na enak način kot lastnost Pisava.
Na primer, naslednji stavek spremeni lastnost Color objekta Interior, ki ga vsebuje objekt Range:
Razpon ("A1"). Notranjost. Barva = 8421504
Z drugimi besedami, ta izjava spremeni ozadje celice v srednje sivo. Kaj je to? Niste vedeli, da je 8421504 srednje siv? Za nekaj vpogledov v Excelov čudovit svet barv si oglejte bližnjo stransko vrstico »Primer za hitro in umazano barvo«.
Excel VBA: Lastnost Formula
Lastnost Formula predstavlja formulo v celici. To je lastnost branja in pisanja, tako da lahko dostopate do nje, da si ogledate formulo v celici ali vstavite formulo v celico. Na primer, naslednji stavek vnese formulo SUM v celico A13:
Obseg("A13").Formula = "=SUM(A1:A12)"
Upoštevajte, da je formula besedilni niz in je zaprta v narekovajih. Upoštevajte tudi, da se formula začne z znakom enakosti, tako kot vse formule.
Če formula sama vsebuje narekovaje, postanejo stvari nekoliko zapletene. Recimo, da želite vstaviti to formulo z uporabo VBA:
=SUM(A1:A12)&"Trgovine"
Ta formula prikaže vrednost, ki ji sledi beseda Stores . Da bo ta formula sprejemljiva, morate vsak narekovaje v formuli zamenjati z dvema narekovajema. V nasprotnem primeru se VBA zmede in trdi, da je sintaksična napaka (ker obstaja!). Tukaj je torej stavek, ki vnese formulo, ki vsebuje narekovaje:
Obseg("A13").Formula = "=SUM(A1:A12)&"" Stores"""
Mimogrede, lahko dostopate do lastnosti Formula celice, tudi če celica nima formule. Če celica nima formule, vrne lastnost Formula enako kot njena lastnost Value.
Če želite vedeti, ali ima celica formulo, uporabite lastnost HasFormula.
Zavedajte se, da VBA "govori" ameriško angleško. To pomeni, da morate za vstavljanje formule v celico uporabiti sintakso ZDA. Če uporabljate neangleško različico Excela, preberite lastnost FormulaLocal v sistemu pomoči.
Excel VBA: Lastnost NumberFormat
Lastnost NumberFormat predstavlja obliko števila (izraženo kot besedilni niz) predmeta Range. To je lastnost branja in pisanja, tako da lahko vaša koda VBA bodisi pregleda obliko številk ali jo spremeni. Naslednji stavek spremeni obliko števila stolpca A v odstotek z dvema decimalnima mestoma:
Stolpci("A:A").NumberFormat = "0,00%"
Sledite tem korakom, če si želite ogledati seznam drugih formatov številk (še bolje, med tem vklopite snemalnik makrov):
Aktivirajte delovni list.
Pritisnite Ctrl+1 za dostop do pogovornega okna Oblikovanje celic.
Kliknite zavihek Številka.
Izberite kategorijo po meri, da si ogledate in uporabite nekaj dodatnih nizov zapisa številk.