導入:なぜString関数が必要なのか
実務でマクロを作成していると、特定の記号を並べて罫線風の区切り線を作ったり、桁数を揃えるためにゼロ埋め(パディング)を行ったりする場面によく遭遇します。
「-」を20個入力したいとき、手作業で打ち込みますか?あるいは「”-” & “-” & …」と書きますか?
String関数を使えば、たった一行で、しかもコードの可読性を損なわずに目的の文字列を生成できます。VBAの文字列操作における「効率化」の第一歩として、ぜひマスターしましょう。
基礎知識:String関数とは
String関数は、指定した文字を「指定した回数だけ」繰り返して文字列を作成する関数です。
構文:String(Number, Character)
・Number:繰り返したい回数(整数)
・Character:繰り返したい文字(1文字の文字列、または文字コード)
注意点として、Characterに2文字以上の文字列を指定すると、その「先頭の1文字」だけが繰り返されます。ここが初心者が陥りやすいポイントです。
実装:サンプルコード
まずは、基本的なString関数の使い方と、実務でよくある「先頭の文字だけ繰り返される」挙動を確認してみましょう。
Sub Sample_StringFunction()
‘ 区切り線を20個作成
Dim separator As String
separator = String(20, “-“)
‘ メッセージボックスで表示
MsgBox “作業開始” & vbCrLf & separator & vbCrLf & “処理完了”
‘ 【重要】2文字以上の文字列を渡すとどうなるか?
‘ 「ABC」という文字列を5回繰り返そうとしても…
Dim result As String
result = String(5, “ABC”)
‘ 結果は「AAAAA」となります
Debug.Print “String関数の結果: ” & result
End Sub
応用・注意点:2文字以上の文字列を繰り返したいときは?
String関数の弱点は「2文字以上の文字列(例:「ABC」×3回=「ABCABCABC」)を繰り返せないこと」です。
これを行いたい場合、VBAではWorksheetFunction.Reptを使用するのが最もスマートです。
WorksheetFunction.Rept(“繰り返したい文字列”, 回数)
実務では、「IDを特定の長さまでゼロ埋めしたい」「複数の文字からなるパターンを繰り返してヘッダーを作りたい」といった場面で非常に重宝します。
【現場で役立つポイント】
・コードの簡略化:改行コード(Chr(13)など)を複数並べる際、String(5, 13)と書けば、コードがスッキリしてメンテナンス性が向上します。
・デバッグの視覚化:ログ出力時に「——————–」のように区切り線を入れることで、イミディエイトウィンドウ上の情報の視認性が格段に上がります。
String関数は地味な機能ですが、工夫次第でコードの「見た目」と「保守性」を大きく改善できます。ぜひ今日から活用してみてください。
