Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Combobox alle Namen anzeigen

Combobox alle Namen anzeigen
06.02.2022 15:05:51
wolfgang
Guten Tag Fachfrauen und Männer,
ich habe folgendes Makro für das suchen vom Namen.
Leider fehlt mir, wenn mehrere Namen mit selben Namen, werden diese nicht
aufgelistet.

Private Sub ComboBox1_Change()
Dim sBlattname  As String
sBlattname = ActiveSheet.Name
If ComboBox1.ListIndex > 0 Then
ListBox1.RowSource = sBlattname & "!B" & ComboBox1.ListIndex + 3 & ":G" & ComboBox1.ListIndex + 3
Else
End If
End Sub
Vielleicht hat jemand eine Idee ?
gr wolfgang

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox alle Namen anzeigen
06.02.2022 15:11:32
onur
Geht das auch auf deutsch : "Leider fehlt mir, wenn mehrere Namen mit selben Namen, werden diese nicht
aufgelistet." ?
AW: Combobox alle Namen anzeigen
06.02.2022 15:39:39
wolfgang
Hallo Onur,
sorry !
In DEUTSCH:
In der Datenbank Spalte C ab Zeile 3 sind die Namen gelistet.
Wenn ich die Combobox auf der Userform aktiviere, wird nur ein Name aufgelistet, obwohl zum Beispiel
Müller es mehrere Namen mit unterschiedlichen Adressen gibt.
gr wolfgang
AW: Combobox alle Namen anzeigen
06.02.2022 15:49:32
onur
Bist du dir eigentlich klar drüber, dass dein Code als Rowsource für die Listbox z.B. "B4:G4" setzt? Also EINE Zeile und SECHS Spalten ?
Ja weiß ich
06.02.2022 16:06:06
wolfgang
Hey Onur,
natürlich, es wird die kompl. Zeile in der Listbox angezeigt.
Deswegen ist es zweckmäßig, wenn mir z.B. alle Adressen von Müller angezeigt werden und ich
so die entsprechende Adresse auswählen kann.
gr. wolfgang
Anzeige
AW: Ja weiß ich
06.02.2022 16:09:20
onur
"alle Adressen von Müller angezeigt werden " - Mag ja sein, das du das willst, aber DAS ist nicht das, was du (?) programmiert hast.
AW: Combobox alle Namen anzeigen
06.02.2022 16:14:02
Oberschlumpf
Hi wolfgang
bist du DER wolfgang , der hier schon öfter etwas gefragt hat?
Wenn ja, dann weißt du doch, dass mit ner Bsp-Datei per Upload meist viel schneller geholfen werden kann, als "nur" mit Beschreibungen.
Wenn nein, zeig bitte per Upload eine Excel-Bsp-Datei mit ausreichend vielen Datenzeilen und deinem Code.
Ciao
Thorsten
AW: Combobox alle Namen anzeigen
06.02.2022 16:18:18
onur
Ausserdem sollte er Fragen RICHTIG durchlesen und beantworten - ich frage "Also EINE Zeile und SECHS Spalten ?" - er antwortet "natürlich, es wird die kompl. Zeile in der Listbox angezeigt.".
Anzeige
AW: Combobox alle Namen anzeigen
06.02.2022 16:21:19
Oberschlumpf
ICH weiß, WAS du meinst ;-)....aber Wolfgang is nich dumm! (is nich böse gemeint) - er hat nur noch nicht genug VBA-Fachwissen
Deswegen hatte ich auch nicht versucht, ihm zu erklären, was genau er noch nicht verstanden hat, und wieso sein Programmierversuch bisher nix bringt
(das hatte ich eigtl vorgehabt, aber mit Bsp-Datei wird alles besser...vielleicht....mal sehen....wer weiß :-) )
Ich glaube...
06.02.2022 18:02:39
wolfgang
Hallo zusammen,
ich glaube man muss Filtern um später Filter zurück zu setzen.
ODER ?
gr wolfgang
AW: Ich glaube...
06.02.2022 21:01:03
ralf_b
Hallo,
wenn ich dich richtig verstanden habe, möchtest du alle vorkommenden "Mustermann" anzeigen lassen. Dafür ist Rowsource nicht geeignet. Besser du durchsuchst mit einer Schleife deine Daten und füllst die Listbox entsprechend. Alternativ erst die Daten in ein Array einlesen, dann die Treffer in eine zweites Array schreiben und dieses das Komplet der Liste zuweisen. Das dürfte das schnellste sein.
Anzeige
AW: Ich glaube...
06.02.2022 21:20:11
Wolfgang
Guten Abend Ralf,
Du hast recht, könntest Du mir ein Beispiel reinsetzen,
habe doch vorhin die Musterdatei gesendet.
Gr. Wolfgang
AW: Ich glaube...
06.02.2022 23:46:41
ralf_b
scheinbar denkst du das lässt sich "mal eben so aus dem Ärmel schütteln". Irrtum. Es gibt meistens viele Lösungswege, die immer speziell für die Vorgaben entwickelt werden. Deine Musterdatei entspricht hoffentlich der realen Datenstruktur. Ich habe keine Lust ständig Anpassungen nachzuliefern, weil der Frager es nicht so genau genommen hat mit dem Muster.
https://www.herber.de/bbs/user/150940.xlsm
Anzeige
Toll Ralf !!! genau das !!! -)
07.02.2022 09:24:53
wolfgang
Guten Morgen Ralf,
genau das brauchte ich.
Herzlichen Dank !
Schönen Wochenanfang !
gr wolfgang
Bitte Ralf, brauch DICH nochmal !
07.02.2022 16:26:19
wolfgang
Hallo Ralf,
habe in der 1 Spalte Nummerierung rausgenommen, allerdings die Spalte nicht gelöscht.
Es werden beim einlesen alle Daten angezeigt, allerdings nicht wenn ich die Combobox aufrufe, da werden die
Strassen angezeigt, bei einer Auswahl auch nichts.
Ich Test schon seit 3h rum, keine Ahnung.

Private Sub Userform_initialize()
Dim iIndex  As Integer
Dim sBlattname  As String
Dim letzteA As Long, z As Long
Dim dic As Object, arr
With Worksheets("Datenbank")
ListBox1.ColumnCount = 7
ListBox1.ColumnWidths = "80;120;140;140;140;140;100"
ListBox1.Font.Size = 10
letzteA = .Cells(.Rows.Count, 2).End(xlUp).Row
ListBox1.List = .Range("B3:G" & letzteA).Value
arr = ListBox1.List
Set dic = CreateObject("Scripting.Dictionary")
For z = 1 To UBound(arr, 1)
dic(arr(z, 2)) = 0
Next
arr = WorksheetFunction.Transpose(dic.Keys)
ComboBox1.List = arr
ComboBox1.AddItem "Alle anzeigen", 0
ComboBox1.ListIndex = 0
Label5.Caption = .Range("a1")
End With
End Sub

Private Sub ComboBox1_Change()
Dim arr, arrData
Dim i      As Long, cnt As Long
Dim loletzteA As Long
Dim rng    As Range
With Worksheets("Datenbank")
loletzteA = .Cells(.Rows.Count, 2).End(xlUp).Row  'hier auf 2 (vorher1 )gesetzt da spalte 1nicht mehr genutzt wird
arr = .Range("B3:G" & loletzteA).Value
End With
With ListBox1
If ComboBox1.Value = "" Or ComboBox1.ListIndex = 0 Then .List = arr: Exit Sub
.RowSource = ""
.Clear
ReDim arrData(1 To UBound(arr), 1 To UBound(arr, 2))
For i = LBound(arr) To UBound(arr)
If ComboBox1 = arr(i, 2) Then
cnt = cnt + 1
arrData(cnt, 1) = arr(i, 1)
arrData(cnt, 2) = arr(i, 2)
arrData(cnt, 3) = arr(i, 3)
arrData(cnt, 4) = arr(i, 4)
arrData(cnt, 5) = arr(i, 5)
arrData(cnt, 6) = arr(i, 6)
End If
Next
If cnt = 0 Then Exit Sub
arrData = Application.Transpose(arrData)
ReDim Preserve arrData(1 To UBound(arr, 2), 1 To cnt)
If cnt = 1 Then .Column = arrData Else .List = Application.Transpose(arrData)
End With
End Sub
Bitte hilf mir, danke im Voraus,
gr wolfgang
Anzeige
AW: Bitte Ralf, brauch DICH nochmal !
07.02.2022 16:39:51
wolfgang
Hallo Ralf,
habe das mal geändert, stand vorher 2 drin !
Jetzt werden die Namen wieder angezeigt und bei Auswahl auch.
Ist das so Richtig ?
gr wolfgang
Set dic = CreateObject("Scripting.Dictionary")
For z = 1 To UBound(arr, 1)
dic(arr(z, 1)) = 0
Next
och menno, echt jetzt ? ..........
07.02.2022 17:26:57
ralf_b
Was gibts denn für ein Problem?
Hast du dir schon mal deine Variablen und Objekte im Lokalfenster angesehen?
Setze einen Haltepunkt und sieh dir dann im Lokalfenster die Werte an. Dann mußt du weniger fragen und noch weniger Zeit bis zur Antwort abwarten.
letzteA habe ich in Spalte A ermittelt weil dort laufende Nummern drin stehen. Die Wahrscheinlichkeit das eine Leerzelle vorkommt ist gering. Selbst wenn das Array nicht Spalte A berührt kann man deshalb die letzte Zeile ein A ermitteln. Es kommt nur drauf an das wirklich die letzte benutzte Zeile gefunden wird.
letzteA = .Cells(.Rows.Count, 2).End(xlUp).Row ob 1 (Splate A), oder 2 (Spalte B) ist egal solange Werte enthalten sind.
Verschiebt sich der Datenbereich, dann hat arr() natürlich auch einen anderen Inhalt, entsprechend dem Versatz. Das kannst du im Lokalfenster sehr deutlich sehen.
Anzeige
Danke für die Info ! -)
07.02.2022 18:01:19
wolfgang
AW: Combobox alle Namen anzeigen
06.02.2022 16:42:38
wolfgang
Hallo Onur,
hallo Thorsten,
natürlich habe ich schon mal was gefragt, jetzt schon was her.
Natürlich habe ich nicht das WISSEN wir die Fachleute im Forum, sonst könnte ich es doch allein !
Ich sende mal eine Musterdatei !
Darin habe ich durch Unterstützung alles erweitert und geändert, soweit ich es konnte !
Wenn man "Mustermann auswählt, sollen alle Mustermann in der Listbox erscheinen.
https://www.herber.de/bbs/user/150931.xlsm
gr wolfgang
AW: Combobox alle Namen anzeigen
07.02.2022 10:37:57
Alwin
Hallo Wolfgang,
wie wäre es, wenn sowohl das Sortieren als auch das Filtern nur in der Listbox stattfindet, als dies auf dem Datenblatt auszutragen. Man kann ja diverse Wege gehen, um ans Ziel zu kommen. Ich vermute mal, dass du dann auch sicherlich die Daten via Userform eintragen/ändern willst. Anbei ein Weg, wo das Sheet nur noch die Daten aufnimmt. Du solltest dir auf jeden Fall Gedanken über den Aufbau deiner Tabelle machen - weil etwas chaotisch.
Eine fortlaufende Nummer braucht man nicht unbedingt in der Tabelle. Es sei denn es handelt sich um Kundennummern oder Ähnliches. Dann Orte sind Orte, PLZ sind PLZ usw.
Anbei mal eine Lösung die sauber funktioniert ohne fortlaufende Nummer im Tabellenblatt. Diese werden zwecks Sortierens und Filtern nur in dem Userform erzeugt und nicht ins Arbeitsblatt geschrieben. Ach ja wichtig ist noch zu erwähnen, das ist ein Listview, welche du nachinstallieren musst – VBA Editor Rechtsklick auf Toolbox Steuerelemente Userform.
Ich hoffe es hilft dir.
https://www.herber.de/bbs/user/150954.xlsm
Gruß Uwe
Anzeige
Uwe Respekt ! Aber ich kann
07.02.2022 13:14:33
wolfgang
Hallo Uwe,
Respekt was Du da gemacht hast !!!
Ich kann leider VBA Editor Rechtsklick auf Toolbox nicht finden, wenn ich auf Toolbox mit rechter Maustaste
klicke, wird keine weitere Auswahlmöglichkeit angezeigt !
gr wolfgang
erledigt habe gefunden ! --))
07.02.2022 13:18:31
wolfgang
Hallo Uwe, kann aber nicht laden
07.02.2022 13:27:28
wolfgang
Hallo Uwe,
kann aber deine Frm_Listview nicht laden.
Fehlermeldung:
Laufzeitfehler 380
Eigenschaft Value konnte nicht gesetzt werden.
Ungültiger Eigenschaftswert.
gr wolfgang
AW: Hallo Uwe, kann aber nicht laden
07.02.2022 20:38:41
Alwin
Hallo Wolfgang,
das Problem hatte ich schon beim Einbau in deiner Datei. Mit dieser Datei stimmt irgendwas nicht mehr. Du machst bitte folgendes:
Lösche die Listview1 und zeichne eine neue Listview1.
Der Fehler müsste dann verschwunden sein. Was da mit deiner Datei im Argen ist, kann ich nicht sagen.
Gruß Uwe
Anzeige
teste mal
08.02.2022 09:49:49
Alwin
Hallo Wolfgang,
ich habe mal deine Daten in eine neue Datei gepackt und das Userform importiert. Schau mal ob das bei Dir funktioniert.
Sollte der Fehler 380 wieder auftreten, dann setze im Initialize der Userform mit F9 einen Haltepunkt und gehe mit F8 soweit bis der Fehler gelb markiert angezeigt wird. Schreibe diese Zeile Zeilennummer + Code in deinen Thread, damit ich da nach der möglichen Ursache schauen kann.
https://www.herber.de/bbs/user/150983.xlsm
Gruß Uwe
Perfekt Uwe ! Keine Fehlermeldung ! -)
08.02.2022 10:39:26
wolfgang
AW: teste mal
08.02.2022 11:00:52
Alwin
gerne.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige