28.04.2019, 16:45
Hallo,
ich bin gerade dabei eine Benutzer definierte Suchfunktion in einer meiner Dateien einzufügen. Dabei habe ich eine Userform erstellt welche mir die Daten mittels Listboxen anzeigt.
Diese werden dynamisch mittels Code erstellt und in Größe, Form und Ausrichtung auf der Userform platziert. Dadurch dass ich im Vorfeld nicht weiß wie viele Listboxen ich benötige, wollte ich mittels der Scrollbar Eigenschaft der Userform dies kompensieren und die Userform in ihrer Größe fürs erste so belassen.
In der Form wie folgt wollte ich das lösen:
Den Wert SrollHeight passe ich innerhalb des Codes jeweils an. Je mehr Listboxen ich erstelle und je Größer diese werden, desto größer wird mein ScrollHeight Wert.
In der Theorie Funktioniert das auch alles so weit wie gedacht. Praktisch gesehen sieht das allerdings ein wenig anders aus.
Nun zu meinem Problem:
Wenn ich meinen Code mittels des VB-Editor Debuggers manuell durch laufen lasse (F8 drücken bzw. den Cursor ans Ende des Code setzen und STRG + F8 drücken) funktioniert alles wie gewollt.
Sobald ich allerdings die Sub automatisch ablaufen lasse, ändern die zuvor erstellten Listboxen ihren Width und Heigth Wert von alleine. Wenn ich allerdings wiederum in meinem Code die Zeilen auskommentiere in denen ich die Scrollbar = fmScrollBarsVertical verwende (Am Ende der cmdAlleSuchen_Click Sub), funktioniert wieder alles wie gewollt nur das ich dann eben keine Scrollbar mehr an meiner Userform habe.
Hab ich da irgendwas vergessen oder muss ich bei der Scrollbar Eigenschaft irgendwas beachten wenn ich die verändere?
Was noch interresant zu wissen sein dürfte ist folgenden Tatsache: Ich habe in der Userform eine Funktion mit drin welche bei dem Ereigniss UserForm_Resize aufgerufen wird. Darin wird ebenfalls die Scrollbar-Eigenschaft gegebenenfalls verändert.
Wenn diese Prozedur allerdings abläuft bleiben die Width und Height Wert der Listboxen erhalten wie sie in der anderen Prozedur erstellt wurden.
Wenn ich diese Funktioin aber auch innerhalb meiner Prozedur aufrufe in der ich auch die Listboxen erstell werden diese wieder in der Größe verändert.
Einen Grafik Fehler habe ich ebenfalls ausschliesen können. Ich habe die Listboxen einer Klasse zugeordnet in der ich als Probe die Width und Heigth Wert der angeklickten Listbox auswerte. Es kommen dabei jeweils verschieden Werte heraus.
[
Bild bitte so als Datei hochladen: Klick mich!
]
Ergebniss mit ScrollBars Änderung. (Hier ist an der rechten Seite eine Scrollbar zu sehen aber die Darstellung schaut doof aus )
[
Bild bitte so als Datei hochladen: Klick mich!
]
Ergebniss ohne Scrollbars Änderung. (Hier ist keine zu sehen, dafür schaut die Liste gut aus :69: )
Ich hoffe ich konnte mein Problem ausreichend genau schildern.
Mfg Harald
PS: In der Beispiel Datei sind die auskommentierten Zeilen mit <<<<<<<<< Betroffene Zeile markiert. (Wenn eine davon aktiv ist entsteht der Fehler bei drücken des "Alle Maschinen Suchen" CommandButton)
ich bin gerade dabei eine Benutzer definierte Suchfunktion in einer meiner Dateien einzufügen. Dabei habe ich eine Userform erstellt welche mir die Daten mittels Listboxen anzeigt.
Diese werden dynamisch mittels Code erstellt und in Größe, Form und Ausrichtung auf der Userform platziert. Dadurch dass ich im Vorfeld nicht weiß wie viele Listboxen ich benötige, wollte ich mittels der Scrollbar Eigenschaft der Userform dies kompensieren und die Userform in ihrer Größe fürs erste so belassen.
In der Form wie folgt wollte ich das lösen:
Code:
If Height < ScrollHeight Then ScrollBars = fmScrollBarsVertical Else ScrollBars = fmScrollBarsNone
In der Theorie Funktioniert das auch alles so weit wie gedacht. Praktisch gesehen sieht das allerdings ein wenig anders aus.
Nun zu meinem Problem:
Wenn ich meinen Code mittels des VB-Editor Debuggers manuell durch laufen lasse (F8 drücken bzw. den Cursor ans Ende des Code setzen und STRG + F8 drücken) funktioniert alles wie gewollt.
Sobald ich allerdings die Sub automatisch ablaufen lasse, ändern die zuvor erstellten Listboxen ihren Width und Heigth Wert von alleine. Wenn ich allerdings wiederum in meinem Code die Zeilen auskommentiere in denen ich die Scrollbar = fmScrollBarsVertical verwende (Am Ende der cmdAlleSuchen_Click Sub), funktioniert wieder alles wie gewollt nur das ich dann eben keine Scrollbar mehr an meiner Userform habe.
Hab ich da irgendwas vergessen oder muss ich bei der Scrollbar Eigenschaft irgendwas beachten wenn ich die verändere?
Was noch interresant zu wissen sein dürfte ist folgenden Tatsache: Ich habe in der Userform eine Funktion mit drin welche bei dem Ereigniss UserForm_Resize aufgerufen wird. Darin wird ebenfalls die Scrollbar-Eigenschaft gegebenenfalls verändert.
Wenn diese Prozedur allerdings abläuft bleiben die Width und Height Wert der Listboxen erhalten wie sie in der anderen Prozedur erstellt wurden.
Wenn ich diese Funktioin aber auch innerhalb meiner Prozedur aufrufe in der ich auch die Listboxen erstell werden diese wieder in der Größe verändert.
Einen Grafik Fehler habe ich ebenfalls ausschliesen können. Ich habe die Listboxen einer Klasse zugeordnet in der ich als Probe die Width und Heigth Wert der angeklickten Listbox auswerte. Es kommen dabei jeweils verschieden Werte heraus.
[
Bild bitte so als Datei hochladen: Klick mich!
]
Ergebniss mit ScrollBars Änderung. (Hier ist an der rechten Seite eine Scrollbar zu sehen aber die Darstellung schaut doof aus )
[
Bild bitte so als Datei hochladen: Klick mich!
]
Ergebniss ohne Scrollbars Änderung. (Hier ist keine zu sehen, dafür schaut die Liste gut aus :69: )
Ich hoffe ich konnte mein Problem ausreichend genau schildern.
Mfg Harald
PS: In der Beispiel Datei sind die auskommentierten Zeilen mit <<<<<<<<< Betroffene Zeile markiert. (Wenn eine davon aktiv ist entsteht der Fehler bei drücken des "Alle Maschinen Suchen" CommandButton)