Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox Grösse ändern

Listbox Grösse ändern
17.10.2021 19:55:07
Daniel
Guten Abend
Ich habe eine UserForm. Darin habe ich in einem Frame eine ListBox (MultiSelect). Nun sollte durch Anklicken der ListBox die Frame und die Listbox gegen unten grösser werden.
Dies mache ich mit folgendem Code machen:

Private Sub ListBox1_Enter()
Frame2.Visible = False
Frame3.Visible = False
Frame4.Visible = False
ListBox1.Height = 580
Frame1.Height = 650
End Sub
Wenn ich die Listbox verlasse, wird diese wieder mit folgendem Code in die ursprüngliche Lage versetzt:

Private Sub UserForm_Initialize()
Dim rngletzte As Integer
Dim rngBereich As Range
Liste_Formatieren ListBox1
Liste_Formatieren ListBox2
Liste_Formatieren ListBox3
Liste_Formatieren ListBox4
Rahmen_Formatieren Frame1, 12
Rahmen_Formatieren Frame2, 190
Rahmen_Formatieren Frame3, 367.95
Rahmen_Formatieren Frame4, 546
With WkSh
For Each rngBereich In WkSh.Range("A2:A" & rngletzte)
With ListBox1
.AddItem rngBereich.Offset(, 0).Text
.List(.ListCount - 1, 1) = rngBereich.Offset(, 1).Text
.List(.ListCount - 1, 2) = rngBereich.Offset(, 2).Text
End With
Next rngBereich
End With
End Sub
Sub Rahmen_Formatieren(Rahmen As Object, Pos As Integer)
With Rahmen
.Visible = True
.Height = 174
.Top = Pos
End With
End Sub
Dies funktioniert alles. Doch klicke ich erneut auf die ListBox funktioniert es nicht mehr. Wo habe ich einen Fehler eingebaut?
Hoffe mit diesen Zeilen könnt Ihr mir Behilflich sein?
Wünsche einen schönen Abend.
Gruss Daniel E.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Grösse ändern
17.10.2021 20:02:19
ralf_b
was machst du denn genau. Enter ist nicht gleich Klick. das sind verschiedene Events .
AW: Listbox Grösse ändern
17.10.2021 20:33:23
Daniel
Hallo Raf_b
Ich habe vier Listboxen untereinander. Damit es ein wenig übersichtlicher wird, dachte ich, wenn ich eine von diesen ListBoxen auswähle, soll sich diese vergrössern. Nach dem schliessen durch einen CommandButton wieder verkleinern. Mit der Klick Funktion hat mein Code leider nicht funktioniert!
Anzeige
AW: Listbox Grösse ändern
17.10.2021 20:43:19
ralf_b
ich vermute die Listbox ist im Frame drin. Somit wäre ein einfacher Klick erstmal die Aktivierung des Frame. Hast du dessen klick-Event mal abgefragt? Ist eine Frame denn zwingend notwendig?
AW: Listbox Grösse ändern
17.10.2021 20:55:01
Daniel
Genau! Wenn ich folgenden Code ins Klick Ereignis des Frames setze funktioniert es. Muss allerdings das Frame anklicken. Eigentlich nicht. Sieht einfach etwas besser aus!

Private Sub Frame1_Click()
Frame2.Visible = False
Frame3.Visible = False
Frame4.Visible = False
ListBox1.Height = 580
Frame1.Height = 650
End Sub

Anzeige
AW: Listbox Grösse ändern
17.10.2021 21:25:28
ralf_b
du könntest den klick auf die Listbox durchreichen oder den Frame weglassen

Sub Frame1_click()
call listbox1_click
end 

Sub

AW: Listbox Grösse ändern
17.10.2021 21:46:45
Daniel
Hallo Ralf_b
Du hast mich auf eine Idee gebracht. Habe den Code in das Enter Ereignis des Frames geschrieben. Nun funktioniert es auch!
Vielen Dank und eine gute Nacht.
Gruss Daniel E.
Anzeige
;
Anzeige

Infobox / Tutorial

