今回はSplitしたと同時に値を取得する方法を備忘録も兼ねて紹介したいと思います。
Splitについてざっくり紹介
通常、Splitを使用すると指定の文字列を特定の文字で区切った配列が返ってきます。
Sub test_Split()
Dim ary_target_str() As String
Dim target_str As String
Dim split_str As String
target_str = "2023/12/30"
'配列ary_target_strに変数target_strを「/」で分割したものを格納する
ary_target_str = Split(target_str, "/")
'ary_target_str(0)を取得
split_str = ary_target_str(0)
'実行結果:「2023」
MsgBox split_str
End Sub
この書き方だと一旦配列に格納した後に要素番号を指定して取得する必要がある為、配列をここ以外で使わない場合は若干手間がかかってしまいます。
'一旦配列を変数に格納する必要がある
ary_target_str = Split(target_str, "/")
私自身も特定の文字列を抜き出す為だけに配列を定義しないといけないことに「なんだかなぁ」と思っていました。
同時に値を取得する方法
「じゃあどうやって同じタイミングで値を取得するのか」というと、併せて要素番号を指定することで取得可能です。
例えば今回の例で「2023」を取得したい場合はSplit(target_str, "/")(0)
のようにSplit()
の後ろに(0)
を指定してあげる感じです。
Sub test_Split()
Dim target_str As String
Dim split_str As String
target_str = "2023/12/30"
'変数target_strを「/」で分割&その0番目の要素を取得
split_str = Split(target_str, "/")(0)
'実行結果:「2023」
MsgBox split_str
End Sub
この方法であれば1行で分割&取得することが出来ますし、配列を格納する為の変数を用意する必要もなくなります。
勿論、抜き出した後もその配列を使用するのであれば別途変数に格納するべきだと思いますが、特定の文字列を抜き出したらその配列はもう使わない、みたいな状況であればこの書き方でもいいかと思います。
'1と2の実行結果は同じ
'1
ary_target_str = Split(target_str, "/")
split_str = ary_target_str(0)
'2
split_str = Split(target_str, "/")(0)
まとめ
今回はSplitしたと同時に値を取得する方法を備忘録も兼ねて紹介しました。
同時に値を取得する場合はSplit
の後ろに欲しい要素番号を指定してあげるようにしましょう!
split_str = Split(target_str, "/")(0)
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント