2010年11月11日

4.メニュー画面のボタンデザイン

 [ UserForm* ]の上に配置される[ CommandButton* ]の多くは、[ Captionプロパティ ]に、 どのような処理を行うのか、例えば[ 終了 ]や[ 実行 ]などを表示してあります。
 [ UserFormsコントロール ]と[ CommandButtonコントロール ]は、デフォルトで同じ配色になっていますが、 コマンドボタンコントロールは、盛り上がった装飾が成されているため、陰影によってボタンである事が分ります。 デフォルトのままだと無機質な感じがしますので、他のコントロールと組み合わせて、コマンドボタンをデザインしてみましょう。
  •  ★  複数のコントロールを使って、コントロールをデザインする


     [ メニュー画面 ]は、[ UserFormsオブジェクト ]の上に、[ MultiPageコントロール ]が乗っていて、 その上に[ Labelコントロール ]、そして[ CommandButtonコントロール ]が乗るという構成になっています。 [ UserFormsオブジェクト ] と[ Labelコントロール ]の[ BackColorプロパティ ]に紺色を設定し、 [ Labelコントロール ] の[ SpecialEffectプロパティ ]に、引数[ fmSpecialEffectSunken ](くぼんでいるような装飾)を設定しています。
    ExcelVBAマクロ
    図:コマンドボタンを他のコントロールと組み合わせて装飾した

 メニュー画面など複数のコマンドボタンがある画面で、特定のコマンドボタンをユーザーに知らせたいときは、 コマンドボタンを乗せているラベルコントロールの色を紺から他の色へ変更する方法も良いでしょう。 また、デザインモード中はコントロールの[ Pictureプロパティ ]、マクロの実行時には[ LoadPicture関数 ]を使って、 ビットマップを設定することもできます。

番外4.

 イメージコントロール以外にも、その表面に画像を持つことができるコントロールがあります。 コマンドボタンコントロールやラベルコントロールもその一つですが、デザイン時に[ Pictureプロパティ ]で設定してしまうと、 そのコントロールを含んだVBAマクロブックは、サイズが大きくなってしまいます。
 ワークシートやコントロールオブジェクトで画像を扱う場合、VBAマクロの実行中に[ LoadPicture関数 ]を使って、 必要に応じて読み込むようにした方が、ブックのサイズも小さくてすみ、メモリーの消費も抑えられます。
  •  ★  リストボックスコントロールの選択項目を使う


     このコードは、リストボックス[ Lst_商品群 ]のリスト項目に表示された商品名をクリックすると、 その商品の画像を[ Dir関数 ]で探し、無ければ別のマクロブックにある画像を作成するマクロを実行し、 商品の画像が有れば、その画像をイメージコントロール[ Img_001 ]に表示します。

  •  ★  複数の選択肢があるメッセージボックスを表示し、処理を分岐する


     ユーザーとの小さい対話ですが、判断を促すメッセージボックスを表示して、ユーザーが押した[ Yes/Noボタン ]で 得られた[ MsgBox関数 ]の戻り値によって、他のマクロブックにある画像を作成するプロシージャを[ Runメソッド ]で実行しています。

posted by くきお at 11:11| Comment(0) | ExcelVBAマクロ | このブログの読者になる | 更新情報をチェックする