Listbox multiselect Häckchenfelder anpassen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
Bild

Betrifft: Listbox multiselect Häckchenfelder anpassen
von: bassi
Geschrieben am: 15.09.2015 11:58:44

Guten Morgen in die Runde.
Ich hab ein "Problem" was eigentlich gar keins ist. Sozusagen nur der Schönheit wegen...
;-)
Wenn man eine Listbox auf multiselect stellt, dann wird der gesamte Bereich der Range mit diesen Vierecken für die Häckchen belegt. Die Vierecke sind logisch, machen Sinn. Aber eben auch wenn dort keine Daten stehen?
Kann man das vielleicht irgendwie verhindern?
Das sieht ja so doch recht ulkig aus...
Viele Grüße
bassi

Bild

Betrifft: AW: Listbox multiselect Häkchenfelder anpassen
von: Rudi Maintaire
Geschrieben am: 15.09.2015 12:05:55
hallo,
dann darfst du die LBx eben nur mit Daten füllen.
Siehe AddItem-Methode oder den Bereich (RowSource) anpassen.
Gruß
Rudi

Bild

Betrifft: AW: Listbox multiselect Häkchenfelder anpassen
von: bassi
Geschrieben am: 15.09.2015 12:19:13
Hallo Rudi,
danke für deine schnelle Reaktion.
Das wäre freilich die einfache Variante.
Aber da ich ja vorher nie weiß, wieviele Daten in der listbox stehen werden macht es keinen Sinn.
Die Range muss so groß sein um die maximal angezeigte Anzahl an Daten anzeigen zu können.
An manchen Tagen stehen da aber eben nur drei Werte. Und das sieht dann seltsam aus :-(
Oder kann man vielleicht die Range an die Anzahl der in einem vorgegeben Bereich liegenden Daten (welche sich jederzeit ändern) anpassen?
*grübel*

Bild

Betrifft: oder kann man vielleicht ...
von: Rudi Maintaire
Geschrieben am: 15.09.2015 12:22:40
Hallo,
man kann.
Recherche: Listbox füllen.
Gruß
Rudi

Bild

Betrifft: AW: oder kann man vielleicht ...
von: bassi
Geschrieben am: 15.09.2015 12:38:28
Ahhhh. Habs gefunden :) Das ist freilich die schönste Lösung.
Werd ich nachher gleich testen.
Ha. Super.
Rudi - besten Dank!

Bild

Betrifft: AW: oder kann man vielleicht ...
von: bassi
Geschrieben am: 16.09.2015 09:35:13
Guten Morgen Rudi,
habs gestern getestet.
Bin zwar noch dabei den code für meinen Kopf zu entschlüsseln, aber mit ein bisschen stricken hat es im Grunde geklappt.
Allerdings musste ich einen Teil kappen.
Damit wir vom selben reden kopier ich den code hier nochmal rein den ich fand.

Private Sub UserForm_Initialize()
Dim letzte As Long
With Sheets("Tabelle3")
letzte = .Cells(.Rows.Count, 4).End(xlUp).Row 'letzte belegte Zellennummer SpalteD
 'UserForm1.ComboBox1.RowSource = .Name & "!" & Range("D1:D" & letzte).Address
 'ComboBox1.List = .Range("D1:D" & letzte).Value
End With
End Sub
Diesen Teil hier musste ich entfernen, dann funktioniert das im Grunde so wie angedacht.
ComboBox1.List = .Range("D1:D" & letzte).Value
Einen kleinen Haken hat das ganze aber dennoch.
Wenn in dem "überwachten" Bereich nur Werte und Leerzellen stehen, dann funktioniert das.
Wenn allerdings Werte und Formeln mit "" dort stehen, werden für die leer angezeigten "" Felder trotzdem ein Viereck angezeigt.
Gibts dafür vielleicht auch eine Lösung?
Viele Grüße
bassi
Achja... vielleicht für den Admin interessant?
Ich hatte gestern versucht wie angeraten nach "Listbox füllen" zu suchen.
Gebe ich den Text hier oben in das Suchfeld ein wird kein Beitrag gefunden.
Gebe ich den Text bei Google ein ist gleich der erste Fund ein Link in dieses Forum.
Mach ich da was falsch oder soll das so sein?

Bild

Betrifft: AW: oder kann man vielleicht ...
von: Rudi Maintaire
Geschrieben am: 16.09.2015 12:46:55
dann mach das so:

Private Sub UserForm_Initialize()
  Dim letzte As Long, i As Long
  ListBox1.Clear
  With Sheets("Tabelle3")
    letzte = .Cells(.Rows.Count, 4).End(xlUp).Row 'letzte belegte Zellennummer SpalteD
    For i = 1 To letzte
      If .Cells(i, 4) <> "" Then ListBox1.AddItem .Cells(i, 4)
    Next
  End With
End Sub
Für den Admin:
Mit der Listensuche suchst du nur in der Forumsliste. Die enthält nur die letzten paar Tage.
Es gibt oben einen Button RECHERCHE
Gruß
Rudi

Bild

Betrifft: AW: oder kann man vielleicht ...
von: bassi
Geschrieben am: 16.09.2015 17:03:26
Hallo Rudi,
erneut will ich dir danken.
Habe den code eingebaut. Jedoch wird nun Laufzeitfehler 70. Zugriff verweigert ausgeworfen.
Markiert wird die Stelle im letzten Teil:
Listbox1.Additem, Cells(i,4)
Kannst du mich bitte nochmal anstubsen?
Viele Grüße
bassi

Bild

Betrifft: AW: oder kann man vielleicht ...
von: bassi
Geschrieben am: 17.09.2015 09:19:34
huch... hacken beim ausrufezeichen vergessen... *ankopfschlag*
*letzte Frage nochmal push*

Bild

Betrifft: Zugriff verweigert
von: Rudi Maintaire
Geschrieben am: 17.09.2015 12:29:41
Hallo,
huch... hacken beim ausrufezeichen vergessen... *ankopfschlag*
es ist ein Haken.
Wahrscheinlich hast du noch die RowSource gefüllt.
Gruß
Rudi

Bild

Betrifft: AW: Zugriff verweigert
von: bassi
Geschrieben am: 17.09.2015 14:48:25
Hallo Rudi,
danke für deine Nachricht und den Tipp.
Klar ist es ein Haken… Sehr peinlich.
So ist das wenn man das mit dem Handy macht und nicht richtig kontolliert.
Sorry.
Und gleich nochmal sorry. Ich glaub ich hab nun großen Mist gebastelt.
Du hast in sofern Recht, dass ich RowSource gefüllt habe. Aber nicht über Eigenschaft, sondern im Code.
Wenn ich den Code so einbaue wie er ist, kommt der Fehler :
Laufzeitfehler
Ungültiges Argument.
Also hab ich in meinem jugendlichen ;-) Leichtsinn "erkannt", dass dem doch fehlt wo er die Daten her holen soll.
Und so hab ich den - wahrscheinlich - großen Quatsch hier zusammengestrickt:

Private Sub UserForm_activate()
Dim  letzte As Long, i As Long
ListBox9.Clear
With Sheet("Übersicht")
letzte=.Cells(Rows. Count, 4).End(xlUp). Row
M.Druck. listbox9. RowSource =.Name & "!" &Range(ET12:ET" & letzte). Andreas
For i = 1 To letzte
If. Cells(i,4)<>"" Then Listbox9.AddItem, Cells(i,4)
Next
End With
End Sub
Ich hab mich da wohl bei meiner Strickkunst etwas überschätzt.
Sorry
Viele Grüße
bassi

Bild

Betrifft: AW: Zugriff verweigert
von: bassi
Geschrieben am: 17.09.2015 14:49:19
Hallo Rudi,
danke für deine Nachricht und den Tipp.
Klar ist es ein Haken… Sehr peinlich.
So ist das wenn man das mit dem Handy macht und nicht richtig kontolliert.
Sorry.
Und gleich nochmal sorry. Ich glaub ich hab nun großen Mist gebastelt.
Du hast in sofern Recht, dass ich RowSource gefüllt habe. Aber nicht über Eigenschaft, sondern im Code.
Wenn ich den Code so einbaue wie er ist, kommt der Fehler :
Laufzeitfehler
Ungültiges Argument.
Also hab ich in meinem jugendlichen ;-) Leichtsinn "erkannt", dass dem doch fehlt wo er die Daten her holen soll.
Und so hab ich den - wahrscheinlich - großen Quatsch hier zusammengestrickt:

Private Sub UserForm_activate()
Dim  letzte As Long, i As Long
ListBox9.Clear
With Sheet("Übersicht")
letzte=.Cells(Rows. Count, 4).End(xlUp). Row
M.Druck. listbox9. RowSource =.Name & "!" &Range(ET12:ET" & letzte). Andreas
For i = 1 To letzte
If. Cells(i,4)<>"" Then Listbox9.AddItem, Cells(i,4)
Next
End With
End Sub
Ich hab mich da wohl bei meiner Strickkunst etwas überschätzt.
Sorry
Viele Grüße
bassi

Bild

Betrifft: AW: Zugriff verweigert
von: Rudi Maintaire
Geschrieben am: 17.09.2015 15:18:17
Hallo,
dann lass doch die Zuweisung der RowSource weg.

Private Sub UserForm_activate()
  Dim letzte As Long, i As Long
  Listbox9.Clear
  With Sheet("Übersicht")
    letzte = .Cells(Rows.Count, 4).End(xlUp).Row
    For i = 1 To letzte
      If .Cells(i, 4) <> "" Then Listbox9.AddItem Cells(i, 4)
    Next
  End With
End Sub

Gruß
Rudi

Bild

Betrifft: AW: Zugriff verweigert
von: bassi
Geschrieben am: 17.09.2015 16:45:20
Hallo Rudi, Gott du hast aber auch Geduld mit mir :)
Japp. Dann sind wir ja wieder beim Ursprung.
Jetzt kommt besagtes :
Laufzeitfehler '-2147024809 (80070057)
Ungültiges Argument
markiert wird der Bereich:
Listbox9. Additem, Cells (i,4)
hm… .

Bild

Betrifft: AW: Zugriff verweigert
von: Werner
Geschrieben am: 17.09.2015 18:00:22
Hallo,
wenn du die Code-Zeile so im Makro stehen hast wie in deinem Beitrag dann ist nach AddItem ein Komma da nicht hin gehört.
Gruß Werner

Bild

Betrifft: AW: Zugriff verweigert
von: bassi
Geschrieben am: 17.09.2015 18:53:32
Verflixt nochmal Werner hab Dank, du hast Recht.
Ich bin doch ein Dussel.
Aber ich häng immernoch in den Seilen.
Es soll doch nun erst an "ET12" aufgelistet werden.
Ich bräuchte noch nen kleinen Schubs… .
Viele Grüße
bassi

Bild

Betrifft: AW: Zugriff verweigert
von: bassi
Geschrieben am: 17.09.2015 19:10:34
For i = 12 To letzte
und
Cells (i,150)
bzw
Cells (i,"ET")
Haaaa… jetzt passt es :)
Hoffentlich… ;-)
Allerbesten Dank an Euch.
Viele Grüße und einen schönen Feierabend…
bassi

Bild

Betrifft: AW: Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 17.09.2015 19:46:38


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Listbox multiselect Häckchenfelder anpassen"