Ett Range-objekt har dussintals egenskaper. Du kan skriva VBA-program nonstop under de kommande 12 månaderna och aldrig använda dem alla. Här får du en kort översikt över några av de mest använda Excel VBA Range-egenskaperna. För fullständig information, se hjälpsystemet i VBE. (Kolla in dessa ytterligare resurser för hjälp med Excel VBA .)
Vissa Excel VBA Range-egenskaper är skrivskyddade egenskaper, vilket innebär att din kod kan titta på deras värden men inte ändra dem ("Titta, men rör inte"). Till exempel har varje Excel VBA Range-objekt en Address-egenskap, som innehåller intervallets adress. Du kan komma åt den här skrivskyddade egenskapen, men du kan inte ändra den - vilket är helt logiskt när du tänker på det.
Förresten, exemplen som följer är vanligtvis uttalanden snarare än fullständiga procedurer. Om du vill prova någon av dessa (och du borde), skapa en underordnad procedur för att göra det. Många av dessa VBA-satser fungerar bara korrekt om ett kalkylblad är det aktiva bladet.
Excel VBA: Egenskapen Value
Egenskapen Value representerar värdet som finns i en cell. Det är en läs-skriv-egenskap, så din VBA-kod kan antingen läsa eller ändra värdet.
Följande uttalande visar en meddelanderuta som visar värdet i cell A1 på Blad1:
MsgBox Worksheets("Sheet1").Range("A1").Value
Det är naturligt att du bara kan läsa egenskapen Value för ett encelligt Range-objekt. Till exempel genererar följande sats ett fel:
MsgBox Worksheets("Sheet1").Range("A1:C3").Value
Du kan dock ändra egenskapen Value för ett intervall av valfri storlek. Följande påstående anger talet 123 i varje cell i ett intervall:
Arbetsblad("Sheet1").Range("A1:C3").Value = 123
Value är standardegenskapen för ett Excel VBA Range-objekt. Med andra ord, om du utelämnar en egenskap för ett intervall, använder Excel dess värde-egenskap. Följande satser anger båda värdet 75 i cell A1 i det aktiva kalkylbladet:
Range("A1"). Värde = 75
Område("A1") = 75
Excel VBA: Text-egenskapen
Egenskapen Text returnerar en sträng som representerar texten som den visas i en cell – det formaterade värdet. Egenskapen Text är skrivskyddad. Antag att cell A1 innehåller värdet 12,3 och är formaterad för att visa två decimaler och ett dollartecken ($12,30). Följande uttalande visar en meddelanderuta som innehåller $12,30:
MsgBox Worksheets("Sheet1").Range("A1").Text
Men nästa påstående visar en meddelanderuta som innehåller 12.3:
MsgBox Worksheets("Sheet1").Range("A1").Value
Om cellen innehåller en formel returnerar egenskapen Text resultatet av formeln. Om en cell innehåller text, returnerar egenskapen Text och egenskapen Value alltid samma sak, eftersom text (till skillnad från ett tal) inte kan formateras för att visas annorlunda.
Excel VBA: Egenskapen Count
Egenskapen Count returnerar antalet celler i ett intervall. Den räknar alla celler, inte bara de icke-tomma cellerna. Count är en skrivskyddad egenskap, precis som du kan förvänta dig. Följande sats får åtkomst till ett intervalls Count-egenskap och visar resultatet (9) i en meddelanderuta:
MsgBox Range("A1:C3").Count
Excel VBA: Kolumn- och radegenskaperna
Kolumnegenskapen returnerar kolumnnumret för ett encellsintervall. Dess sidekick, egenskapen Row, returnerar radnumret för ett encellsintervall. Båda är skrivskyddade egenskaper. Till exempel visar följande sats 6 eftersom cell F3 finns i den sjätte kolumnen:
MsgBox Sheets("Sheet1"). Range("F3"). Kolumn
Nästa uttryck visar 3 eftersom cell F3 är på tredje raden:
MsgBox Sheets("Sheet1").Range("F3").Rad
Om Excel VBA Range-objektet består av mer än en cell, returnerar egenskapen Column kolumnnumret för den första kolumnen i intervallet, och egenskapen Row returnerar radnumret för den första raden i intervallet.
Blanda inte ihop egenskaperna Kolumn och Rad med egenskaperna Kolumner och Rader. Egenskaperna Kolumn och Rad returnerar ett enda värde. Egenskaperna Kolumner och Rader, å andra sidan, returnerar ett Range-objekt. Vilken skillnad ett "s" gör.
Excel VBA: Adressegenskapen
Address, en skrivskyddad egenskap, visar celladressen för ett Range-objekt som en absolut referens (ett dollartecken före kolumnbokstaven och före radnumret). Följande uttalande visar meddelanderutan nedan:
MsgBox Range(Cells(1, 1), Cells(5, 5)).Adress

