Sök…


Anmärkningar

Tilldelningen av strängbokstäver i VBA begränsas av begränsningarna för IDE och kodsidan för den aktuella användarens språkinställningar. Exemplen ovan visar specialfallen från rymda strängar, speciella, icke-utskrivbara strängar och långa stränglitteraler.

När du tilldelar strängbokstäver som innehåller tecken som är specifika för en viss kodsida, kan du behöva ta hänsyn till internationaliseringsproblem genom att tilldela en sträng från en separat resursfil för unicode.

Rymmer "karaktären

VBA-syntax kräver att en strängbokstav visas i " markeringar, så när din sträng måste innehålla citattecken måste du fly / bero på " karaktären med en extra " så att VBA förstår att du tänker att "" ska vara tolkas som en " sträng.

'The following 2 lines produce the same output
Debug.Print "The man said, ""Never use air-quotes"""
Debug.Print "The man said, " & """" & "Never use air-quotes" & """"

'Output:
'The man said, "Never use air-quotes"
'The man said, "Never use air-quotes"

Tilldela långa strängbokstäver

VBA-redigeraren tillåter endast 1023 tecken per rad, men vanligtvis är det bara de första 100-150 tecknen som är synliga utan att bläddra. Om du behöver tilldela långa strängbokstäver men du vill hålla din kod läsbar måste du använda linjefortsättning och sammanlänkning för att tilldela din sträng.

Debug.Print "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
            "Integer hendrerit maximus arcu, ut elementum odio varius " & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."
'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

VBA låter dig använda ett begränsat antal linjefortsättningar (det faktiska antalet varierar med längden på varje rad i fortsättningsblocket), så om du har väldigt långa strängar måste du tilldela och tilldela med sammanlänkning .

Dim loremIpsum As String

'Assign the first part of the string
loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
              "Integer hendrerit maximus arcu, ut elementum odio varius "
'Re-assign with the previous value AND the next section of the string
loremIpsum = loremIpsum & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."

Debug.Print loremIpsum

'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

Använda VBA-strängkonstanter

VBA definierar ett antal strängkonstanter för specialtecken som:

  • vbCr: Carriage-Return 'Samma som "\ r" på språk i C-stil.
  • vbLf: Line-Feed 'Samma som "\ n" i C-stilspråk.
  • vbCrLf: Carriage-Return & Line-Feed (en ny linje i Windows)
  • vbTab: Tabulatortecken
  • vbNullString: en tom sträng, som ""

Du kan använda dessa konstanter med sammankoppling och andra strängfunktioner för att bygga strängbokstäver med specialtecken.

Debug.Print "Hello " & vbCrLf & "World"
'Output:
'Hello
'World

Debug.Print vbTab & "Hello" & vbTab & "World"
'Output:
'    Hello    World

Dim EmptyString As String
EmptyString = vbNullString
Debug.Print EmptyString = ""
'Output:
'True

Att använda vbNullString anses vara bättre praxis än motsvarande värde på "" grund av skillnader i hur koden sammanställs. Strängar nås via en pekare till ett tilldelat minneområde, och VBA-kompilatorn är smart nog att använda en nollpekare för att representera vbNullString . Det bokstavliga "" tilldelas minne som om det var en strängtypad variant, vilket gör användningen av konstanten mycket effektivare:

Debug.Print StrPtr(vbNullString)    'Prints 0.
Debug.Print StrPtr("")              'Prints a memory address.


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow