投稿日 | : 2003/01/25(Sat) 14:39 |
投稿者 | : takk |
Eメール | : |
URL | : |
タイトル | : Re: 動的配列を返すプロシージャについて |
手元にVB5.0がないんですが……。
下記のソースで試してみてください。
秋風さんのソースではエラーが多く、また汎用性に欠けるので手直ししました。
ちなみに戻り値をString()にするとエラー出る、とのことですがVB6.0では問題なく動いています。
もしダメそうならnanashiさんの意見通り、戻り値をVariant型で指定してみてください。
'使う時はこんな感じで
strTimeList() = split(TimeList, ",")
'ファンクション
Private Function Split(ByVal Data As String, Optional ByRef Demiliter As String = " ") As String()
Dim lCnt&, lPos&, lLen As Long
Dim sBuff() As String
'文字列が指定されていない時は要素なしの配列を返す
If Len(Data) = 0 Then
Split = Array()
Exit Function
End If
'デミリタの長さを取得
lLen = Len(Demiliter)
Do
'次のデミリタの位置を取得
lPos = InStr(Data, Demiliter)
'配列に追加
If lPos > 0 Then
ReDim Preserve sBuff(lCnt)
sBuff(lCnt) = Left$(Data, lPos - 1)
Data = Mid$(Data, lPos + lLen)
lCnt = lCnt + 1
Else
ReDim Preserve sBuff(lCnt)
sBuff(lCnt) = Data
Data = vbNullString
End If
Loop While Len(Data) > 0
'結果を返す
Split = sBuff
End Function