コントロール毎のマウスポインターを設定する(MousePointer,MouseIconプロパティ)
ユーザーフォームに設置したコントロール上にマウスポインターがあるときに、マウスポインターをどのように表示するのかを設定するには MousePointer プロパティを使用します。また MouseIcon プロパティを使用することで自分で用意した画像を使用することもできます。ここでは Excel のユーザーフォームで MousePointer プロパティを使ってコントロール毎のマウスポインターを設定する方法、および MouseIcon プロパティを使ってマウスの画像を設定する方法について解説します。
(Last modified: )
マウスポインターを設定する(MousePointer)
ユーザーフォームに設置したコントロールの上にマウスポインターが来たときに、マウスポインターをどのように表示するのかを設定するには MousePointer
プロパティを使用します。デフォルトの値は「0 - fmMousePointerDefault」となっており標準ポインターが使用されます。
設定可能な値には次の種類があります。
画像 | 定数 | 値 | 説明 |
---|---|---|---|
fmMousePointerDefault | 0 | 標準ポインター。オブジェクト毎に異なる | |
fmMousePointerArrow | 1 | 矢印 | |
fmMousePointerCross | 2 | 十字ポインター | |
fmMousePointerIBeam | 3 | I ビーム | |
fmMousePointerSizeNESW | 6 | 右上と左下を指し示す両端矢印 | |
fmMousePointerSizeNS | 7 | 上と下を指し示す両端矢印 | |
fmMousePointerSizeNWSE | 8 | 左上と右下を指し示す両端矢印 | |
fmMousePointerSizeWE | 9 | 左と右を指し示す両端矢印 | |
fmMousePointerUpArrow | 10 | 上向き矢印 | |
fmMousePointerHourglass | 11 | 砂時計 | |
fmMousePointerNoDrop | 12 | ドラッグされているオブジェクトに重なった "不可" シンボル (円と対角線)。 無効なドロップターゲットを示します | |
fmMousePointerAppStarting | 13 | 矢印と砂時計 | |
fmMousePointerHelp | 14 | 矢印と疑問符 | |
fmMousePointerSizeAll | 15 | サイズ変更カーソル (上下左右を指し示す矢印) | |
fmMousePointerCustom | 99 | MouseIcon プロパティで指定されたアイコンを使用します |
デフォルトの値は fmMousePointerDefault
で、どの画像になるのかは対象のオブジェクトによって異なります。またあとで解説する MouseIcon
プロパティを使って独自の画像を使用する場合は、 MousePointer
プロパティには fmMousePointerCustom
を設定する必要があります。
コントロールに対するマウスポインターの設定を変更するには MousePointer
プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。
今回は fmMousePointerCross
を選択してみました。設定したラベルにマウスポインターを合わせると「十字ポインター」になります。
ユーザーフォームを表示してみます。ラベル以外のところでは「矢印」になっているマウスポインターが、設定したラベルに合わせると「十字ポインター」になるのが確認できます。
このように MousePointer
プロパティの値を変更することで、コントロールにマウスポインターを乗せたときにどのようにマウスポインターを表示するのかを設定することができます。
オリジナルのマウスポインターの画像を設定する(MouseIcon)
あらかじめ用意されたマウスポインターの画像から選択するのではなく、オリジナルのポインター画像を用意して設定することもできます。その場合はまず MousePointer
プロパティの値として fmMousePointerCustom
を設定したあと、 MouseIcon
プロパティにオリジナルのマウスポインターの画像を指定します。
それではラベルに対してオリジナルのマウスポインターの画像を設定してみます。 MousePointer
プロパティの値として fmMousePointerCustom
を選択してください。
次に MouseIcon
プロパティの値のところに表示されている「...」をクリックしてください。
ファイル選択ダイアログが表示されるので、マウスポインターに設定する画像ファイルを選択し「開く」をクリックしてください。(画像ファイルは *.jpg ファイルでは設定できなかったので *.cur 形式のファイルを用意して選択しました)。
オリジナルのマウスポインターの設定が完了しました。
ユーザーフォームを表示し、ラベルにマウスポインター合わせると、マウスポインターの画像が設定したオリジナルの画像になるのが確認できます。
このように MousePointer
プロパティ、および MouseIcon
プロパティの値を変更することで、コントロールにマウスポインターを乗せたときにオリジナルの画像をマウスポインターとして表示するように設定することができます。
VBAのプログラムの中でMousePointerプロパティを設定する
プロパティウィンドウを使って MousePointer
プロパティの値を変更する代わりに、 VBA のコードを記述して MousePointer
プロパティの値を変更することもできます。
プログラムの中で MousePointer
プロパティを設定する場合は次の書式を使用します。
オブジェクト.MousePointer [= fmMousePointer ]
設定可能な値はこのページの最初の方で紹介しています。
またマウスポインターとしてオリジナルの画像を設定する場合は、 MousePointer
プロパティに fmMousePointerCustom
を設定した上で、 MouseIcon
プロパティに次のように画像を設定します。
オブジェクト.MousePointer = fmMousePointerCustom オブジェクト.MouseIcon = LoadPicture(pathname)
対象のオブジェクトの MouseIcon
プロパティに対して LoadPicture
関数を使って表示する画像を設定します。 LoadPicture
関数の引数には画像ファイルへのフルパスを文字列で指定してください。
オブジェクト.MousePointer = fmMousePointerCustom オブジェクト.MouseIcon = LoadPicture("c:\img\arrow.cur")
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で MousePointer
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。
Private Sub UserForm_Initialize() Label1.MousePointer = fmMousePointerHelp TextBox1.MousePointer = fmMousePointerCustom TextBox1.MouseIcon = LoadPicture("c:\img\mouse.cur") End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームを表示し、ラベルおよびテキストボックスにマウスポインターを合わせてみると、それぞれのコントロールで設定した形状のマウスポインターが表示されました。
このように VBA のプログラムの中で MousePointer
プロパティおよび MouseIcon
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで MousePointer プロパティを使ってコントロール毎のマウスポインターを設定する方法、および MouseIcon プロパティを使ってマウスの画像を設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。