Strängvariabel typ
Strängdatatypen är en av de vanligaste datatyperna i VBA. Det lagrar "strängar" av text.
För att deklarera en variabel String -variabel använder du Dim Statement (förkortning för Dimension):
1 | Dim strName som sträng |
För att tilldela ett värde till en variabel använder du likhetstecknet:
1 | strName = "Fred Smith" |
Att sätta in detta i ett förfarande ser ut så här:
12345678 | Sub strExample ()'deklarera strängenDim strName som sträng'fylla i strängenstrName = "Fred Smith"'visa meddelanderutanMsgBox strnameAvsluta Sub |
Om du kör koden ovan visas följande meddelanderuta.
Fixerad strängvariabel
Det finns faktiskt två typer av strängvariabler - fast och variabel.
Strängvariabeln "variabel" (visas i föregående exempel) gör att strängen kan ha valfri längd. Detta är vanligast.
Den "fasta" strängvariabeln definierar strängens storlek. En fast sträng kan rymma upp till 65 400 tecken.
1 | Dim strName som sträng *20 |
När du definierar en fast variabel låses antalet tecken i variabeln på plats, även om du använder färre tecken.
Lägg märke till mellanslag i grafiken nedan - variabeln har platshållare för resten av tecknen i strängen eftersom "Fred Smith" är mindre än 20 tecken.
Men om du har deklarerat en sträng utan att ange längden, kommer strängen bara att innehålla så många tecken som skickas till den.
Deklarera strängvariabel på modul eller global nivå
I föregående exempel deklarerade du strängvariabeln inom ett förfarande. Variabler som deklareras med ett förfarande kan endast användas inom det förfarandet.
Istället kan du deklarera strängvariabler på modul- eller global nivå.
Modulenivå
Modulenivå variabler deklareras högst upp i kodmodulerna med Dämpa påstående.
Dessa variabler kan användas med alla procedurer i den kodmodulen.
Global nivå
Global nivå variabler deklareras också högst upp i kodmodulerna. Men istället för att använda Dämpa uttalande använder du offentlig uttalande för att indikera att strängvariabeln är tillgänglig för användning i hela ditt VBA -projekt.
1 | Public strName som sträng |
Om du deklarerade strängvariabeln på en modulnivå och använde i en annan modul skulle ett fel uppstå.
Men om du använder det offentliga nyckelordet för att deklarera strängvariabeln skulle felet inte uppstå och proceduren skulle fungera perfekt.
Konvertera värden lagrade som sträng
Det kan finnas en tid då du har värden i Excel som lagras som text - till exempel kan du ha importerat en CSV -fil som kan ha tagit in text istället för siffror.
Observera att värdet i A1 är vänsterjusterat, vilket indikerar ett textvärde.
Du kan använda en VBA -funktion kan användas för att konvertera dessa nummer till text
12345678 | Sub ConvertValue ()'fylla i strängenstrQty = Range ("A1")'fyll i dubbeln med strängendblQty = strQty'fyll i intervallet med numretOmråde ("A1") = dblQtyAvsluta Sub |
När du har kört koden flyttas numret till höger, vilket indikerar att det nu är lagrat som ett nummer.
Detta är särskilt användbart när du går igenom ett stort antal celler.
123456789101112131415 | Sub ConvertValue ()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'räkna raderna som ska konverterasrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'gå igenom cellerna och konvertera var och en till ett talFör i = 0 Till rw - 1'fylla i strängenstrQty = Range ("A1"). Offset (i, 0)'fyll i dubbeln med strängendblQty = strQty'fyll i intervallet med numretOmråde ("A1"). Offset (i, 0) = dblQtyNästa iAvsluta Sub |
Resultatet blir att alla celler sedan omvandlas till tal
Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!
Konverteringssträng lagrad som värden
På samma sätt kan det finnas värden som du behöver konvertera från en sträng till ett värde - till exempel om du behöver en inledande nolla på ett telefonnummer.
123456789101112131415 | Sub ConvertString ()Dim strPhone As String, dblPhone As DoubleDim rw As Integer, i As Integer'räkna raderna som ska konverterasrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'gå igenom cellerna och konvertera var och en till ett talFör i = 0 Till rw - 1'fylla i strängendblPhone = Range ("A1"). Offset (i, 0)'fyll i dubbeln med strängenstrPhone = "'0" & dblPhone'fyll i intervallet med numretOmråde ("A1"). Offset (i, 0) = strphoneNästa iAvsluta Sub |
Observera att du måste börja textsträngen med en apostrof (‘), före nollan för att be Excel att ange värdet som sträng.