#781 | コントロールの可視に応じて下のコントロールを上に詰めるには? | レポート、VBA | |
レポートの上のコントロールの印刷有無を切り替えることは簡単にできます。プロパティシートであれば「可視」プロパティの”はい/いいえ”、VBAであれば「Visible」プロパティの”True/False”を変更するだけです。 ただしその場合、デザイン上そのコントロールよりも下に配置されているコントロールの上下位置は変わることはありません。下図の例では、「数量合計」と「数量×単価合計」の可視/非可視をそれぞれ切り替えていますが、その下にある「*******」の位置はまったく変わっていないことが分かります。 そのようなとき、上にあるコントロールの可視状態に応じて、下にあるコントロールを自動的に上詰めにする方法です。上図の例であれば「数量合計」と「数量×単価合計」のいずれかあるいは両方が非可視になったとき、その分「*******」を上方向に移動し、表示されているコントロールのすぐ下に「*******」が出力されるようにします。 ポイントとしては、可視プロパティを変えるのではなく、「印刷時縮小」プロパティを利用します。このプロパティが”はい”になっているとき、もしテキストボックスに出力されるデータが空のとき、自動的に縮小し、結果的に非表示の状態になるという性質を利用します。 なおこのような処理は、VBAを使って各コントロールの「上位置」プロパティを動的に切り替えることでも実現できます。ただ上詰めすべきコントロールがたくさんある場合、コードの記述も多くなりますしそのプロパティ値を細かく計算する必要があります。ここではそのようなコードや計算なしで実現できる方法を紹介します。 それには、次のような手順で各コントロールをデザインします。
実行例: 下図では、2つのテキストボックスの可視に追従して、それより下の「*******」のラベルが上詰めされていることが分かります。 ■Flg()の返り値が「1」のとき ■Flg()の返り値が「2」のとき ■Flg()の返り値が「3」のとき |
|||
|
Copyright © T'sWare All rights reserved |