C言語風なんちゃって複合書式(VBA)
VBAでは、数値などの結果を説明とともに出力する場合、文字列や変数を&でつなげて書くことになります。例えば、「変数1の値は3.14、変数2の値は2.72であった。」という文字列を作る場合、
'VBA
dim var1, var2, str
var1 = 3.14
var2 = 2.72
str = "変数1の値は" & var1 & "、変数2の値は" & var2 & "であった。"
MsgBox str
'==>「変数1の値は3.14、変数2の値は2.72であった。」
などとしなければなりません。""や&が繰り返し出てくるのでわかりにくいです。
C言語やC#言語ではtring.Formatメソッドなどで複合書式が使えるので
//C#
int var1 = 3.14, var2 = 2.72;
string form = "変数1の値は{0}、変数2の値は{1}であった。";
string s = string.Format(form, var1, var2);
Console.WriteLine(s);
//==>「変数1の値は3.14、変数2の値は2.72であった。」
というように、少しわかりやすくなります。
そこでVBAでも類似の方法が使えるように関数を作りました。
Public Function strForm(bstr As Variant, ParamArray estr() As Variant) As Variant
Dim ret As Variant
ret = bstr
Dim i As Long
For i = 0 To UBound(estr)
ret = Replace(ret, "{" & i & "}", estr(i))
Next
strForm = ret
End Function
これをつかうと
'VBA
dim var1, var2, str, sform
var1 = 3.14
var2 = 2.72
sform = "変数1の値は{0}、変数2の値は{1}であった。"
str = strForm(sform, var1, var2)
MsgBox str
'==>「変数1
の値は3.14、変数2の値は2.72であった。」
とできて、ややこしさは少しはマシになります。
以上です。
応援してやろうということで、お気持ちをいただければ嬉しいです。もっと勉強したり、調べたりする糧にしたいと思います。