文字列を区切り文字で分割し、各要素を文字列型の1次元配列に格納して返し
ます。引数Delimiterでは区切り文字を指定します。省略時は半角スペース(" ")
が区切り文字となります。長さ0の文字列("")を指定した場合には、引数Expression
で指定した文字列式全体を1つの要素として持つ配列を作成します。また、返す
要素数が決まっている場合には、引数Limitでその要素数を指定します。全ての
要素を取得したい場合には、この引数の指定を省略するか、-1を指定します。
引数Compareでは文字列を比較する方法を示す定数を指定します。使用できる定数
は下の一覧のとおりです。省略時にはOption Compareステートメントの設定を使用
して比較されます。
・引数Compareで指定する比較モードを表す定数一覧(VbCompareMethod)
定数 値 説明
VbUseCompareOption -1 Option Compareステートメントの設定を使用して比較
VbBinaryCompare 0 バイナリ モードの比較
VbTextCompare 1 テキスト モードの比較
VbDatabaseCompare 2 Microsoft Access の場合のみ有効。データベースに
格納されている設定に基づいて比較
構文 Split(Expression, Delimiter, Limit, Compare)
設定項目 内容
Expression 文字と区切り文字を含んだ文字列式を指定 [省略不可]
Delimiter 区切り文字を指定。省略時は半角スペース(" ") [省略可能]
Limit 返す配列の要素数を指定 [省略可能]
Compare 文字列式を比較するときの比較モードを指定 [省略可能]
次のサンプルを見てください。複数のセル範囲がアドレスとして取得された際に
は、それぞれのセル範囲がカンマ(,)で区切られることを利用して、それぞれの
セル範囲を表すアドレスを配列に格納しています。
●サンプル●
Sub SplitSamp1()
Dim myAddress As String
Dim myArray() As String
Dim i As Integer
Dim myMsg As String
'---複数のセル範囲のアドレスを取得
myAddress = Application.InputBox( _
Prompt:="複数範囲を選択してください" & vbCr & "( [Ctrl]キー + 範囲選択 )" _
, Type:=8).Address
Range(myAddress).Select
'---(1)個々の選択範囲のアドレスを配列変数に代入
myArray = Split(myAddress, ",")
'---UBound関数で配列のインデックスの最大値を取得
For i = 0 To UBound(myArray)
myMsg = myMsg & i & "番目の要素 : " & myArray(i) & vbCr
Next i
MsgBox myMsg
End Sub
●解説●
InputBoxステートメントを使用し、ユーザーに複数のセル範囲を選択させています。
実行結果のように、複数のセル範囲のアドレスはカンマで区切られた文字列として取
得されます。
(1)では、Split関数の対象にその文字列を指定し、カンマ(,)を区切り文字として、
個々のセル範囲のアドレスを分割して、配列に格納しています。
●ポイント●
Split関数はExcel2000 VBAの新機能です。Excel97までのVBAで同等の機能を実現し
ようとすれば、InStr関数で区切り文字の位置を検索して、Mid関数で区切り文字には
さまれた文字列を取得する、というような処理を区切り文字の数だけ繰り返す、複雑
なコードを記述する必要がありましたが、Split関数を使えば1行のステートメントで
済みます。活用できる場面はきっとあると思いますので、覚えておいてください。
|