Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

UF, Listbox, Mehrfachausw., Values

UF, Listbox, Mehrfachausw., Values
14.07.2022 17:17:31
Kulo
Hallo Excelfreunde,
ich weiß ja noch nicht einmal, wie ich fragen soll:
Also: in einer Userform habe ich eine Listbox mit Mehrfachauswahl.
Jetzt möchte ich in einer Tabelle in Spalte 7 einen Eintrag vornehmen lassen, wenn ->
1. in Spalte 6 der Wert gleich dem Wert aus Textbox1 ist UND ->
2. der Wert in Spalte 3 einem Wert der Mehrfachauswahl in der Listbox1
entspricht.
Hier mal die Beispieldatei: https://www.herber.de/bbs/user/154159.xlsm
Vielleicht kann mir jemand helfen, wie ich die Mehrfachauswahl auswerten kann.
Würde mich sehr freuen, wenn jemand Zeit findet.
Viele Grüße
Kulo

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF, Listbox, Mehrfachausw., Values
14.07.2022 18:03:37
ralf_b
Eine Mehrfachauswahl fragt man mit if listbox1.selected (index) ab.
Das eigentliche Problem ist die Zuordnung der Listenwerte zu den Zellinhalten. Das passiert wenn man die Listboxen/Comboboxen von den Zellinhalten abkoppelt.
Siehe dein oDic Objekt.
Du hast zwar die Eindeutigen Inhalte aber keinen Bezug mehr zur Tabelle.
Zitat: 'hier fehlt mir die Idee:
Zitat: 'in jeder Zeile im Bereich Tabelle1, Zeile 2 bis zur letzten befüllten Zeile - das kannst du ohne Hilfe
Zitat: 'wenn Zelle in Spalte 6 = TextBox1.Text UND - das sicher auch
Zitat: 'wenn Zelle in Spalte 3 = einer der Auswahl aus Listbox1 DANN - hier for scheife über selected eigenschaft
Zitat: 'zelle in Spalte 7 = "gebucht" - easy wenn du die Zeile kennst.
Eine Idee wäre du erzeugst aus den selected Einträgen sowas wie oDic. Dann eine Schleife über deine Tabellenzeilen. darin die Bedingunfen abfragen für die Strassennamen fragst du dein oDic2 mittels exists ab ob die Strasse in der Liste ist.
https://www.oreilly.com/library/view/vb-vba/1565923588/1565923588_ch07-534-fm2xml.html
Anzeige
AW: UF, Listbox, Mehrfachausw., Values
14.07.2022 18:13:12
onur

"Jetzt möchte ich in einer Tabelle in Spalte 7 einen Eintrag vornehmen lassen, wenn
1. in Spalte 6 der Wert gleich dem Wert aus Textbox1 ist UND
2. der Wert in Spalte 3 einem Wert der Mehrfachauswahl in der Listbox1 " ?
Völlig unabhängig vom Namen?
@onur es gibt diese ID z.b. 67 owt
14.07.2022 18:16:06
ralf_b
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 18:25:14
onur
Das habe ich schon kapiert, aber es gibt 5 verschiedene Einträge mit 67 - die sind dann alle erledigt, nur weil die Strasse ausgewählt wurde ?
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 18:47:51
Kulo
Hallo Zusammen,
danke, dass Ihr euch mit meinem Problem beschäftigt.
Es gibt 5 Einträge mit der 67.
Mein Problem ist, dass ich auf eine Datei zugreifen muss, bei der jede Menge falschen Eingaben gemacht wurden.
Ich schaue mir alle 67-iger an. Dann kann ich anhand der (auch teilweise falsch geschriebenen) Strassennnamen herausfinden, wer den Eintrag "gebucht" erhalten soll.
Ich hab jetzt meinen Code für den CommandButton1 wie folgt ergänzt:

Dim i As Integer
Dim a() As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ReDim Preserve a(i)
a(i) = ListBox1.List(i, 0)
End If
Next i
in der Hoffnung, dass jetzt die in Listbox1 ausgewählten Strassennamen in dem Array "a" enthalten sind. Ist das richtig?
Jetzt könnte ich ja prüfen lassen, ob die Strasse in der jeweiligen Zelle eine Teilmenge aus dem Array ist - oder?
Anzeige
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 18:57:08
onur
Das beantwortet meine Frage keinesfalls! Wenn es dir nur um die falschen Strassennamen geht - wozu die Combobox mit den Namen?
Ausserdem - verschiedene Postleitzahlen aber ähnliche Strassennamen ergibt verschiedene Strassennamen.
Du brauchst doch eigentlich nur ein Makro, das alle fast identische Strassennamen (dafür wäre eigentlich eine eigene Spalte für Hausnummern sinnvoll) bei GLEICHER PLZ sucht und sie durch eine EINHEITLICHE Strassenbezeichnung ersetzt. Dann brauchst du nicht jedes mal zu entscheiden, wer jetzt das "gebucht" erhält.
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 19:01:02
onur
Abgesehen davon - zu deiner Idee mit dem Array - WOZU? Du hast sie doch schon in der Listbox (in Kombination mit .Selected) - wozu noch ein Array?
Anzeige
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 19:22:28
Kulo
Hallo Onur,
ich habe keine Ahnung von VBA und denke bestimmt um viele Ecken.
Ich weiß nicht, wie ich die ausgewählten Strassenamen als Variable speichern kann.
Mein Gedanke:
Schleife von Zeile 1 bis letzte beschriebene Zeile in Tabelle 1
wenn Spalte ID = TextBox1.Text und Spalte Strasse = Teilmenge von Array dann in Spalte Vermerk "gebucht"
Naja, es ist nicht so wichtig, Onur.
Vielen Dank trotzdem, dass Du mal reingeschaut hast.
Viele Grüße ud noch einen schönen Abend.
Kulo
AW: @onur es gibt diese ID z.b. 67 owt
14.07.2022 19:23:56
onur
Wenn du von mir Hilfe willst, solltest du auch mal meine anderen Fragen beantworten.....
Anzeige
zum 2ten @onur Warum so gereizt? owt
14.07.2022 19:48:47
ralf_b
AW: zum 2ten @onur Warum so gereizt? owt
14.07.2022 19:52:33
onur
Hääh? Wie kommst du auf gereizt? Ich mag es nur nicht, wenn ich dem Hilfesuchenden eine bzw mehrere Fragen stelle, DAMIT ich ihm helfen kann, und er sie einfach ignoriert oder nicht liest und den Thread mit den Worten "Vielen Dank trotzdem, dass Du mal reingeschaut hast." sozusagen abschliesst.
naja ...
14.07.2022 19:57:26
ralf_b
Vielleicht denkt er das du mit deinen Nachfragen nicht das Problem triffst.
Ich habe mich auch gefragt was das soll. Aber evtl. liegt hier nicht der Focus auf Richtigstellung der falschen Strassennamen.
AW: naja ...
14.07.2022 19:59:15
onur
Um DAS zu klären habe ich ihm ja die Fragen gestellt, denn seine Erklärungen widersprechen sich sogar teilweise.
Anzeige
AW: zum 2ten @onur Warum so gereizt? owt
14.07.2022 19:55:45
onur
Und ich dann mit dem halbfertigen Code auf Antworten warte......
Codeschnipsel....
14.07.2022 20:04:29
ralf_b
....helfen uns jetzt auch nicht weiter. Es geht hier bestimmt auch um Sichtbarkeit deines Array's.
Also einmal das Array erzeugen. das hast du schon . Ich würde ,wie schon erwähnt, ein Dictionary erzeugen nach dem gleichen Muster wie bei oDic.
Dann deine Schleife über die Tabelle und die Bedingungen zusammen setzen.
versuch mal das ..
14.07.2022 20:17:22
ralf_b

Private Sub CommandButton1_Click()
Dim oDic2 As Object
Set oDic2 = CreateObject("Scripting.Dictionary")
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
oDic2(ListBox1.List(i, 0)) = 0
End If
Next
With Sheets("Tabelle1")
For i = 2 To .Cells(Rows.Count, 6).End(xlUp).Row
If Cells(i, 6) = CDbl(TextBox1.Text) And oDic2.exists(Cells(i, 3).Value) Then
Cells(i, 7) = "gebucht"
End If
Next
End With
MsgBox "erledigt"
End Sub

Anzeige
AW: versuch mal das ..
14.07.2022 20:58:31
Yal
Nice!
ich hatte mal was ähnliches gedacht, aber mit einem String, die mit Instr durchgesucht wird:

Private Sub CommandButton1_Click()
Dim i As Integer
Dim RefListe As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then RefListe = RefListe & ";;" & ListBox1.List(i, 0)
Next
With Sheets("Tabelle1")
For i = 2 To .Cells(Rows.Count, 6).End(xlUp).Row
If Cells(i, 6) = CDbl(TextBox1.Text) And InStr(1, RefListe, (Cells(i, 3).Value), vbTextCompare) Then
Cells(i, 7) = "gebucht"
End If
Next
End With
MsgBox "erledigt"
End Sub
Aber falls sehr viele Einträge in Listbox1 ausgewählt wäre (ich habe die Ursprungsdatei nicht angeschaut), wäre die Lösung mit Dictionary schneller. Auch wenn um Mikrosekunden.
VG
Yal
Anzeige
onur, Ralf, Yal
14.07.2022 21:09:59
Kulo
Hallo Onur, hallo Ralf, hallo Yal,
ich wollte euch nicht verärgern.
Es ist für mich nur sehr schwer, Dinge zu beschreiben, wo ich nicht mal weiß, nach was ich fragen soll.
Ich habe meine Datei noch etwas verschlimmbessert und konnte zumindest das Array etwas ergründen.
Der Code von Dir, Ralf, trifft den Nagel auf den Kopf. Genau das Ergebnis, was ich erreichen wollte.
Ich war schon froh, dass ich eine Listbox ohne Duplikate zustande bekommen habe. Aber dass ich das auch auf die Mehrfachauswahl anwenden könnte, hatte ich nicht auf dem Schirm.
Jetzt hab ich etwas fürs Wochenende. Ich werde das mal aufdröseln und hoffe, dass mir das dann auch wieder einfällt, wenn ich mir eine ähnliche Aufgabe rausgesucht habe.
Also noch einmal vielen Dank für Eure Hilfe und die Zeit, die Ihr in mein Anliegen investiert habt.
Viele Grüße und noch einen schönen Abend
Kulo
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige