VB6.0から登場した split 関数。当然 VB5.0 にはない。悔しいので実装してさしあげましょう。負けてられるか!! 貧乏人の底力をここに示してやる!! VB6.0 を買えなかったからってなめるなよ!!
'----------------------------------------------------------------------- ' 関数名 : SplitData ' 機能 : 指定のデリミタ単位で文字列を分割する ' 引数 : (in) Expression … 対象文字列 ' (in) Delimiter … デリミタ ' (out) StrData … 分割後文字列 ' (in) IsBinaryCompare … デリミタの比較モード ' True :vbBinaryCompare バイナリ比較 ' False:vbTextCompare テキスト比較 ' 戻り値 : 要素数 ' 備考 :CompareMode に vbTextCompare、vbBinaryCompare 以外の ' 値が設定されていた場合は vbTextCompare になるよ!! '----------------------------------------------------------------------- Public Function SplitData(ByVal Expression As String, _ ByVal Delimiter As String, _ ByRef StrData() As String, _ Optional ByVal IsBinaryCompare As Boolean = True) As Long '対象文字列、デリミタが未指定の場合は、配列の先頭に空文字を設定して終了 If Expression = "" Or Delimiter = "" Then ReDim StrData(0) As String StrData(0) = Expression SplitData = UBound(StrData) + 1 Exit Function End If Dim SearchPos As Long Dim FoundPos As Long Dim CompareMode As Long '比較モード設定 CompareMode = IIf(IsBinaryCompare, vbBinaryCompare, vbTextCompare) '検索位置初期化 SearchPos = 1 '最後尾にデリミタをくっつける Expression = Expression & Delimiter Do 'デリミタ検索 FoundPos = InStr(SearchPos, Expression, Delimiter, CompareMode) 'デリミタが見つからなくなったら終了 If FoundPos = 0 Then Exit Do '領域確保、文字列取得&格納 ReDim Preserve StrData(SplitData) As String StrData(SplitData) = Mid$(Expression, SearchPos, FoundPos - SearchPos) '次回検索位置算出 SearchPos = FoundPos + Len(Delimiter) 'データ数カウント SplitData = SplitData + 1 Loop End Function |