Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Statusanzeige | Herbers Excel-Forum


Betrifft: Statusanzeige von: René
Geschrieben am: 05.01.2010 18:32:25

Hallo liebe Excelprofis,

ich habe ein Makro mit dem man Daten aus zwei Tabellen in eine Tabelle zusammenführen kann. Leider dauert die Makroausführung sehr lange. Daher wollte ich gern den Button für die Ausführung des Makros in eine UserForm legen und in dieser UserForm beim Ausführen des Makros eine Statusanzeige mit Balken haben der den Fortschritt anzeigt. Könnt ihr mir da bitte helfen

Anbei das Makro das ausgeführt wird, aber eben sehr lange braucht

Private Sub CommandButton1_Click()
      Dim a, b, c As Long
For b = 2 To Sheets("Daten Kurzcheck").Cells(Rows.Count, 1).End(xlUp).Row
c = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Daten Kurzcheck").Rows(b).Copy
Sheets("Daten").Rows(b).Insert
Sheets("Daten Kurzcheck").Rows(b).Clear
Next b
 
Worksheets("Daten").Columns("A:U").sort _
    Key1:=Worksheets("Daten").Range("D2"), Order1:=xlAscending, _
    Key2:=Worksheets("Daten").Range("A2"), Order2:=xlAscending, Header:=xlYes
 
 
 
 
For b = 2 To Sheets("Daten Kurzcheck Formeln").Cells(Rows.Count, 3).End(xlUp).Row
c = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Daten Kurzcheck Formeln").Rows(b).Copy
Sheets("Daten Kurzcheck").Rows(b).Insert
 
Next b
Scannerdaten.Hide
FormularWochenbericht.Show
End Sub

  

Betrifft: AW: Statusanzeige von: Daniel
Geschrieben am: 05.01.2010 19:01:06

Hi
sinnvoller wäre es, die Zeilen nicht einzeln in einer Schleife, sondern als ganzen Block zu kopieren, das ist wesentlich schneller und dann brauchst du keine Statusanzeige.

ansonsten ist die einfachste Form die Statuszeile von Excel zu nutzen:

Private Sub CommandButton1_Click()
      Dim a, b, c As Long
      dim Anz as long
For b = 2 To Sheets("Daten Kurzcheck").Cells(Rows.Count, 1).End(xlUp).Row
c = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Daten Kurzcheck").Rows(b).Copy
Sheets("Daten").Rows(b).Insert
Sheets("Daten Kurzcheck").Rows(b).Clear
Next b
 
Worksheets("Daten").Columns("A:U").sort _
    Key1:=Worksheets("Daten").Range("D2"), Order1:=xlAscending, _
    Key2:=Worksheets("Daten").Range("A2"), Order2:=xlAscending, Header:=xlYes
 
 
 
 Anz = Sheets("Daten Kurzcheck Formeln").Cells(Rows.Count, 3).End(xlUp).Row
For b = 2 To Anz
Application.Statusbar = "Bearbeitungsstand: " & Format(b/Anz, "%")
c = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Daten Kurzcheck Formeln").Rows(b).Copy
Sheets("Daten Kurzcheck").Rows(b).Insert
 
Next b
Scannerdaten.Hide
application.Statusbar = False 'Statusbar wieder für Excelmeldungen freigeben
FormularWochenbericht.Show
End Sub
das wäre jetzt eine Prozentanzeige, einen Statusbalken könntest du über die WIEDERHOLEN-Funktion mit einem geeigneten Zeichen aus dem Zeichensatz Tahoma erzeugen (in VBA: Worksheetfunction.Rept())

Gruß, Daniel


  

Betrifft: AW: Statusanzeige von: René
Geschrieben am: 05.01.2010 19:07:34

Hallo Daniel,

ich danke Dir ganz sehr und probiere es gleich morgen früh aus. Wünsch Dir ud allen hier auch noch ein gesundes neues Jahr.

Gruß René