マウスカーソルの操作範囲の制御と解除

マウスカーソルの操作範囲を制御、解除する。

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