|
Variantにすればできると思います。
Sub test2()
Dim get_res As Variant
Dim i As Integer
get_res = testf2("aaa,bb,cccc,ddd")
For i = LBound(get_res) To UBound(get_res)
MsgBox get_res(i)
Next i
MsgBox UBound(get_res)
End Sub
Function testf2(str As String) As Variant
Dim stp As Integer 'ストップ位置
Dim stt As Integer 'スタート位置
Dim cnt As Integer '配列の要素数
Dim res_str() As String '結果保存用配列
stt = 0
cnt = 0
stp = 1
Do Until stp = 0
ReDim Preserve res_str(cnt)
stp = InStr(stt + 1, str, ",") 'カンマ位置の取得
If stp <> 0 Then 'カンマが検出された場合の処理
res_str(cnt) = Mid(str, stt + 1, stp - stt - 1)
cnt = cnt + 1
stt = stp
Else 'カンマが検出されかった場合の処理
res_str(cnt) = Mid(str, stt + 1, Len(str) - stt)
End If
Loop
testf2 = res_str
End Function
'この処理だけなら関数Splitで出来そうですけど。
Sub Test3()
Dim get_res As Variant
Dim i As Integer
get_res = Split("aaa,bb,cccc,ddd", ",")
For i = LBound(get_res) To UBound(get_res)
MsgBox get_res(i)
Next i
MsgBox UBound(get_res)
End Sub
|
|