34

VBA文字列を文字配列に分割するにはどうすればよいですか?

試しSplit(my_string, "")ましたが、これはうまくいきませんでした。

4

7 に答える 7

53

最も安全で簡単なのはループすることです。

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)
于 2012-11-02T12:58:39.863 に答える
16

文字列をバイト配列に割り当てることができます (逆も可能です)。結果は文字ごとに 2 つの数値になるため、Xmas は {88,0,109,0,97,0,115,0} を含むバイト配列に変換する
か、StrConv を使用できます。

Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)

これにより {88,109,97,115} が得られますが、その場合、バイト配列を文字列に割り当てることはできません。
Chr() 関数を使用して、バイト配列内の数値を文字に戻すことができます。

于 2012-11-02T14:10:05.730 に答える
10

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
于 2012-11-02T12:58:15.420 に答える
0

問題は、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
于 2015-04-17T04:41:11.667 に答える