【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
配列
Split関数
・Split(元の文字列、区切り文字)
・元の文字列を区切り文字で区切って配列で返す
・「配列型」は無いので、Variant型で定義する
※ Split・・・裂く、分割する
Variant・・・可変の
UBound関数
・UBound(配列)
・配列の上限を返す
なので、要素(データ)が3つの場合「2」を返す
・下限は必ず 0(ゼロ)
上限は不明(数えられない)な時もあるのでその場合に使える
※ UBound・・・境界
Uは Upperのことかな?
下限を返す LBound というのもある、こっちは Lower?
********************************************************
Sub F_Procedure()
Dim A As Variant '配列を操作できるように定義する
Dim i As Long
Range("A1") = "Shirt:Cap:Shoes"
A = Split(Range("A1"), ":")
'コロンで区切られた文字列を分割して、配列に入れる
For i = 0 to UBound(A) '0から配列の個数分繰り返す
Msgbox A(i)
Next i
End Sub
Range("A1") = Split("Shirt:Cap:Shoes", ":")
とやってみても Range("A1") には "Shirt" しか入力されませんでした。
「Split関数は配列を返す」の意味が分かりました。
Split関数は複数の結果がでるので、
その分の受け入れる箱が必要ってことですね。
ちなみに、VBA ではなく、Excel の機能の「区切り位置」
をマクロの記録をしてみるとこんな感じでした。
Selection.TextToColumns Destination:=Range("L2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
赤字の所で
「コロンで区切って、3つのセルに入力する」って感じでしょうか。
「セルが3つ必要」って判断は内部で計算しているのかな?
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/