MS Access Tips/Sample and VBA and Blog customize etc...

縦書きで半角数字だけ横書き表示したい

OKWave の「その他(データベース)」カテゴリーの「人気Q&Aランキング」に下記のような質問がありました。

Accessで縦書きの場合の数字の表示 | その他(データベース)のQ&A-OKWave

図を見れば分かると思いますが、住所などの縦書きで半角数字だけ横書きにしたいということです。MS Word では「縦中横」という機能として実装されていますが、Accessではそのような機能はないですね。上記の質問でもAccessでは無理ということで閉じています。

VBAを使えば比較的簡単に実現できますので紹介します。

レポートで縦中横

難易度: 難易度: 2

標準モジュール

標準モジュールを新規作成します。下記のコードを記述します。

2016/01/22 コード修正

このモジュールを「名前を付けて保存」で mdlBinary という名前で保存します。仕様として、半角のみ横書きになるようにするために、Option Compare Binary 宣言をしてバイナリーモード(全角と半角を区別する)のテキスト比較にしています。

他に、バイナリーモードにしたいプロシージャがあればここに記述するようにするといいでしょう。

レポート

フィールド名は、「住所」とします。テキストボックスを配置してコントロールソースを下記のように設定します。

=AddressVConv([住所])

テキストボックスのサイズは縦長にし、幅は半角文字4文字分ぐらいにします。「縦書き」プロパティは「いいえ」のままにしておきます。「文字配置」は「中央」にします。

レポートで縦中横のデザインビュー

これで最初の画像のように半角数字は縦中横に表示されます。住所などのデータを想定していますので、1行のみ対応です。ハイフンは縦棒に変換して表示します。

拍手する

3 Comments

ogawa says..."二桁以上の数字の検出"

大変参考になるサイトを作成されていることに敬意を表します。
当方Access2010で様々なアプリケーションを作成していて、この度長3封筒に宛名を縦書きで印刷するレポート作成で参考にさせていただきました。
掲載されているコードでは二桁以上の数字の検出が上手く行かないようなので、下記のように修正をしたところ思った通りの結果になりましたので、手前味噌ながらご報告させていただく次第です。

If C & Mid$(S, i + 1, 1) Like "[0-9]" Then

If IsNumeric(C & Mid$(S, i + 1, 1)) Then

2016.01.19 16:33 | URL | #Ils6bhsA [edit]
hatena says..."re:二桁以上の数字の検出"

> 掲載されているコードでは二桁以上の数字の検出が上手く行かないようなので、下記のように修正をしたところ思った通りの結果になりましたので、手前味噌ながらご報告させていただく次第です。

ご指摘ありがとうございます。

> If C & Mid$(S, i + 1, 1) Like "[0-9]" Then
> ↓
> If IsNumeric(C & Mid$(S, i + 1, 1)) Then

これだと、全角数字の場合も横並びになってしまいますので、
全角数字は縦にしたい場合は、

If C & Mid$(S, i + 1, 1) Like "[0-9][0-9]" Then

とするといいですね。

2016.01.22 13:16 | URL | #5uE6dEgY [edit]
says..."承認待ちコメント"

このコメントは管理者の承認待ちです

2016.02.02 11:28 | | # [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/386-e7db6d96
該当の記事は見つかりませんでした。