Fortschrittsbalken in VBA Excel
Ich bin dabei eine Excel-app, die eine Menge Daten, die Aktualisierung einer Datenbank, so braucht es Zeit. Ich möchte einen Fortschrittsbalken in einer userform und es öffnet sich, wenn Sie die Daten aktualisieren. Die bar, die ich will, ist nur eine kleine Blaue Balken bewegt sich Links und rechts und das wiederholt sich, bis das update abgeschlossen ist, keine prozentuale benötigt.
Ich weiß, ich sollte die progressbar
Kontrolle, aber ich habe versucht, für irgendwann mal, kann aber nicht.
EDIT: Mein problem ist mit der progressbar
Kontrolle, ich kann nicht sehen, die bar "Fortschritt", es ist nur vollständig, wenn das Formular erscheint. Ich benutze eine Schleife und DoEvent
aber das funktioniert nicht. Plus, ich möchte den Prozess zu wiederholen, nicht nur einmal.
thx für die Ratschläge, sehen, Bearbeiten
InformationsquelleAutor darkjh | 2011-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Vergangenheit, mit VBA-Projekte, die ich verwendet habe, ein label-Steuerelement mit dem farbigen hintergrund und passen Sie die Größe auf der Grundlage der Fortschritte. Einige Beispiele für ähnliche Ansätze finden sich in folgenden links:
Hier ist eine, die von Excel verwendet wird AutoFormen:
http://www.andypope.info/vba/pmeter.htm
Du bist herzlich willkommen. Sehen Sie neu sind, denken Sie bitte daran, zu akzeptieren und/oder abstimmen, wenn Ihre Frage damit beantwortet oder ist hilfreich. Danke.
InformationsquelleAutor Matt
Manchmal ist eine einfache Meldung in der status bar ist genug:
Dies ist sehr einfach zu implementieren:
So bin ich - einfach und effektiv.
Fantastische Antwort. +1
Große einfach zu implementierenden Methode. +1
InformationsquelleAutor eykanal
Hier ist ein weiteres Beispiel für die Verwendung der Statusleiste als Fortschrittsanzeige.
Durch einige Unicode-Zeichen können Sie imitieren ein Fortschrittsbalken. 9608 - 9615 sind die codes, die ich habe versucht, für die bars. Wählen Sie einfach eine entsprechend, wie viel Platz Sie wollen zwischen den bars. Sie können die Länge der Leiste durch das ändern NUM_BARS. Auch durch die Verwendung einer Klasse, die Sie es einrichten können, zu behandeln, zu initialisieren und die Freigabe der StatusBar automatisch. Sobald das Objekt den Gültigkeitsbereich verlässt, wird es automatisch bereinigen und lassen Sie die StatusBar wieder an Excel.
Beispiel Für Die Nutzung:
InformationsquelleAutor Zack Graber
Erstellen Sie eine Schaltfläche in einem Arbeitsblatt; Karte-Knopf, um "ShowProgress" makro
Erstellen Sie eine UserForm1 mit 2 Tasten, Fortschrittsbalken, bar-box, Textfeld:
InformationsquelleAutor John Harris
Dem label-Steuerelement ändert, ist eine schnelle Lösung. Jedoch, die meisten Menschen am Ende individuelle Erstellung von Formularen für jedes Ihrer Makros. Ich benutzte die DoEvents-Funktion und ein nicht modales Formular mit einem einzigen Formular für alle Ihre Makros.
Hier ist ein blog-post schrieb ich darüber: http://strugglingtoexcel.wordpress.com/2014/03/27/progress-bar-excel-vba/
Alles, was Sie tun müssen ist, importieren Sie das Formular und ein Modul in Ihre Projekte, und rufen Sie die Fortschritt-bar mit: Call modProgress.ShowProgress(ActionIndex, TotalActions, Titel.....)
Ich hoffe, das hilft.
Hallo Thomas. Wir alle wollen, zu stoppen, eine Schleife, dass ist der Grund, warum ich codiert, in. Vielen Dank für bemerken. Haben Sie ein großer Tag.
InformationsquelleAutor Ejaz Ahmed
Liebe ich alle Lösungen hier gepostet, aber ich löste dies durch Bedingte Formatierung als Prozentwert-basierte Daten-Bar.
Diese wird angewendet, um eine Reihe von Zellen, wie unten gezeigt. Die Zellen sind von 0% und 100% sind normalerweise ausgeblendet, weil Sie nur da, um dem "ScanProgress" benannten Bereich (Links -) Kontext.
In der code, den ich bin die Schleife durch eine Tabelle dabei einige Sachen.
Minimalen code, sieht anständig aus.
InformationsquelleAutor Lucretius
InformationsquelleAutor user3294122
Hallo modifizierte version von einem anderen Beitrag von Marecki. Hat 4 Stile
Bevor Sie Fragen, warum ich nicht Bearbeiten, der post ist, ich habe und es abgelehnt, mir wurde gesagt die post eine neue Antwort.
InformationsquelleAutor ozmike
Über die
progressbar
- Steuerelement in einem Benutzerformular, es wird nicht zeigen keine Fortschritte, wenn Sie nicht dierepaint
Veranstaltung. Sie müssen code dieses Ereignis innerhalb der Schleife (und offensichtlich erhöht dieprogressbar
Wert).Anwendungsbeispiel:
InformationsquelleAutor PedroMVM
Gab es viele andere tolle Beiträge, aber ich möchte sagen, theoretisch sollten Sie in der Lage sein zu erstellen REAL progress bar control:
CreateWindowEx()
zu erstellen, den Fortschritt-barEinem C++ - Beispiel:
hwndParent
Sollte auf das übergeordnete Fenster. Dafür könnte man die status bar, oder eine benutzerdefinierte form! Hier ist der window-Struktur von Excel-gefunden von Spy++:Diese sollten daher relativ einfach, mit
FindWindowEx()
Funktion.Nachdem die Fortschrittsanzeige erstellt wurde, müssen Sie
SendMessage()
um die Interaktion mit der Statusanzeige:Ich bin mir nicht sicher, wie praktisch diese Lösung ist, aber es könnte etwas mehr "offizielle" als andere Methoden hier angegeben werden.
InformationsquelleAutor Sancarn
Nur hinzufügen mein Teil der oben genannten Kollektion.
Wenn Sie nach weniger code und vielleicht Coole UI. Check out my GitHub für die Progressbar in VBA
individuell:
Die Dll ist gedacht für MS-Access, sollte aber in allen VBA-Plattform mit geringfügigen änderungen. Es gibt auch eine Excel-Datei mit den Proben. Sie sind frei, zu erweitern, der vba-Wrapper, um Ihre Bedürfnisse anzupassen.
Dieses Projekt ist derzeit in der Entwicklung und nicht alle Fehler abgedeckt sind. So erwarten einige!
Sollten Sie besorgt sein über 3rd-party-dlls und wenn Sie sind, fühlen Sie bitte sich frei, alle vertrauenswürdigen online-antivirus vor der Implementierung der dll.
InformationsquelleAutor krish KM
Schön, dialog, progressbar-form, die ich suchte.
progressbar aus alainbryden
sehr einfach zu bedienen und sieht nett aus.
edit: link funktioniert nur für premium Mitglieder jetzt :/
hier ist gute alternative, Klasse.
InformationsquelleAutor ya_dimon
Lösung, gepostet von @eykanal vielleicht nicht die beste, im Falle Sie haben riesige Datenmengen zu bewältigen, wie die Aktivierung der Statusleiste würde verlangsamen die Ausführung von code.
Folgenden link erklärt ein schöner Weg, um bauen Sie einen Fortschrittsbalken. Funktioniert gut mit hohen Datenvolumen (~250K Datensätze +):
http://www.excel-easy.com/vba/examples/progress-indicator.html
InformationsquelleAutor Bhushan K