マウスカーソルの操作範囲を制御、解除する。
VBAでマウスカーソルの操作範囲を指定の範囲内しかマウスカーソルを動かせないように、また制御を解除します。
範囲の制御と制御解除にはClipCursor関数を利用して取得します。
動かせる範囲の指定には構造体で上下左右の位置を指定します。
ここで記載されている制御の方法だと制御の解除は下記のコードでもできますが、アクティブなウィンドウを切り替えたときにも解除されます。
●操作範囲の制御
#If VBA7 And Win64 Then
Declare PtrSafe Function ClipCursor Lib "user32" (lpRect As Any) As Long
#Else
Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
#End If
'構造体
Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'******************************************************************
' マウスの操作範囲制御
'******************************************************************
Sub CursolRange()
'範囲設定
Dim RCursol As Rect 'RECT構造体
RCursol.Left = 50
RCursol.Top = 100
RCursol.Right = 300
RCursol.Bottom = 300
'操作範囲制御
Dim lRtn As Long
lRtn = ClipCursor(RCursol)
If lRtn = 0 Then
MsgBox "Error"
End If
End Sub
●操作範囲の制御解除
#If VBA7 And Win64 Then
Declare PtrSafe Function ClipCursor Lib "user32" (lpRect As Any) As Long
#Else
Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
#End If
'******************************************************************
' マウスの操作範囲制御の解除
'******************************************************************
Sub CursolRange_Release()
'操作範囲制御
Dim lRtn As Long
lRtn = ClipCursor(ByVal 0&)
If lRtn = 0 Then
MsgBox "Error"
End If
End Sub


