マウス ホイールを使用して Access 2007 または Access 2010 フォームのレコードをスクロールすることはできません

現象

Microsoft Office Access 2007 または Microsoft Access 2010 のフォーム ビューで、マウス ホイールを使用してフォーム内のレコードを移動しようとすると、何も起こりません。 ただし、フォームをデータシート ビューに切り替えるときは、マウス ホイールを使用してレコードを上下に移動できます。

原因

フォーム ビューでのマウス ホイールの動作は、Access 2007 と Access 2010 でユーザーの混乱を減らすために意図的に変更されました。 以前のバージョンの Access では、マウス ホイールでスクロール バーを移動したり、マウス ホイールでレコードを上下に移動したりすることがあります。 マウス ホイールの動作が一貫性があり、スクロール バーのみが移動します。 この動作を変更するプロパティはありません。

回避策

引き続き、Access 2007 および Access 2010 のフォーム ビューでマウス ホイールを使用できます。 これを行うには、データベースを有効にするか、信頼できる場所に移動します。 その後、次の手順に従います。

  1. デザイン ビューでフォームを開きます。

  2. Alt + F11 キーの組み合わせを使用するか、リボンの [ツール] グループで [ コードの表示 ] をクリックして、Microsoft Visual Basic エディター ウィンドウを開きます。

  3. 次のコードをコード ウィンドウに貼り付けます。

    Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
    
    If Not Me.Dirty Then
    
    If (Count < 0) And (Me.CurrentRecord > 1) Then
    
    DoCmd.GoToRecord , , acPrevious 
    
    ElseIf (Count > 0) And (Me.CurrentRecord <= Me.Recordset.RecordCount) Then 
    
    DoCmd.GoToRecord , , acNext
    
    End If
    
    Else
    
    MsgBox "The record has changed. Save the current record before moving to another record."
    
    End If
    
    End Sub
    
  4. フォーム ビューでフォームを保存して開きます。

このコードでは、ユーザーが別のレコードにスクロールする前に変更が加えられたレコードをユーザーに強制的に保存します。 スクロール動作の変更のメイン理由の 1 つは、ユーザーがマウス ホイールを使用してレコードをスクロールし、自動的に変更をレコードに保存することです。