VBA Tipp: Im Endlosformular zu den letzten x Zeilen springen

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte beim Öffnen eines Endlosformulars ohne zu scrollen gleich ans Ende der Liste springen, um die letzten x Datensätze sehen zu können und gleich zum neuen Datensatz gehen zu können.

Lösung

Das geht mit der folgenden Prozedur, die in einem globalen Modul hinterlegt wird:

Public Sub ZeilenZurück(frm As Form, anzahlzeilen As Integer)
 ' geht anzzeilen vom letzten Datensatz rückwärts
 ' nur für Endlosformulare geeignet
 
 Dim rs As DAO.Recordset
 Set rs = frm.RecordsetClone
 
 If Not rs.BOF And Not rs.EOF Then
 rs.MoveLast
   If rs.RecordCount > anzahlzeilen Then
   rs.Move (-anzahlzeilen)
   frm.Bookmark = rs.Bookmark
   End If
 End If
 
 'Speicher freigeben
 rs.Close
 Set rs = Nothing
 
End Sub

Aufruf

Der Aufruf der Prozedur erfolgt im "Form_Open"- oder "Form_Load"-Ereignis des Endlosformulars.

Der erste Übergabeparameter ist der Verweis auf das Endlosformular, der zweite Parameter gibt die Anzahl der Zeilen+1 an, die angezeigt werden sollen. Im folgenden Beispiel werden die letzten 10+1 Zeilen angezeigt:

Private Sub Form_Load()
 
 Call ZeilenZurück(Me, 10)
 
End Sub