Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Tutorials

Performance (4) - Frames

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --Gruppenthema: 4 Folgen 1 2 3 4 Sie sind in Folge:4
Der Alte Mann und die Frames - oder Ordnung ist langsam?

In diesem Beitrag geht es um UserForms

Da ich hauptsächlich Excel von außen anstoße und Dialoge in VB6 erstelle, wurde mir folgendes erst vor kurzem offensichtlich:

Von VB6 so gewohnt benutzte ich auch Frames in einer Excel VBA Userform für ein AddIn
Man kann so schön Gruppen zusammengehörig darstellen.

Dieses AddIn welches mit einer UserForm arbeitet, war auch von einer DLL abhängig.
Diese UserForm, welche ich - ordentlich wie ich bin - schön mit Rahmen gruppierte, hatte (und hat immer noch in der alten Version) beim Aufruf eine doch recht lange Ladezeit (ca. 0,5 sek) , bis die UserForm angezeigt wurde. Ich schob dies faul wie ich bin auf die DLL und auf Zugriffe auf die Registry. (Wobei ich es eigentlich besser wissen sollte)

Beim Erstellen einer neuen Version dieses AddIns ging mir das aber immer mehr auf den Keks.
Ich experimentierte mit der DLL und allem möglichen, aber nichts wurde schneller.

Dann setzte ich die DLL auf eine leere Userform an - und siehe da, es ging ruckzuck.

Zurück zu meinem AddIn kommentierte ich Code nach und nach aus, setzte mir Zeitüberwacher aber nichts half.

Resultat: Keine Ahnung warum es langsam ist.

Ich nahm ein paar Schaltflächen mit Bildern aus der Sache - auch das half nichts.
Ladezeit weiterhin langsam.

Jetzt einfach mal ein paar spezielle Steuerelemente raus - keine Verbesserung.

Jetzt mal eine Gruppe von Steuerelemente raus, inkl. des Rahmens.
Whooops, eine leicht merkliche Verbesserung.
War ich auf der richtigen Spur?

Ran an die Arbeit und alle Steuerelemente aus den Rahmen heraus und die Rahmen gelöscht.

HEUREKA
- die UserForm baute sich in Nullkommanichts auf.


Das seltsame war auch, dass die Festplatte immer gerattert hatte, beim öffnen der UserForm.
Auch dies ist jetzt weg.

Frames in VBA sind anscheinend mit aller aller Vorsicht zu genießen.
Sie sind keine richtigen Container, jedenfalls keine funktionstüchtigen.
Außerdem scheint auch das Verschieben und Neuordnen von Frames auch noch eine Auswirkung zu haben.

Auch wenn man diese eventuell zur Gruppierung von Optionsschaltflächen benötigt, sollte man sehr sehr sparsam damit umgehen.

Eine Option ist hier das Multiseitensteuerelement, welches ein richtiger Container scheint.
Zumindest bremst es den Aufbau nicht aus und ich kann auf die einzelnen Seiten auch Optionbuttons gruppieren. (Eine Gruppe pro Page)


Warum schreibe ich dies hier so ausführlich?


Erstens unter dem Motto: Man wird alt wie ne Kuh und lernt doch täglich dazu und:

Es hat sich wieder mal gezeigt, dass man nichts als gegeben hinnehmen soll oder mit Annahmen arbeitet, die man nicht überprüft hat. Und um Sie zu ermutigen, auch vieles zu testen bevor Sie glauben, an der Geschwindigkeitsschraube nicht mehr drehen zu können.

Manchmal sind es wirklich so blöde einfach Dinger wie Frames in Userformen.

Oder irre ich mich? War dies nur Zufall oder wie oder was?
Kann dies jemand bestätigen oder wiederlegen?



Weitere Artikel der Gruppe: Tutorials Aus Excel VBA
Nach oben