Attribute VB_Name = "Module1" '■ マクロ500連発<第2段> ' ' 区切り文字のある文字列から配列を作成する ' ' Copyright(C) 2000 Sunago ' 'Option Compare Binary '第4引数(compare)を設定しない場合 Option Explicit '/* Split関数を使用した例(EXCEL2000用) */ Sub Macro1() Dim strcsv As String Dim arycsv As Variant Dim sOutput As String Dim i As Integer '区切り文字を含む文字列を設定する strcsv = "00,01,02,03,04,05,06,07,08,09,10" '区切り文字列から配列を作成する '使用方法: ' Split(expression[, delimiter[, limit[, compare]]]) ' expression 区切り文字を含む文字列 ' delimiter 区切り文字 ' limit 省略する(-1) ' compare 文字コードでの比較(vbBinaryCompare) arycsv = Split(strcsv, ",", , vbBinaryCompare) '結果の出力 sOutput = strcsv & vbCr For i = 0 To UBound(arycsv) sOutput = sOutput & i & " := " & arycsv(i) & vbCr Next MsgBox sOutput, , "Macro1" End Sub '/* Split関数が使用できない例(EXCEL97,98用) */ Sub Macro1_97() Dim strcsv As String Dim arycsv() As String Dim strtmp As String Dim p As Integer Dim sOutput As String Dim i As Integer '区切り文字を含む文字列を設定する strcsv = "00,01,02,03,04,05,06,07,08,09,10" '区切り文字列から配列を作成する p = InStr(strcsv, ",") '区切り文字の位置を取得する strtmp = strcsv Do Until p = 0 '動的配列の要素を確保する ReDim Preserve arycsv(i) '区切り文字-1までの文字列を切り出す arycsv(i) = Left(strtmp, p - 1) i = i + 1 ' strtmp = Right(strtmp, Len(strtmp) - p) '残りの文字列から区切り文字の位置を取得する p = InStr(strtmp, ",") Loop If strtmp <> "" Then ReDim Preserve arycsv(i) arycsv(i) = strtmp End If '結果の出力 sOutput = strcsv & vbCr For i = 0 To UBound(arycsv) sOutput = sOutput & i & " := " & arycsv(i) & vbCr Next MsgBox sOutput, , "Macro1_97" End Sub