ACCESS VBAにてマウスポインターの形状を変更するには
通常の砂時計などは、用意されたプロパティ・メソッドで変更可能
例)
DoCmd.Hourglass True '砂時計ポインターにする
Screen.MousePointer = 9 '左右の矢印にする
Screen.MousePointerに設定できるその他の値
既定値 |
0 |
矢印 |
1 |
I字型 |
3 |
上下の矢印 |
7 |
左右の矢印 |
9 |
砂時計 |
11 |
上記以外の形状に変更したい場合
Win32 APIを使用
General部分にAPI関数を定義(モジュールに書く場合はPublicを使用)
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" _
(ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function SetCursor Lib "user32" _
(ByVal hCursor As Long) As Long
ハンドカーソルの定数を定義
Private Const IDC_HAND = 32649& 'ハンドカーソル
マウスカーソルの戻り値(形状)格納用
Private mCursor As Long
フォーム起動時に、ハンドカーソルを取得
Private Sub Form_Load(Cancel As Integer)
'マウスポインターを手の形にするためのマウスカーソルを取得
mCursor = LoadCursor(0&, IDC_HAND)
End Sub
マウスオーバー時、マウスポインターをハンドカーソルにしたいコントロールの「マウスボタン移動時」イベントに以下の処理を記述
Private Sub Label_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'ラベル上でマウスを手の形にする
Call SetCursor(mCursor)
End Sub
LoadCursorの第2引数の値
APIでの値(定数) |
VBAでの値 |
マウスカーソルの形 |
IDC_APPSTARTING |
32650& |
小さい砂時計付の矢印カーソル |
IDC_ARROW |
32512& |
標準の矢印カーソル |
IDC_CROSS |
32515& |
十字カーソル |
IDC_HAND |
32649& |
ハンドカーソル |
IDC_HELP |
32651& |
疑問符付の矢印カーソル |
IDC_IBEAM |
32513& |
I(縦線)カーソル |
IDC_NO |
32648& |
禁止カーソル |
IDC_SIZEALL |
32646& |
4方向の矢印カーソル |
IDC_SIZENESW |
32643& |
右斜め上の両方向き矢印カーソル |
IDC_SIZENS |
32645& |
上下の両方向き矢印カーソル |
IDC_SIZENWSE |
32642& |
右斜め下の両方向き矢印カーソル |
IDC_SIZEWE |
32644& |
左右の両方向きカーソル |
IDC_UPARROW |
32516& |
上向きの垂直矢印カーソル |
IDC_WAIT |
32514& |
砂時計カーソル |
Win32 APIの定数はVBAではそのまま使用できないので、定数として宣言して使用します。
例)
Public Const IDC_APPSTARTING = 32650&
|