コントロール毎のマウスポインターを設定する(MousePointer,MouseIconプロパティ)

ユーザーフォームに設置したコントロール上にマウスポインターがあるときに、マウスポインターをどのように表示するのかを設定するには MousePointer プロパティを使用します。また MouseIcon プロパティを使用することで自分で用意した画像を使用することもできます。ここでは Excel のユーザーフォームで MousePointer プロパティを使ってコントロール毎のマウスポインターを設定する方法、および MouseIcon プロパティを使ってマウスの画像を設定する方法について解説します。

(Last modified: )

マウスポインターを設定する(MousePointer)

ユーザーフォームに設置したコントロールの上にマウスポインターが来たときに、マウスポインターをどのように表示するのかを設定するには MousePointer プロパティを使用します。デフォルトの値は「0 - fmMousePointerDefault」となっており標準ポインターが使用されます。

設定可能な値には次の種類があります。

画像定数説明
fmMousePointerDefault0標準ポインター。オブジェクト毎に異なる
fmMousePointerArrow1矢印
fmMousePointerCross2十字ポインター
fmMousePointerIBeam3I ビーム
fmMousePointerSizeNESW6右上と左下を指し示す両端矢印
fmMousePointerSizeNS7上と下を指し示す両端矢印
fmMousePointerSizeNWSE8左上と右下を指し示す両端矢印
fmMousePointerSizeWE9左と右を指し示す両端矢印
fmMousePointerUpArrow10上向き矢印
fmMousePointerHourglass11砂時計
fmMousePointerNoDrop12ドラッグされているオブジェクトに重なった "不可" シンボル (円と対角線)。 無効なドロップターゲットを示します
fmMousePointerAppStarting13矢印と砂時計
fmMousePointerHelp14矢印と疑問符
fmMousePointerSizeAll15サイズ変更カーソル (上下左右を指し示す矢印)
fmMousePointerCustom99MouseIcon プロパティで指定されたアイコンを使用します

デフォルトの値は fmMousePointerDefault で、どの画像になるのかは対象のオブジェクトによって異なります。またあとで解説する MouseIcon プロパティを使って独自の画像を使用する場合は、 MousePointer プロパティには fmMousePointerCustom を設定する必要があります。

コントロールに対するマウスポインターの設定を変更するには MousePointer プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。

マウスポインターを設定する(MousePointer)(1)

今回は fmMousePointerCross を選択してみました。設定したラベルにマウスポインターを合わせると「十字ポインター」になります。

マウスポインターを設定する(MousePointer)(2)

ユーザーフォームを表示してみます。ラベル以外のところでは「矢印」になっているマウスポインターが、設定したラベルに合わせると「十字ポインター」になるのが確認できます。

マウスポインターを設定する(MousePointer)(3)

マウスポインターを設定する(MousePointer)(4)

このように MousePointer プロパティの値を変更することで、コントロールにマウスポインターを乗せたときにどのようにマウスポインターを表示するのかを設定することができます。

オリジナルのマウスポインターの画像を設定する(MouseIcon)

あらかじめ用意されたマウスポインターの画像から選択するのではなく、オリジナルのポインター画像を用意して設定することもできます。その場合はまず MousePointer プロパティの値として fmMousePointerCustom を設定したあと、 MouseIcon プロパティにオリジナルのマウスポインターの画像を指定します。

それではラベルに対してオリジナルのマウスポインターの画像を設定してみます。 MousePointer プロパティの値として fmMousePointerCustom を選択してください。

オリジナルのマウスポインターの画像を設定する(MouseIcon)(1)

次に MouseIcon プロパティの値のところに表示されている「...」をクリックしてください。

オリジナルのマウスポインターの画像を設定する(MouseIcon)(2)

ファイル選択ダイアログが表示されるので、マウスポインターに設定する画像ファイルを選択し「開く」をクリックしてください。(画像ファイルは *.jpg ファイルでは設定できなかったので *.cur 形式のファイルを用意して選択しました)。

オリジナルのマウスポインターの画像を設定する(MouseIcon)(3)

オリジナルのマウスポインターの設定が完了しました。

オリジナルのマウスポインターの画像を設定する(MouseIcon)(4)

ユーザーフォームを表示し、ラベルにマウスポインター合わせると、マウスポインターの画像が設定したオリジナルの画像になるのが確認できます。

オリジナルのマウスポインターの画像を設定する(MouseIcon)(5)

このように 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イベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でMousePointerプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でMousePointerプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    Label1.MousePointer = fmMousePointerHelp
    TextBox1.MousePointer = fmMousePointerCustom
    TextBox1.MouseIcon = LoadPicture("c:\img\mouse.cur")
End Sub

VBAのプログラムの中でMousePointerプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でMousePointerプロパティを設定する(4)

ユーザーフォームを表示し、ラベルおよびテキストボックスにマウスポインターを合わせてみると、それぞれのコントロールで設定した形状のマウスポインターが表示されました。

VBAのプログラムの中でMousePointerプロパティを設定する(5)

VBAのプログラムの中でMousePointerプロパティを設定する(6)

このように VBA のプログラムの中で MousePointer プロパティおよび MouseIcon プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで MousePointer プロパティを使ってコントロール毎のマウスポインターを設定する方法、および MouseIcon プロパティを使ってマウスの画像を設定する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。