Et Range-objekt har snesevis af egenskaber. Du kan skrive VBA-programmer nonstop i de næste 12 måneder og aldrig bruge dem alle. Her får du et kort overblik over nogle af de mest brugte Excel VBA Range-egenskaber. For fuldstændige detaljer, se hjælpesystemet i VBE. (Tjek disse yderligere ressourcer for at få hjælp til Excel VBA .)
Nogle Excel VBA Range-egenskaber er skrivebeskyttede egenskaber, hvilket betyder, at din kode kan se på deres værdier, men ikke kan ændre dem ("Se, men rør ikke ved"). For eksempel har hvert Excel VBA Range-objekt en Address-egenskab, som indeholder områdets adresse. Du kan få adgang til denne skrivebeskyttede ejendom, men du kan ikke ændre den - hvilket giver god mening, når du tænker over det.
I øvrigt er de følgende eksempler typisk udsagn frem for komplette procedurer. Hvis du gerne vil prøve nogen af disse (og du bør), skal du oprette en underprocedure for at gøre det. Desuden fungerer mange af disse VBA-sætninger kun korrekt, hvis et regneark er det aktive ark.
Excel VBA: Værdi-egenskaben
Egenskaben Værdi repræsenterer værdien i en celle. Det er en læse-skriveegenskab, så din VBA-kode kan enten læse eller ændre værdien.
Følgende sætning viser en meddelelsesboks, der viser værdien i celle A1 på Ark1:
MsgBox Worksheets("Sheet1").Range("A1").Value
Det er naturligt, at du kun kan læse værdiegenskaben for et enkeltcellet Range-objekt. For eksempel genererer følgende sætning en fejl:
MsgBox Worksheets("Sheet1").Range("A1:C3").Værdi
Du kan dog ændre egenskaben Værdi for en række af enhver størrelse. Følgende sætning indtaster tallet 123 i hver celle i et område:
Arbejdsark("Ark1").Range("A1:C3").Værdi = 123
Værdi er standardegenskaben for et Excel VBA Range-objekt. Med andre ord, hvis du udelader en egenskab for et område, bruger Excel dens værdiegenskab. Følgende udsagn indtaster begge en værdi på 75 i celle A1 i det aktive regneark:
Range("A1").Værdi = 75
Område("A1") = 75
Excel VBA: Tekstegenskaben
Egenskaben Tekst returnerer en streng, der repræsenterer teksten, som den vises i en celle - den formaterede værdi. Egenskaben Tekst er skrivebeskyttet. Antag, at celle A1 indeholder værdien 12,3 og er formateret til at vise to decimaler og et dollartegn ($12,30). Følgende erklæring viser en meddelelsesboks, der indeholder $12,30:
MsgBox Worksheets("Sheet1").Range("A1").Tekst
Men det næste udsagn viser en beskedboks, der indeholder 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Value
Hvis cellen indeholder en formel, returnerer egenskaben Tekst resultatet af formlen. Hvis en celle indeholder tekst, returnerer egenskaben Tekst og egenskaben Værdi altid det samme, fordi tekst (i modsætning til et tal) ikke kan formateres til at blive vist anderledes.
Excel VBA: Egenskaben Count
Egenskaben Count returnerer antallet af celler i et område. Det tæller alle celler, ikke kun de ikke-blanke celler. Count er en skrivebeskyttet ejendom, præcis som du ville forvente. Følgende sætning får adgang til et områdes Count-egenskab og viser resultatet (9) i en meddelelsesboks:
MsgBox Range("A1:C3"). Tæll
Excel VBA: Egenskaberne for kolonne og række
Egenskaben Kolonne returnerer kolonnenummeret for et enkeltcelleområde. Dens sidemand, Row-egenskaben, returnerer rækkenummeret for et enkeltcelleområde. Begge er skrivebeskyttede egenskaber. For eksempel viser følgende sætning 6, fordi celle F3 er i den sjette kolonne:
MsgBox Sheets("Sheet1").Range("F3").Kolonne
Det næste udtryk viser 3, fordi celle F3 er i tredje række:
MsgBox Sheets("Sheet1").Range("F3").Række
Hvis Excel VBA Range-objektet består af mere end én celle, returnerer egenskaben Column kolonnenummeret for den første kolonne i området, og egenskaben Row returnerer rækkenummeret for den første række i området.
Forveksle ikke egenskaberne Kolonne og Række med egenskaberne Kolonner og Rækker. Egenskaberne Kolonne og Række returnerer en enkelt værdi. Egenskaberne Columns og Rows returnerer derimod et Range-objekt. Hvilken forskel et "s" gør.
Excel VBA: Adresseegenskaben
Adresse, en skrivebeskyttet egenskab, viser celleadressen for et Range-objekt som en absolut reference (et dollartegn før kolonnebogstavet og før rækkenummeret). Følgende erklæring viser meddelelsesboksen vist nedenfor:
MsgBox Range(Cells(1, 1), Cells(5, 5)). Adresse
Denne meddelelsesboks viser egenskaben Adresse for et 5-til-5-interval.
Excel VBA: Egenskaben HasFormula
Egenskaben HasFormula (som er skrivebeskyttet) returnerer True, hvis enkeltcelleområdet indeholder en formel. Det returnerer False, hvis cellen indeholder noget andet end en formel (eller er tom). Hvis området består af mere end én celle, returnerer VBA kun Sand, hvis alle celler i området indeholder en formel, eller Falsk, hvis alle celler i området ikke har en formel. Egenskaben returnerer Null, hvis området indeholder en blanding af formler og ikke-formler. Null er en slags ingenmandsland: Svaret er hverken Sandt eller Falsk, og enhver celle i intervallet kan have en formel eller ikke.
Du skal være forsigtig, når du arbejder med egenskaber, der kan returnere Null. Mere specifikt er den eneste datatype, der kan håndtere Null, Variant.
Antag for eksempel, at celle A1 indeholder en værdi, og celle A2 indeholder en formel. Følgende udsagn genererer en fejl, fordi området ikke består af alle formler eller alle ikke-formler:
Dim FormulaTest Som Boolean
FormelTest = Range("A1:A2").HarFormel
Den boolske datatype kan kun håndtere True eller False. Null får Excel til at klage og vise en fejlmeddelelse. For at løse denne type situation er den bedste ting at gøre at sørge for, at FormulaTest-variablen er erklæret som en Variant i stedet for som en Boolean. Følgende eksempel bruger VBA's praktiske TypeName-funktion (sammen med en If-Then-Else-konstruktion) til at bestemme datatypen for FormulaTest-variablen. Hvis området har en blanding af formler og ikke-formler, viser meddelelsesboksen Blandet! Ellers viser den True eller False .
Sub CheckForFormulas()
Dim FormulaTest som variant
FormelTest = Range("A1:A2").HarFormel
Hvis TypeName(FormulaTest) = "Null" Så
MsgBox "Blandet!"
Andet
MsgBox FormulaTest
Afslut Hvis
Slut Sub
Excel VBA: Font-egenskaben
En egenskab kan returnere et objekt. Font-egenskaben for et Excel VBA Range-objekt er et andet eksempel på det koncept, der fungerer. Font-egenskaben returnerer et Font-objekt.
Et Font-objekt har, som du måske forventer, mange tilgængelige egenskaber. For at ændre nogle aspekter af et områdes skrifttype skal du først få adgang til områdets Font-objekt og derefter manipulere egenskaberne for det pågældende objekt. Dette kan være forvirrende, men måske vil dette eksempel hjælpe.
Følgende sætning bruger Font-egenskaben for Range-objektet til at returnere et Font-objekt. Derefter sættes egenskaben Bold for Font-objektet til True. På almindeligt engelsk får denne erklæring cellen til at vises med fed skrift:
Range("A1"). Font.Fed = Sand
Sandheden er, at du ikke rigtig behøver at vide, at du arbejder med et særligt Font-objekt, der er indeholdt i et Excel VBA Range-objekt. Så længe du bruger den rigtige syntaks, fungerer det fint. Ofte fortæller optagelse af dine handlinger med makrooptageren dig alt, hvad du behøver at vide om den korrekte syntaks.
Excel VBA: Den indre ejendom
Her er endnu et eksempel på en egenskab, der returnerer et objekt. Et Range-objekts Interior-egenskab returnerer et Interior-objekt (mærkeligt navn, men det er det, det hedder). Denne type objekthenvisning fungerer på samme måde som Font-egenskaben.
Følgende sætning ændrer f.eks. egenskaben Color for Interiør-objektet, der er indeholdt i Range-objektet:
Range("A1"). Interiør.Farve = 8421504
Med andre ord ændrer denne erklæring cellens baggrund til mellemgrå. Hvad er det? Du vidste ikke, at 8421504 er mellemgrå? For lidt indsigt i Excels vidunderlige farveverden, se den nærliggende sidebjælke "En hurtig og beskidt farvegrunder."
Excel VBA: Formel-egenskaben
Formelegenskaben repræsenterer formlen i en celle. Dette er en læse-skriveegenskab, så du kan få adgang til den for enten at se formlen i en celle eller indsætte en formel i en celle. For eksempel indtaster følgende sætning en SUM-formel i celle A13:
Range("A13"). Formel = "=SUM(A1:A12)"
Bemærk, at formlen er en tekststreng og er omgivet af anførselstegn. Bemærk også, at formlen begynder med et lighedstegn, som alle formler gør.
Hvis selve formlen indeholder anførselstegn, bliver tingene lidt vanskelige. Sig, at du vil indsætte denne formel ved at bruge VBA:
=SUM(A1:A12)&" Butikker"
Denne formel viser en værdi efterfulgt af ordet Stores . For at gøre denne formel acceptabel, skal du erstatte hvert anførselstegn i formlen med to anførselstegn. Ellers bliver VBA forvirret og hævder, at der er en syntaksfejl (fordi der er!). Så her er et udsagn, der indtaster en formel, der indeholder anførselstegn:
Range("A13").Formel = "=SUM(A1:A12)&"" Gemmer"""
Du kan i øvrigt få adgang til en celles Formel-egenskab, selvom cellen ikke har en formel. Hvis en celle ikke har nogen formel, returnerer Formel-egenskaben det samme som dens Værdi-egenskab.
Hvis du har brug for at vide, om en celle har en formel, skal du bruge egenskaben HasFormula.
Vær opmærksom på, at VBA "taler" amerikansk engelsk. Det betyder, at for at sætte en formel i en celle, skal du bruge den amerikanske syntaks. Hvis du bruger en ikke-engelsk version af Excel, skal du læse op på FormulaLocal-egenskaben i hjælpesystemet.
Excel VBA: Egenskaben NumberFormat
Egenskaben NumberFormat repræsenterer talformatet (udtrykt som en tekststreng) for Range-objektet. Dette er en læse-skriveegenskab, så din VBA-kode kan enten undersøge talformatet eller ændre det. Følgende udsagn ændrer talformatet for kolonne A til en procentdel med to decimaler:
Columns("A:A").NumberFormat = "0,00%"
Følg disse trin for at se en liste over andre talformater (bedre endnu, tænd for makrooptageren, mens du gør dette):
Aktiver et regneark.
Tryk på Ctrl+1 for at få adgang til dialogboksen Formater celler.
Klik på fanen Nummer.
Vælg kategorien Brugerdefineret for at se og anvende nogle yderligere talformatstrenge.