VBA
Deklarowanie i przypisywanie ciągów
Szukaj…
Uwagi
Ciągi znaków są typem odniesienia i są kluczowe dla większości zadań programistycznych. Ciągom przypisywany jest tekst, nawet jeśli tekst jest numeryczny. Ciągi mogą mieć długość zerową lub dowolną długość do 2 GB. Nowoczesne wersje VBA przechowują ciągi wewnętrznie za pomocą tablicy bajtów wielobajtowych zestawów znaków (alternatywa dla Unicode).
Zadeklaruj stałą ciągu
Const appName As String = "The App For That"
Zadeklaruj zmienną łańcuchową o zmiennej szerokości
Dim surname As String 'surname can accept strings of variable length
surname = "Smith"
surname = "Johnson"
Zadeklaruj i przypisz ciąg o stałej szerokości
'Declare and assign a 1-character fixed-width string
Dim middleInitial As String * 1 'middleInitial must be 1 character in length
middleInitial = "M"
'Declare and assign a 2-character fixed-width string `stateCode`,
'must be 2 characters in length
Dim stateCode As String * 2
stateCode = "TX"
Zadeklaruj i przypisz tablicę ciągów
'Declare, dimension and assign a string array with 3 elements
Dim departments(2) As String
departments(0) = "Engineering"
departments(1) = "Finance"
departments(2) = "Marketing"
'Declare an undimensioned string array and then dynamically assign with
'the results of a function that returns a string array
Dim stateNames() As String
stateNames = VBA.Strings.Split("Texas;California;New York", ";")
'Declare, dimension and assign a fixed-width string array
Dim stateCodes(2) As String * 2
stateCodes(0) = "TX"
stateCodes(1) = "CA"
stateCodes(2) = "NY"
Przypisz określone znaki w ciągu za pomocą instrukcji Mid
VBA oferuje funkcję Mid dla powrocie podciągi ciągu znaków, ale oferuje również oświadczenie Mid który może być używany do przypisania podciągi lub poszczególnych znaków withing ciąg.
Funkcja Mid
zwykle pojawia się po prawej stronie instrukcji przypisania lub w stanie, ale instrukcja Mid
zwykle pojawia się po lewej stronie instrukcji przypisania.
Dim surname As String
surname = "Smith"
'Use the Mid statement to change the 3rd character in a string
Mid(surname, 3, 1) = "y"
Debug.Print surname
'Output:
'Smyth
Uwaga: Jeśli chcesz przypisać poszczególne bajty w ciągu zamiast pojedynczych znaków w ciągu (patrz uwagi poniżej dotyczące zestawu znaków MidB
), można MidB
instrukcji MidB
. W tym przypadku drugim argumentem instrukcji MidB
jest 1-bajtowa pozycja bajtu, w której rozpocznie się zamiana, więc wierszem równoważnym do powyższego przykładu będzie MidB(surname, 5, 2) = "y"
.
Przypisanie do iz tablicy bajtów
Ciągi można przypisywać bezpośrednio do tablic bajtów i odwrotnie. Pamiętaj, że ciągi są przechowywane w wielobajtowym zestawie znaków (patrz uwagi poniżej), więc tylko co drugi indeks wynikowej tablicy będzie częścią znaku mieszczącą się w zakresie ASCII.
Dim bytes() As Byte
Dim example As String
example = "Testing."
bytes = example 'Direct assignment.
'Loop through the characters. Step 2 is used due to wide encoding.
Dim i As Long
For i = LBound(bytes) To UBound(bytes) Step 2
Debug.Print Chr$(bytes(i)) 'Prints T, e, s, t, i, n, g, .
Next
Dim reverted As String
reverted = bytes 'Direct assignment.
Debug.Print reverted 'Prints "Testing."