魚山田のブログ -5ページ目

魚山田のブログ

ブログの説明を入力します。

Sub Macro1()

Dim myConvArray As Variant
Dim loop_X As Long

Dim myTemp As String

myTemp = "おは/よう/ござ" & Chr(10) & "います"


myConvArray = myfunct_SplitArray(myTemp)

MsgBox UBound(myConvArray)

For loop_X = 0 To UBound(myConvArray)

MsgBox myConvArray(loop_X)

Next loop_X


End Sub


Function myfunct_SplitArray(argCHARACTER As String) As Variant


'文字列に特定の文字が含まれていたら、その文字ごとに文字列値を分割し、配列変数に代入する


Const MAX_SPLITS As Integer = 255


Dim loop_X As Long
Dim loop_Y As Long

Dim myWord As String
Dim myChar As String '1文字づつ代入
Dim mySplitSets(MAX_SPLITS) As String '仮配列
Dim mySplitResults() As String '確定配列
Dim myCounter As Long '分割文字カウンター

myWord = argCHARACTER '対象文字列
myCounter = 0 '配列カウンター

For loop_X = 1 To Len(myWord)

Select Case Asc(StrConv(Mid(myWord, loop_X, 1), vbNarrow))

Case 10, 13, 47 '改行、またはスラッシュ

myCounter = myCounter + 1 '配列カウンター繰り上げ

myChar = "" '文字は無視

If myCounter = MAX_SPLITS Then '上限

GoTo FUNCT_SPI_ARR_RES

End If

Case Else

myChar = Mid(myWord, loop_X, 1) '文字を取得

End Select

mySplitSets(myCounter) = mySplitSets(myCounter) & myChar '取得した文字を、配列ごとの取得済み文字列と結合

Next loop_X


FUNCT_SPI_ARR_RES:


ReDim mySplitResults(myCounter) '確定配列の最大数を宣言

For loop_Y = 0 To myCounter '仮配列から確定配列へ、データを移植

mySplitResults(loop_Y) = mySplitSets(loop_Y)

Next loop_Y

Erase mySplitSets '仮配列初期化


myfunct_SplitArray = mySplitResults() '配列全体を返す


End Function