Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makrofortschritt

Makrofortschritt
07.11.2008 17:53:00
kalle
Hallo Leute,
brauche mal wieder hilfe. In meinem Makro suche ich nach Einträgen, die dann gelöscht werden. Da dieser Vorgang recht lange dauern kann würde ich gerne eine visuelle Anzeige, sprich Statusanzeige bekommen. Habe das Forum schon rauf und runter gesucht, weiß aber nicht wie ich die diversen Lösungen in mein Makro einbauen soll. Ich habe schon eine Userform mit Progressbar erstellt, aber wie füttere ich das Ding mit Daten? Der Code für das Suchen sieht wie folgt aus:
Dim i&
Const Spalte = 2 'Sp B durchsuchen
Const such1 = "96" 'Kunde 96
Const such2 = "98" 'Kunde 98
Const such3 = "99" 'Kunde 99
For i = Cells(Rows.Count, Spalte).End(xlUp).Row To 1 Step -1
If Cells(i, Spalte).Value = such1 Then Rows(i).Delete
If Cells(i, Spalte).Value = such2 Then Rows(i).Delete
If Cells(i, Spalte).Value = such3 Then Rows(i).Delete
Next i
Wie bekomme ich hier einen Statusbalken? Egal ob in der Statusleiste oder als Userform. Kann mir bitte jemand helfen?
Gruß
Kalle

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makrofortschritt
07.11.2008 22:42:00
Daniel
Hi
wenn man eine For-Next-Schleife hat, dann man eine Fortschrittsanzeige relativ einfach über die Statuszeile in Excel einbauen:

Dim i&
Const Spalte = 2 'Sp B durchsuchen
Const such1 = "96" 'Kunde 96
Const such2 = "98" 'Kunde 98
Const such3 = "99" 'Kunde 99
For i = Cells(Rows.Count, Spalte).End(xlUp).Row To 1 Step -1
application.Statusbar  = "Noch " & i & " Zeilen zu bearbeiten"
If Cells(i, Spalte).Value = such1 Then Rows(i).Delete
If Cells(i, Spalte).Value = such2 Then Rows(i).Delete
If Cells(i, Spalte).Value = such3 Then Rows(i).Delete
Next i
application.Statusbar=false '---Gibt die Statusanzeige wieder für Systemmeldungen frei


mal so als einfachsten ansatz, mit ein bischen Krativität und Kenntnis der Textfunktionen kann man sich auch eine Prozent- oder sogar eine einfache Balkengrafix (über entsprechende Ascii-Zeichen) zusammenbasteln.
allerdings ist bei deiner Aufgabenstellung kein Fortschrittsbalken notwendig, da man das genügend schnell programmieren kann, so daß auch sehr viele Zeilen (bis 60.000) in Sekundenbruchteilen gelöscht werden:


Sub Sehr_schnell_Zeilen_löschen()
Const Spalte = 2 'Sp B durchsuchen
Columns(1).Insert
With Range("A1:A" & Cells(Rows.Count, 1 + Spalte).End(xlUp).Row)
.FormulaLocal = "=wenn(oder(C1=96;C1=98;C1=99);Wahr;Zeile())"
.Formula = .Value
.EntireRow.Sort key1:=Range("A1"), order1:=xlAscending, header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
.EntireColumn.Delete
End With
End Sub


Gruß, Daniel

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige