| ユーザーフォームに,マウスがのったら一回り大きくなるボタンをつくる。ボタンそのものは,Imageコントロールにボタンのイメージを表示しているだけで,ImageコントロールのMouseMoveイベントでボタンを大きくしている。 ただ,VBAにはVB.netで言うところのMouseLeaveがないため,マウスがImageコントロールから離れたことが検出できない。そこで,擬似的にUserFormのMouseMoveをImageコントロールのMouseLeaveとしている。そのため,マウスをUserFormの外に素早く動かすと,UserFormのMouseMoveイベントが発生せず,ボタンが小さくならないときがある。その場合にはUserForm上にマウスを移動すると,ボタンが小さくなる。
|
下のコードを含むマクロ有効のExcelファイル
「オートシェイプを図(拡張メタファイル)に変換する」のコードを流用している。VBEでクラスモジュールを挿入し,「EffectiveButton」と名前をつけて,
下のコードをクラスモジュールにコピー貼り付けをする。 上のクラスを次のように標準モジュールやシートモジュールから使用する。
CreateEmfFromRange関数については,「オートシェイプを図(拡張メタファイル)に変換する」を参照。