VBA
VBAで文字列内変数展開してみる
VBAは文字列内変数展開ができない。
なので普通は & を使って文字列と変数を連結するのだが、愚直だし、コードも可読性も落ちてしまう。
なんとかならないかと以前関数を作ったのだが、その中で VBScript.RegExp を使っていた。
しばらく経ってマイクロソフトから「VBSを段階的に廃止する」とのアナウンスがあり、これはまずいということで作り直したのがこの関数だ。
使い方はこんな感じ。
第1引数が文字列。
文字列内で変数を展開したい箇所に「{}」と書いておく。
第2引数以降は、文字列内に出現した順で展開させたい変数を与える。
そうすると、変数を展開した文字列が返ってくる。
これだけだ。
変数は何個でも展開できるが、文字列内の変数と実際の変数の数が合わないとおかしなことになる。(エラーチェックはしていない)
ただ、ループ内でこの関数を実行するとかなり遅くなってしまうので、この文字列をVBAでそのまま使える文字列に変換するJavaScriptも作ってみた。
以下フォームの「変換元」に「私の名前は${myname}です。年齢は${age}です。」と入力すれば、「"私の名前は" & myname & "です。年齢は" & age & "です。"」に変換してくれる。
その後「変換後」に表示された文字列をVBAソースにコピー&ペーストすればOKだ。
|