1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Problemstellung:

Wie kann ich in der Statuszeile eines Formulars ein Progressbar darstellen?

Fast jeder stand schon mal vor der Situation ein Progressbar darstellen zu wollen.
Jetzt gibt es da einige Lösungen ob nun mit ActiveX-Controls oder anders.
Am einfachsten geht es mit dem SysCmd-Objekt.

Lösung:
Das SysCmd-Objekt hat 3 Methoden dafür.
acSysCmdInitMeter                zur Initialisierung der Progressbar

acSysCmdUpdateMeter        zur Aktualisierung der Progressbar

acSysCmdRemoveMeter      zum Löschen der Progressbar

1. Initialisierung der Pogressbar:

Dim RetVal As Variant
    RetVal = SysCmd(acSysCmdInitMeter, "Statuszeilentext", die Obergrenze)

2. Aktualisierung der Pogressbar:

For n = 1 To 10000000
    RetVal = SysCmd(acSysCmdUpdateMeter, n)
Next n

3. Löschen der Pogressbar:

RetVal = SysCmd(acSysCmdRemoveMeter) 

Hier ein konkretes Beispiel:

Sub Import(sFile As String)
    Dim rsIn As DAO.Recordset, rsOut As DAO.Recordset
    Dim RetVal As Variant, nCount As Long, n As Long
    Dim sInArt As String
    DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, "Material", sFile, True
    Set rsIn = CurrentDb.OpenRecordset("Material")
    Set rsOut = CurrentDb.OpenRecordset("tblArtikel")
    '************************************************************
    'Progressbar initialisieren
    rsIn.MoveLast
    nCount = rsIn.RecordCount
    rsIn.MoveFirst
    RetVal = SysCmd(acSysCmdInitMeter, "Datenimport...", nCount)
    '************************************************************
    Do While Not rsIn.EOF
        sInArt = rsIn!Artikel
        rsOut.FindFirst "Artikel = '" & sInArt & "'"
        If rsOut.NoMatch = True Then
            rsOut.AddNew
            rsOut!Artikel = rsIn!Artikel
            rsOut.Update
        Else
            rsOut.Edit
            rsOut!Bezeichnung = rsIn!Bezeichnung
            rsOut.Update
        End If
        rsIn.MoveNext
        rsOut.MoveFirst
        '************************************************************
        'Progressbar aktualisieren
        n = n + 1
        RetVal = SysCmd(acSysCmdUpdateMeter, n)
        '************************************************************
        CurrentDb.TableDefs.Delete "Material"
    Loop
    rsIn.Close: Set rsIn = Nothing
    rsOut.Close: Set rsOut = Nothing
    '************************************************************
    'Progressbar löschen
    RetVal = SysCmd(acSysCmdRemoveMeter)
    MsgBox "Datenimport beendet!", vbInformation + vbOKOnly, "Erfolg"
    '************************************************************
End Sub

Ergebnis:

 

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png3.png1.png8.png2.png
Heute55
Gestern56
Diese Woche111
Dieser Monat1241
Total1193182

  • IP: 54.81.78.135
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

22. Mai 2018