スペースを使って日付の幅を揃える

f:id:accs2014:20181111033204p:plain:right:w500

 レポートでの表示例です。
 日付(生年月日)の年月日は1桁であったり2桁であったりしますが、書式やコントロールソースの設定を行うことでこのように「02」や「04」といったように2桁表示させ、全体の文字数と幅を揃えることができます。
 そこでですが「02」や「04」といった表示ではなく、「 2」や「 4」といったようにスペースを使った表示を行い、文字数と幅を揃えるにはどうしたらいいでしょうか。
 書式プロパティでの実現は困難ですので、以下ではコントロールソースにより、つまり関数で実現する例を紹介します。


f:id:accs2014:20181111033201p:plain:right:w600

 デザインビューです。
 生年月日を表示しているテキストボックスのコントロールソースを次のようにします。



=Replace(Replace(Format([生年月日],"ggg_ee""年_""mm""月_""dd\日"),"_0","_ "),"_","")

※バックスラッシュは\を表しています。

 補足ですが、まずFormat関数を使って年月日を2桁表示とし、それぞれの数字の頭にアンダースコア(_)を加えます。
 その結果「_0」で始まる文字列がある場合(実際の値が1桁である場合)はこれをReplace関数で「_ 」(アンダースコアとスペース)に置き換えます。
 その結果に対しさらにReplace関数を使いアンダースコアを消去します。

f:id:accs2014:20181111033634p:plain:right:w550

 ところで、フォントは「MS Pゴシック」などのプロポーショナルフォントではなく「MS ゴシック」などの等幅フォントにします。
 こうしないと文字数は揃っても幅が揃わなくなります。


f:id:accs2014:20181111033156p:plain:right:w500

 印刷プレビューです。
 年月日が1桁の場合にはスペースが挿まれ、結果的に全体の幅が揃っています。