【VBAリファレンス|実務向け】[実務で役立つ] 指定した文字を繰り返すString関数とREPT関数の使い分け

スポンサーリンク

導入:なぜ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関数は地味な機能ですが、工夫次第でコードの「見た目」と「保守性」を大きく改善できます。ぜひ今日から活用してみてください。

タイトルとURLをコピーしました