VBA文字列を文字配列に分割するにはどうすればよいですか?
試しSplit(my_string, "")
ましたが、これはうまくいきませんでした。
最も安全で簡単なのはループすることです。
Dim buff() As String
ReDim buff(Len(my_string) - 1)
For i = 1 To Len(my_string)
buff(i - 1) = Mid$(my_string, i, 1)
Next
ansi 文字を使用することが保証されている場合のみ使用できます。
Dim buff() As String
buff = Split(StrConv(my_string, vbUnicode), Chr$(0))
ReDim Preserve buff(UBound(buff) - 1)
文字列をバイト配列に割り当てることができます (逆も可能です)。結果は文字ごとに 2 つの数値になるため、Xmas は {88,0,109,0,97,0,115,0} を含むバイト配列に変換する
か、StrConv を使用できます。
Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)
これにより {88,109,97,115} が得られますが、その場合、バイト配列を文字列に割り当てることはできません。
Chr() 関数を使用して、バイト配列内の数値を文字に戻すことができます。
VBA でそれを行う別の方法を次に示します。
Function ConvertToArray(ByVal value As String)
value = StrConv(value, vbUnicode)
ConvertToArray = Split(Left(value, Len(value) - 1), vbNullChar)
End Function
Sub example()
Dim originalString As String
originalString = "hi there"
Dim myArray() As String
myArray = ConvertToArray(originalString)
End Sub
問題は、vb でこれを行うためのメソッドが組み込まれていないことです (または、少なくとも誰も見つけることができませんでした)。ただし、スペースで文字列を分割するものがあるので、文字列を再構築してスペースに追加するだけです....
Private Function characterArray(ByVal my_string As String) As String()
'create a temporary string to store a new string of the same characters with spaces
Dim tempString As String = ""
'cycle through the characters and rebuild my_string as a string with spaces
'and assign the result to tempString.
For Each c In my_string
tempString &= c & " "
Next
'return return tempString as a character array.
Return tempString.Split()
End Function