Public Function DoMouseWheel(frm As Form, lngCount As Long) As Integer
On Error GoTo Err_Handler
'Purpose: Make the MouseWheel scroll in Form View in Access 2007 and later.
' This code lets Access 2007 behave like older versions.
'Return: 1 if moved forward a record, -1 if moved back a record, 0 if not moved.
'Author: Allen Browne, February 2007.
'Usage: In the MouseWheel event procedure of the form:
' Call DoMouseWheel(Me, Count)
Dim strMsg As String
'Run this only in Access 2007 and later, and only in Form view.
If (Val(SysCmd(acSysCmdAccessVer)) >= 12#) And (frm.CurrentView = 1) And (lngCount <> 0&) Then
'Save any edits before moving record.
RunCommand acCmdSaveRecord
'Move back a record if Count is negative, otherwise forward.
RunCommand Iif(lngCount < 0&, acCmdRecordsGoToPrevious, acCmdRecordsGoToNext)
DoMouseWheel = Sgn(lngCount)
End If
Exit_Handler:
Exit Function
Err_Handler:
Select Case Err.Number
Case 2046& 'Can't move before first, after last, etc.
Beep
Case 3314&, 2101&, 2115& 'Can't save the current record.
strMsg = "Cannot scroll to another record, as this one can't be saved."
MsgBox strMsg, vbInformation, "Cannot scroll"
Case Else
strMsg = "Error " & Err.Number & ": " & Err.Description
MsgBox strMsg, vbInformation, "Cannot scroll"
End Select
Resume Exit_Handler
End Function
联系客服