和風スパゲティのレシピ

日本語でコーディングするExcelVBA

同じ文字を繰り返した文字列を作る - String関数

「あああ」や「AAA」など同じ文字を繰り返した文字列を作りたいときは、
String関数を利用することができます。

' 基本構文
作成したい文字列 = String(繰り返し回数, 繰り返す文字)

' サンプル
作成文字列 = String(3, "a") ' ← "aaa"が入ります。
作成文字列 = String(3, "あ") ' ← "あああ"が入ります。
作成文字列 = String(3, "1") ' ← 111が入ります。
作成文字列 = String(3, 1) ' ← !!111ではなく空の文字列""になってしまいます!!

ストレートな構文なので特に迷うことはないと思います。

数値を渡すと動かない点だけご注意ください。

複数の文字を繰り返したい場合

String関数の第2引数(繰り返す文字)に複数文字からなる文字列をいれると、
先頭の文字だけを繰り返した文字列を作ります。

作成文字列 = String(3, "ab") ' ← "aaa"が入ります。"ababab"ではない。

 
複数文字を繰り返したい場合はString関数ではなく、
WorksheetFunctionのRept関数を使用してください。

作成文字列 = WorksheetFunction.Rept("ab", 3) ' ← "ababab"が入ります。

地味に引数の順番が逆な点に注意してください。


ちなみに小ネタですが、「改行を指定回数繰り返す」場合に、

連続改行 = String(3, vbCrLf)

と書いているコードを見かけました。


一見問題なさそうですし、実際問題にはならなかったのかもしれませんが、
この時作られる文字列は「vbCr × 3」になります。

一見「vbCrLf × 3」が作られるように見えますが、
vbCrLfはvbCrとvbLfの組み合わせという扱いのため、
String関数を使うと先頭のvbCrだけが繰り返されます。


といってもvbCr/vbLf/vbCrLfどれでも改行されることが多いので、
これでも問題なく3回改行されたのかもしれませんね。

一応気を付けておいてください。