Den här meddelanderutan visar Address-egenskapen för ett 5-av-5-intervall.
Excel VBA: HasFormula-egenskapen
Egenskapen HasFormula (som är skrivskyddad) returnerar True om encellsintervallet innehåller en formel. Den returnerar False om cellen innehåller något annat än en formel (eller är tom). Om intervallet består av mer än en cell returnerar VBA True endast om alla celler i intervallet innehåller en formel eller False om alla celler i intervallet inte har en formel. Egenskapen returnerar Null om intervallet innehåller en blandning av formler och icke-formler. Null är ett slags ingenmansland: svaret är varken sant eller falskt, och vilken cell som helst i intervallet kan ha en formel eller inte.
Du måste vara försiktig när du arbetar med egenskaper som kan returnera Null. Mer specifikt är den enda datatypen som kan hantera Null Variant.
Anta till exempel att cell A1 innehåller ett värde och cell A2 innehåller en formel. Följande satser genererar ett fel eftersom intervallet inte består av alla formler eller alla icke-formler:
Dim FormulaTest As Boolean
FormulaTest = Range("A1:A2").HasFormula
Den booleska datatypen kan endast hantera True eller False. Null gör att Excel klagar och visar ett felmeddelande. För att åtgärda denna typ av situation är det bästa du kan göra att se till att FormulaTest-variabeln deklareras som en variant snarare än som en boolesk. Följande exempel använder VBA:s praktiska TypeName-funktion (tillsammans med en If-Then-Else-konstruktion) för att bestämma datatypen för FormulaTest-variabeln. Om intervallet har en blandning av formler och icke-formler visar meddelanderutan Blandat! Annars visas True eller False .
Sub CheckForFormulas()
Dim formelTest som variant
FormulaTest = Range("A1:A2").HasFormula
Om TypeName(FormulaTest) = "Null" Då
MsgBox "Blandat!"
Annan
MsgBox FormulaTest
Avsluta om
Avsluta Sub
Excel VBA: Egenskapen Font
En egenskap kan returnera ett objekt. Egenskapen Font för ett Excel VBA Range-objekt är ett annat exempel på det konceptet i arbete. Egenskapen Font returnerar ett Font-objekt.
Ett Font-objekt har, som du kan förvänta dig, många tillgängliga egenskaper. För att ändra någon aspekt av ett intervalls teckensnitt måste du först komma åt intervallets Font-objekt och sedan manipulera egenskaperna för det objektet. Detta kan vara förvirrande, men det här exemplet kanske hjälper.
Följande sats använder egenskapen Font för Range-objektet för att returnera ett Font-objekt. Då sätts egenskapen Bold för Font-objektet till True. På vanlig engelska gör detta uttalande att cellen visas i fetstil:
Range("A1"). Font.Bold = True
Sanningen är att du egentligen inte behöver veta att du arbetar med ett speciellt Font-objekt som finns i ett Excel VBA Range-objekt. Så länge du använder rätt syntax fungerar det bra. Att spela in dina handlingar med makroinspelaren berättar ofta allt du behöver veta om rätt syntax.
Excel VBA: Inredningsfastigheten
Här är ytterligare ett exempel på en egenskap som returnerar ett objekt. Ett Range-objekts Interior-egenskap returnerar ett Interior-objekt (konstigt namn, men det är så det heter). Den här typen av objektreferens fungerar på samma sätt som egenskapen Font.
Till exempel ändrar följande sats egenskapen Color för Interiör-objektet som finns i Range-objektet:
Range("A1"). Interiör. Färg = 8421504
Med andra ord ändrar detta uttalande cellens bakgrund till mellangrå. Vad är det? Du visste inte att 8421504 är mellangrå? För några insikter i Excels underbara färgvärld, se det närliggande sidofältet "En snabb och smutsig färgprimer."
Excel VBA: Formelegenskapen
Formelegenskapen representerar formeln i en cell. Detta är en läs-skriv-egenskap, så du kan komma åt den för att antingen se formeln i en cell eller infoga en formel i en cell. Till exempel anger följande sats en SUM-formel i cell A13:
Range("A13"). Formel = "=SUMMA(A1:A12)"
Lägg märke till att formeln är en textsträng och är omgiven av citattecken. Lägg också märke till att formeln börjar med ett likhetstecken, som alla formler gör.
Om själva formeln innehåller citattecken blir det lite knepigt. Säg att du vill infoga den här formeln genom att använda VBA:
=SUMMA(A1:A12)&" Butiker"
Den här formeln visar ett värde följt av ordet Butiker . För att göra denna formel acceptabel måste du ersätta varje citattecken i formeln med två citattecken. Annars blir VBA förvirrad och hävdar att det finns ett syntaxfel (eftersom det finns!). Så här är ett påstående som anger en formel som innehåller citattecken:
Range("A13").Formel = "=SUM(A1:A12)&"" Lagrar"""
Förresten, du kan komma åt en cells formelegenskap även om cellen inte har en formel. Om en cell inte har någon formel, returnerar Formula-egenskapen samma som dess Value-egenskap.
Om du behöver veta om en cell har en formel, använd egenskapen HasFormula.
Var medveten om att VBA "talar" amerikansk engelska. Det betyder att för att sätta en formel i en cell måste du använda den amerikanska syntaxen. Om du använder en icke-engelsk version av Excel, läs på egenskapen FormulaLocal i hjälpsystemet.
Excel VBA: Egenskapen NumberFormat
NumberFormat-egenskapen representerar nummerformatet (uttryckt som en textsträng) för Range-objektet. Detta är en läs-skriv-egenskap, så din VBA-kod kan antingen undersöka nummerformatet eller ändra det. Följande påstående ändrar talformatet för kolumn A till en procentsats med två decimaler:
Kolumner("A:A").NumberFormat = "0,00%"
Följ dessa steg för att se en lista över andra nummerformat (bättre än, slå på makroinspelaren medan du gör detta):
Aktivera ett kalkylblad.
Tryck på Ctrl+1 för att komma åt dialogrutan Formatera celler.
Klicka på fliken Nummer.
Välj kategorin Anpassad för att visa och tillämpa några ytterligare nummerformatsträngar.