サンプル集  >  Excel VBA  >  文字列分割
Select Case
2010/04/26

入力された値を , (カンマ)で分割し表示します。

◆環境
OS Windows XP Professional Version 2002 Service Pack 2
Excel 2003 (11.8169.8172) SP3
VBA 6.5

文字列の分割には Split関数を使います。

splitTest.xls
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
Sub splitTest()

    Dim buf As String
    Dim msg As String
    Dim tmp As Variant

    buf = InputBox("入力して下さい。")

    tmp = split(buf, ",")

    msg = "要素:" & LBound(tmp) _
             & "〜" & UBound(tmp) _
             & vbCrLf

    Dim i As Integer
    For i = LBound(tmp) To UBound(tmp)
        msg = msg & i & ":[" & tmp(i) & "]" & vbCrLf
    Next i

    msg = "入力=[" & buf & "]" & vbCrLf _
        & msg

    MsgBox msg

End Sub

マクロの実行で起動します。

まずは「a,b,c」と入力してみます。

要素は 0 〜 2 の 3つになりました。 VB も添え字が 0 から始まるようになったんですね。。。

「a,,c」と入力してみます。

要素は 0 〜 2 の 3つで、2つめの要素が空になりました。

「,,」と入力してみます。

要素は 0 〜 2 の 3つで、全ての要素が空になりました。 値が空でも、ちゃんと要素としては認識されるようです。

Option Base 1 を追記すると配列の添え字が 1から始まるようにできます。
Split の戻り配列にも適用されるのでしょうか?

splitTest.xls
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
Option Base 1
Sub splitTest()

    Dim buf As String
    Dim msg As String
    Dim tmp As Variant

    buf = InputBox("入力して下さい。")

    tmp = split(buf, ",")

    msg = "要素:" & LBound(tmp) _
             & "〜" & UBound(tmp) _
             & vbCrLf

    Dim i As Integer
    For i = LBound(tmp) To UBound(tmp)
        msg = msg & i & ":[" & tmp(i) & "]" & vbCrLf
    Next i

    msg = "入力=[" & buf & "]" & vbCrLf _
        & msg _
        & "tmp(1)=[" & tmp(1) & "]"

    MsgBox msg

End Sub

実行し、「a,b,c」と入力してみます。

要素は 0 〜 2 のままでした。1 番目の要素を表示しようとして tmp(1) を表示したところ、2番目の値である 2 が表示されました。

Spritの戻り配列には Option Base は適用されないようです。

▲ PageTop  ■ Home


Copyright (C) 2015 ymlib.com