Hallo,
ich habe ein Word Dokument mit ca 50 comboboxen. Leider dauert es nun ca 1 Min diese dokument zu öffnen gibt es einen Trick es zu beschleunigen ?
Private Sub Document_Open()
ComboBox1.List() = Array(" „, „vermehrt“, „normal“, „vermindert“)
ComboBox2.List() = Array(“ ", „vermehrt“, „normal“, „vermindert“)
…
End Sub
50 Comboboxen ? Das ist ja straff
was mir auffaellt ist, das du combox1 und combox2 mit den gleichen Daten füllst. Eine Variante wäre… nur eine zu befuellen und diese dann bei Bedarf verschieben oder nachladen. Das spart schon einmal ein wenig Zeit
Desweiteren kommt es darauf an, wieviel Eintraege du in den Comboboxen hast. Ein setzen der Eigenschaft Visible auf False beim laden beschleunigt auch den Vorgang ein wenig!
Desweiteren könntest du mal folgendes versuchen.
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias \_
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, \_
ByVal wParam As Long, lParam As Any) As Long
Dim StrItemText as string
Dim lngDataIndex as Long
StrItemText="Dein Wert"
lngDataIndex = SendMessage(C.hWnd, &H143, 0,ByVal strItemText)
Das rentiert sich aber erst ab >50 Eintraegen :s Aber ein Versuch sollte es Wert sein
PS: Das ist der Code für VB und nicht VBA. Sollte aber eigentlich laufen
MfG Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Aber warum dauert es sooo Lange 50 Comboboxen mit inhalt zu
füllen ?
das sind 50 Zeilen Quelltext …
weil die Comboboxen beim Start des Projekts erst mal erzeugt werden müssen. Eine combobox ist eine Kombination aus Liste (Array) und einem Textfeld, mit allen Editierfunktionen aus dem Notepad. Ein wahrer Ressourcenfresser!
Dazu kommt, daß VBA IMO noch auf das VB4 zurückgeht, also noch interpretiert wird. Da steckt kein Compiler dahinter, der das Projekt zur Laufzeit schnell macht.
Ich würde auch, wie Anno vorgeschlagen hat, mit nur einer Combobox arbeiten und den Anwender nur glauben lassen, es wären mehrere. Ich vermute, daß das erheblich schneller ist und der Anwender bemerkt es nicht, er kann ja immer nur eine Combobox anklicken. Daß da immer die selbe Box verschoben, mit dem passenden Inhalt gefüllt und angezeigt wird, ist nicht zu merken. Der Code wird davon umständlicher, aber schneller und ressourcenschonend.
probiere mal folgendes. Entferne mal die Zeilen wo du die Comboboxen füllst. Starte dann mal dein Prog neu. Dauert es immernoch solange?
Wenn ja dann poste mal bitte den kompletten Source wo du die Comboboxen füllst. Nur dann kann man eine Aussage machen.
Richtig ist wie Peter schon sagte, das nicht nur 1 Zeile ausgefuehrt wird Dennoch kann ich es mir nur schwer vorstellen das es daran liegt, denn auch ich habe mal ein Project geschrieben wo mehr wie nur 100 Steuerelemente drauf waren und das laden hat da auch nicht lange gedauert!
Ich habe nun nochmal ein neues dokument mit 50 comboboxen gemacht … alle leer. Die Ladezeit ist trotzdem grösser als 20 sekunden.
Gibt es eine Alternative zur combobox ?
es soll eine auswahlmöglichkeit + freitext zulassen
mfg joe
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]