VBA -strengdatatype (Dim Variable)

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.

wave wave wave wave wave