Listbox-Größe in Excel UserForms anpassen


Schritt-für-Schritt-Anleitung

Um die Größe einer ListBox in einer UserForm zu ändern, kannst Du die folgenden Schritte befolgen:

  1. UserForm erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle eine neue UserForm.

  2. ListBox und Frame hinzufügen: Füge eine ListBox und einen Frame hinzu. Stelle sicher, dass die ListBox die Eigenschaft MultiSelect aktiviert hat.

  3. Code einfügen: Füge den folgenden Code in die UserForm ein, um die Größe der ListBox und des Frames zu ändern, wenn die ListBox fokussiert wird:

    Private Sub ListBox1_Enter()
        Frame2.Visible = False
        Frame3.Visible = False
        Frame4.Visible = False
        ListBox1.Height = 580
        Frame1.Height = 650
    End Sub
  4. Zurücksetzen der Größe: Um die ursprüngliche Größe wiederherzustellen, verwende diesen Code im UserForm_Initialize:

    Private Sub UserForm_Initialize()
        ' Hier deinen bestehenden Code einfügen
    End Sub
  5. Testen: Starte die UserForm und klicke auf die ListBox, um die Größenänderung zu überprüfen.


Häufige Fehler und Lösungen

  • Fehler: Die ListBox reagiert nicht beim erneuten Klicken.

    • Lösung: Der Enter-Event wird nur einmal ausgelöst. Nutze den Click-Event der ListBox oder den Click-Event des Frames, um die Größe erneut anzupassen.
  • Fehler: Frame bleibt sichtbar.

    • Lösung: Stelle sicher, dass Du alle Frames korrekt auf Visible = False setzt, wie im obigen Code.

Alternative Methoden

Wenn Du die ListBox-Größe anpassen möchtest, ohne den Frame zu verwenden, kannst Du den Click-Event der ListBox nutzen:

Private Sub ListBox1_Click()
    ListBox1.Height = 580
    Frame1.Height = 650
End Sub

Diese Methode umgeht die Notwendigkeit des Frames, was den Code einfacher und übersichtlicher macht.


Praktische Beispiele

Ein typisches Beispiel könnte wie folgt aussehen:

  1. Erstelle eine UserForm mit mehreren ListBoxen.
  2. Füge den oben beschriebenen Code in das Click-Event jeder ListBox ein.
  3. Füge einen CommandButton hinzu, um die Größe der ListBoxen zurückzusetzen:

    Private Sub CommandButton1_Click()
        ListBox1.Height = 100
        Frame1.Height = 200
    End Sub

Dies gibt Dir die Kontrolle über die ListBox-Größe und macht die Benutzeroberfläche flexibler.


Tipps für Profis

  • Verwende Konstanten: Anstatt feste Werte für Höhen und Breiten zu verwenden, definiere Konstanten am Anfang Deines Codes. Das macht spätere Anpassungen einfacher.

    Const LISTBOX_HEIGHT As Integer = 580
    Const FRAME_HEIGHT As Integer = 650
  • Ereignisüberprüfung: Überprüfe, ob die ListBox bereits die gewünschte Größe hat, bevor Du Änderungen vornimmst. So vermeidest Du unnötige Berechnungen.


FAQ: Häufige Fragen

1. Frage
Warum funktioniert der Click-Event der ListBox nicht wie erwartet?
Antwort: Der Click-Event wird nur bei einem tatsächlichen Klick auf die ListBox ausgelöst. Wenn Du den Frame verwendest, kann dies zu Verwirrungen führen, da der Frame möglicherweise den Fokus hat.

2. Frage
Kann ich die Größe der ListBox auch animieren?
Antwort: VBA bietet keine integrierte Animationsfunktion. Du könntest jedoch die Höhe in kleinen Schritten anpassen, um einen Animationseffekt zu simulieren.

3. Frage
Welche Excel-Version benötige ich für die Nutzung von UserForms?
Antwort: UserForms sind in den meisten Versionen von Excel verfügbar, beginnend mit Excel 97 bis zur neuesten Version.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige