|
'=========================================================================================
'
' Split関数(各要素ごとに区切られた文字列から1次元配列を作成し、返します。)
'
'-----------------------------------------------------------------------------------------
'指定項目 説明
'expression 必ず指定します。文字列と区切り文字を含んだ文字列式を指定します。
' 引数 expression が長さ 0 の文字列 ("") である場合、Split関数は、要素も
' データもない空の配列を返します。
'delimiter 省略可能です。文字列の区切りを識別する文字を指定します。
' 引数 delimiter を省略すると、区切り文字にスペース (" ") が使用されます。
' 引数 delimiter が長さ 0 の文字列 ("") である場合は、引数 expression 全体の
' 文字列を含む単一の要素の配列を返します。
'limit 省略可能です。返す配列の要素数を指定します。-1 を指定すると、すべての文字列を
' 含んだ配列を返します。
'compare 省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を
' 指定します。設定する値については、次の「設定値」を参照してください。
'
'引数 compare の設定値は次のとおりです。
'
'定数 値 説明
'VbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較を行います。
'vbBinaryCompare 0 バイナリ モードで比較を行います。
'vbTextCompare 1 テキスト モードで比較を行います。
'=========================================================================================
Public Function Split _
(Expression As String, Optional Delimiter, Optional ByVal Limit As Long = -1, _
Optional Compare As VbCompareMethod = vbBinaryCompare)
'-- 変数の設定 --
Dim Result() As String
Dim Pos As Long
Dim Start As Long
Dim DelimStr As String
'-- 戻り値初期化 --
Split = Array() '空の配列を生成します。
'-- 引数確認 --
If Expression = "" Then Exit Function
If Limit = 0 Then Exit Function
'-- 初期設定 --
DelimStr = IIf(IsMissing(Delimiter), " ", Delimiter)
ReDim Result(0)
Start = 1
Pos = IIf(DelimStr = "", 0, InStr(Start, Expression, DelimStr, Compare))
'-- 配列要素の設定 --
Do Until Pos = 0
If UBound(Result) = Limit - 1 Then Exit Do
Result(UBound(Result)) = Mid$(Expression, Start, Pos - Start)
ReDim Preserve Result(UBound(Result) + 1)
Start = Pos + Len(DelimStr)
Pos = InStr(Start, Expression, DelimStr, Compare)
Loop
'-- 配列最終要素の設定 --
Result(UBound(Result)) = Mid$(Expression, Start)
Split = Result
Erase Result
End Function
|
|