Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Userform Listbox disabelt aber scrollbar?





Frage

Hallo, ich habe in einem Userform eine Listbox angelegt, in der eine Reihe Dateinamen angezeigt werden sollen. Dateien mit bestimmten Eigenschaften werden automatisch ausgewählt, also habe ich die Eigenschaft MultiSelect auf fmMultiSelectExtended gestellt. Es soll für den Benutzer nicht möglich sein, die ausgewählten Dateien zu deaktivieren, oder neue auszuwählen, da die Listbox als reine Anzeige fungieren soll,also habe ich die Eigenschaft Enabled auf False gesetzt. Jetzt mein Problem: die Listbox kann, wenn sie disabled ist, nicht gescorllt werden, der Benutzer sollte aber die Möglichkeit haben, sich alle Dateinamen anzusehen, also die Liste rauf und runter zu scrollen, aber ohne Dateinamen auszuwählen. Gibt es hierfür eine Möglichkeit? Vielen Dank, schon mal im Voraus!

Antwort 1 von fürLau

Hallo

Nimm ein Drehfeld, setze es neben oder auf die scrollleiste des Listenfeldes, und steuere damit den Topindex der Listbox.
Private Sub SpinButton1_Change()
ListBox1.TopIndex = SpinButton1.Value
End Sub

Hoffe das ist das was Du willst.

Gruß[h3]{[h1]Ó¤[sup...fürLau

Antwort 2 von erne

Hallo fürLau,

das ist eigentlich genau das, was ich brauche, danke schön!

Ich hab aber jetzt noch das problem, dass das Drehfeld in der Z-Ebene sich nicht über die Listbox schieben lässt. (Ich habe probiert, beim ausgewählten Drehfeld über Format/Reihenfolge das Drehfeld ganz nach ober zu nehmen, aber das funzt nicht). Hängt das vielleicht damit zusammen, dass alle diese Elemente in einer Multipage angeordnet sind?

Antwort 3 von fürLau

Hallo erne,

Das hat imho nichts mit der Multipage zu tun,das ging bei mir zunachst nämlich auch nicht. Zwischenzeitlich ist mir eingefallen, daß Du natürlich auch ein Scrollbar anstelle des Drehfeldes nehmen kannst. Versuch´ mal die ListBox1 mit ScrollBar1zu gruppieren und anschließend die ListBox1 in den Hintergrund stellen. Damit sollte es eigentlich gehen.

Antwort 4 von fürLau

..ach ja und natürlich mit:

Private Sub UserForm_Activate()
ScrollBar1.Max = ListBox1.ListCount
End Sub


den Max-Wert des Scrolls festlegen.

Antwort 5 von erne

Hallo fürLau,
du hast recht, scrollbar sieht besser aus, und entspricht auch mehr der "Windows-Bedien-philosophie". Mit der Proprtionalität des Schiebers etc. muss ich wohl noch etwas probieren, aber das kann später mal erfolgen.
Trotz einigem Hin-und Her habe ich es aber nicht geschafft die scrollbar vor die listbox zu bekommen. Auch in einer ganz neuen Userform nicht. Ich hab zuerst die Listbox dann die Scrollbar platziert, dann andersherum: Brachte nichts. In einer Gruppierung kann ich nicht mehr auf die einzelnen Elemente zugreifen: brachte auch nichts. Auch Formatieren mit entsprechend ausgewählter Ebene (Vodergrund, Hintergrund) brachte nichts.
Hab dann mal im neuen Userform probiert: mit Checkbox, Commandbutton kann man Ebenen tauschen, auch wenndann noch eine Combobox dazukommt, bleibt die ganze Geschichte variabel. Nur die Listbox, die ist immer oben. Bei mehreren Listboxen ist immer die zuletzt
mit reingenommene die oberste.
Geht das nicht vielleicht programmatisch: irgendwoher muss doch auch Windows wissen, in welcher Ebene jedes Element ist. Wenn man diese Parameter ändern könnte wäre das vielleicht die Lösung?
gruss erne

Antwort 6 von fürLau

Hallo

Lies mal in der VBA-Hilfe
"Verwenden der Z-Reihenfolge beim Schichten von Steuerelementen",
Listenfeld-, Rahmen- oder Multiseiten-Steuerelement sind immer im Vordergrund. Aber nichtsdestotrotz funktioniert´s ja doch
Private Sub UserForm_Activate()
Rem ´ wegen der Proportionalität des Schiebers
ScrollBar1.Max = ListBox1.ListCount - 5
ListBox1.ZOrder (0)
ScrollBar1.ZOrder (1)
ScrollBar1.SetFocus
End Sub


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: