Variabel type streng
Stringdatatypen er en av de vanligste datatypene i VBA. Den lagrer "strenger" med tekst.
For å deklarere en variabel String -variabel, bruker du Dim Statement (forkortelse for Dimension):
1 | Dim strName som streng |
For å tilordne en verdi til en variabel, bruker du likhetstegnet:
1 | strName = "Fred Smith" |
Å sette dette inn i en prosedyre ser slik ut:
12345678 | Sub strExample ()'erklærer strengenDim strName som streng'fyll ut strengenstrName = "Fred Smith"'vis meldingsboksenMsgBox strnameSlutt Sub |
Hvis du kjører koden ovenfor, vises følgende meldingsboks.
Variabel med fast streng
Det er faktisk 2 typer strengvariabler - faste og variable.
"Variabel" strengvariabel (vist i forrige eksempel) gjør at strengen din kan være hvilken som helst lengde. Dette er mest vanlig.
Den "faste" strengvariabelen definerer størrelsen på strengen. En fast streng kan inneholde opptil 65 400 tegn.
1 | Dim strName som streng *20 |
Når du definerer en fast variabel, låses antallet tegn i variabelen på plass, selv om du bruker færre tegn.
Legg merke til mellomrommene i grafikken nedenfor - variabelen har plassholdere for resten av tegnene i strengen ettersom ‘Fred Smith’ er mindre enn 20 tegn.
Imidlertid, hvis du har erklært en streng uten å angi lengden, vil strengen bare inneholde så mange tegn som den sendes til den.
Deklarere strengvariabel på modul eller globalt nivå
I forrige eksempel erklærte du strengvariabelen innenfor en prosedyre. Variabler deklarert med en prosedyre kan bare brukes innenfor denne prosedyren.
I stedet kan du deklarere strengvariabler på modul- eller globalt nivå.
Modulenivå
Modulenivå variabler deklareres øverst i kodemodulene med Dim uttalelse.
Disse variablene kan brukes med alle prosedyrer i den kodemodulen.
Globalt nivå
Globalt nivå variabler deklareres også øverst i kodemodulene. Imidlertid, i stedet for å bruke Dim uttalelse, bruker du Offentlig setning for å indikere at strengvariabelen er tilgjengelig for bruk i hele VBA -prosjektet.
1 | Offentlig strName som streng |
Hvis du erklærte strengvariabelen på modulnivå og brukte i en annen modul, ville det oppstå en feil.
Men hvis du bruker det offentlige søkeordet til å deklarere strengvariabelen, vil feilen ikke oppstå og prosedyren vil kjøre perfekt.
Konverter verdier lagret som streng
Det kan være en tid da du har verdier i Excel som er lagret som tekst - for eksempel kan du ha importert en CSV -fil som kan ha brakt inn tekst i stedet for tall.
Vær oppmerksom på at verdien i A1 er venstrejustert, noe som indikerer en tekstverdi.
Du kan bruke en VBA -funksjon kan brukes til å konvertere disse tallene til tekst
12345678 | Sub ConvertValue ()'fyll ut strengenstrQty = Range ("A1")'fyll ut det dobbelte med strengendblQty = strQty'fyll ut området med talletOmråde ("A1") = dblQtySlutt Sub |
Når du kjører koden, flyttes nummeret til høyre, noe som angir at det nå er lagret som et tall.
Dette er spesielt nyttig når du går gjennom et stort utvalg av celler.
123456789101112131415 | Sub ConvertValue ()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'teller radene som skal konverteresrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'gå gjennom cellene og konverter hver til et tallFor i = 0 Til rw - 1'fyll ut strengenstrQty = Range ("A1"). Offset (i, 0)'fyll ut det dobbelte med strengendblQty = strQty'fyll ut området med talletOmråde ("A1"). Offset (i, 0) = dblQtyNeste jegSlutt Sub |
Resultatet blir at alle cellene deretter blir konvertert til tall
Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!
Konverter streng som er lagret som verdier
På samme måte kan det være verdier du må konvertere fra en streng til en verdi - for eksempel hvis du trenger en ledende null på et telefonnummer.
123456789101112131415 | Sub ConvertString ()Dim strPhone As String, dblPhone As DoubleDim rw As Integer, i As Integer'teller radene som skal konverteresrw = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'gå gjennom cellene og konverter hver til et tallFor i = 0 Til rw - 1'fyll ut strengendblPhone = Range ("A1"). Offset (i, 0)'fyll ut det dobbelte med strengenstrPhone = "'0" & dblPhone'fyll ut området med talletOmråde ("A1"). Offset (i, 0) = strphoneNeste jegSlutt Sub |
Vær oppmerksom på at du må begynne tekststrengen med en apostrof (‘), før null for å be Excel om å angi verdien som streng.