VBA Listboxeintrag in Tabelle finden

Hi Leute,

ich hab nen kleinen VBA6 Konflikt… Ich habs ach schonmal im Excel-Forum gepostet, aber die Antwort hat mir nicht weiter geholfen. Vielleicht könnt ihr mir ja helfen?!

Ich habe eine Listbox. Die füllt sich mit den Daten aus einer Spalte der Tabelle2.
Jetzt wird eine Zeile in der Listbox ausgewählt.
Und diese ausgewählte Zeile soll dann in der Tabelle2 wieder gefunden bzw erkannt werden und aktiviert werden.

Das klingt eigentlich gar nicht schwer aber ich krieg es nicht hin die Zeile in der Tabelle zu finden…

Kann mir jemand helfen?

LG Uschi

Hi Uschi,

Kann mir jemand helfen?

Ja, mir würden sogar Namen einfallen. :smile:

Am Besten können die aber helfen, wenn Du Deinen bisherigen Code schon mal postest, eventuell muss ja nur eine Kleinigkeit geändert werden, dann geht das Helfen leicht und schnell.

Setze den Code in Pre-Tags:

 Dein Code 

Dann bleiben Einrückungen erhalten und der Code ist gut lesbar.

Gruß, Rainer
[MOD]

Hallo Rainer,

Kann mir jemand helfen?

Ja, mir würden sogar Namen einfallen. :smile:

Mir einer weniger :frowning:

Soll ich mich wiederholen mit dem Versuch einer Lösung, ich bot ihr Code an, den ich getestet habe und der funktionierte, es kam keine Antwort, abgesehen von dem neuen Beitrag hier und jezt:frowning:

/t/vba-wert-aus-listbox-in-tabelle-suchen/4476370

Hätte sie mal überhaupt ein Feedback (jaja, eins kam ja) gegeben, Ralf und ich hätten da gerne weitergeholfen, aber es kam ja nix.

Hätte sie gesagt, ich hab keinen Plan was ich mit dem Code soll, kein Akt, kann man erklären.
Hätte sie gesagt: „Dies das“, hätte man auf „dies das“ ggfs. eingehen können, usw. usw.

M.E. geht das was sie möchte nur mit Makros, solang sie mir nicht sagt was ihr an meinem Makro nicht passt, was nicht klappt, mache ich garnix *streik*

Klingt hart, aber letzlich wirksam

Am Besten können die aber helfen, wenn Du Deinen bisherigen
Code schon mal postest, eventuell muss ja nur eine Kleinigkeit
geändert werden, dann geht das Helfen leicht und schnell.

Setze den Code in Pre-Tags:

Dein Code

Dann bleiben Einrückungen erhalten und der Code ist gut
lesbar.

Ich benutze nur

Text

, für was bräuchte ich dieses prehtml noch zusätzlich?

Gruß
Reinhard

Hallo Reinhard,

Mir einer weniger :frowning:

Soll ich mich wiederholen mit dem Versuch einer Lösung, ich
bot ihr Code an, den ich getestet habe und der funktionierte,
es kam keine Antwort, abgesehen von dem neuen Beitrag hier und
jezt:frowning:

/t/vba-wert-aus-listbox-in-tabelle-suchen/4476370

Axo, dann kann ich auch nicht helfen.

Ich benutze nur

Text

, für was bräuchte ich dieses
prehtml noch zusätzlich?

Du gar nicht, die habe ich benutzt um die pre sichtbar schreiben zu können. :smile:

Gruß, Rainer

Moin, uschi,

Ich habe eine Listbox. Die füllt sich mit den Daten aus einer
Spalte der Tabelle2.
Jetzt wird eine Zeile in der Listbox ausgewählt.
Und diese ausgewählte Zeile soll dann in der Tabelle2 wieder
gefunden bzw erkannt werden und aktiviert werden.

Das klingt eigentlich gar nicht schwer

doch, das klingt schwer. Für mich ist zB nicht nachvollziehbar, was Du da treibst. Eine Zeile in einer Tabelle kann nicht aktiviert werden. Na ja, zumindest habe ich keinen Schimmer, wie das gehen soll, obwohl ich mit Listboxen jongliere.

Das einzige, was ich mit Listboxen mache, ist abzufragen, welche® Wert(e) ausgewählt wurde(n) und damit irgendwas anzustellen:

 For Each element In Listbox.ItemsSelected
 ' irchentwatt
 Ergebnis = Machwasmit(Listbox.ItemData(element))
 Next element

Gruß Ralf

Hi Leute,

Sorry wenn ich jemanden vor den Kopf gestoßen habe, war keine Asicht.
Ich hatte bei meinem alten Beitrag die Antworten nach meiner Antwort nicht gesehen. Deswegen habe ich ein neues Thema aufgemacht.
Mal sehen wie weit ich jetzt komme…

grüße uschi

Hi Reinhard

bei deinem Code komm ich auch nicht ganz raus, an welcher stelle was gemacht wird.
/t/vba-wert-aus-listbox-in-tabelle-suchen/4476370

Ich hab den jetzt einfach mal so kopiert und für mich angepasst. danach sieht er so aus:

Sub auswahlfinden(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Dim Z1 As Long, Z2 As Long, ws1 As Worksheet
Set ws1 = Worksheets("Rechnung")
Z1 = Application.WorksheetFunction.Match(ListBox1, ws1.Range("A:A"), 0)
ws1.Range("A1").Select
With Worksheets("Kundenliste")
 Z2 = IIf(.Cells(1, 1) = "", 1, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
 ws1.Rows(Z1).Copy Destination:=.Cells(Z2, 1)
End With

End Sub

wenn ich den so dann aufrufe:

auswahlfinden

kommt die fehlermeldung: Argument ist nicht optional.

Außerdem stellt sich mir die Frage, warum Z1 definiert wird (

Z1 = Application.WorksheetFunction.Match(ListBox1, ws1.Range("A:A"), 0)

) aber später nicht nochmal verwendet wird?

grüße uschi

Hallo Rainer,

also bisher habe ich folgendes gemacht:

Sub listboxfuellen()

LetzteLeereZelleSuchen

With UserForm2.ListBox1
 ' ListBox füllen
 .AddItem "Markierungen aufheben", 0 'ganz oben
 .AddItem "Alles markieren", 1 '2.stelle
 z = 2 'ab 3. stelle füllt schleife
 Set wks = Tabelle2

 For i = 2 To wks.Cells(introw, 1).End(xlUp).Row
 .AddItem
 .List(z, 0) = wks.Cells(i, 2)
 .List(z, 1) = wks.Cells(i, 1)
 z = z + 1

 Next i
 .SetFocus
End With

hier wird also die listbox mit den daten aus der tabell2 gefüllt.

Sub auswahlfinden()

End Sub

diese funktion wird durch buttonklick ausgelöst.
hier soll dann das in der listbox ausgewählte element in der tabelle2 wieder gefunden werden.

das hat folgenden grund: zu dem ausgewählten element gehören noch weitere daten. die sollen dann von tabelle2 in tabelle1 übertragen werden.
aber um sie von tabelle2 nach tabelle1 zu übertragen, muss ich ja 1. wissen welcher datensatz in der listbox ausgewählt wurde und 2. dn in der tabelle2 wiederfinden…

mfg uschi

Hi Uschi,

bei deinem Code komm ich auch nicht ganz raus, an welcher
stelle was gemacht wird.
/t/vba-wert-aus-listbox-in-tabelle-suchen/4476370

doch, kommt schon raus, es steht ja immer an der Stelle *smile*

Ich hab den jetzt einfach mal so kopiert und für mich
angepasst. danach sieht er so aus:

Sub auswahlfinden(ByVal Button As Integer, ByVal
Shift As Integer, ByVal X As Single, ByVal Y As Single)

wenn ich den so dann aufrufe:
auswahlfinden
kommt die fehlermeldung: Argument ist nicht optional.

Ist korrekt, wenns denn Sinn machen würde müßtest du ihn so aufrufen:

call auswahl(2,3,4,7)

Der Debugger bemängelt das Fehlen der Arumente „2,3,4,7“.

Aber sinnvoll ist ihn so zu benutzen:
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

und in das Modul der Userform mit der Listbox zu schreiben.

Außerdem stellt sich mir die Frage, warum Z1 definiert wird
(

Z1 = Application.WorksheetFunction.Match(ListBox1,
ws1.Range(„A:A“), 0)

) aber später nicht nochmal verwendet wird?

Z1 wird doch verwendet!?
ws1.Rows(Z1).Copy Destination:=.Cells(Z2, 1)

Gruß
Reinhard

Hey Reinhard,

Ist korrekt, wenns denn Sinn machen würde müßtest du ihn so
aufrufen:

call auswahl(2,3,4,7)

Gut, das Aufrufen funktioniert so :wink:

Aber sinnvoll ist ihn so zu benutzen:
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal
Shift As Integer, ByVal X As Single, ByVal Y As Single)
und in das Modul der Userform mit der Listbox zu schreiben.

Das hab ich dann probiert. Aber da bleibt er dann, weil „die Match-Funktion des Worksheet Objekts nicht zugeordnet werden kann“

Dann hab ichs mal so versucht:

Z1 = Application.WorksheetFunction.Match(UserForm2.ListBox1.Selected, ws1.Range("A:A"), 0)

Da sagt er aber „Dieses Argument ist nicht optional“.

Und kannste mir vielleicht erklären wozu dieser Teil ist?

With Worksheets("Kundenliste")
 Z2 = IIf(.Cells(1, 1) = "", 1, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
 ws1.Rows(Z1).Copy Destination:=.Cells(Z2, 1)
End With

Soweit ich das erkenn wird da der vorher gfundene Wert an die Stelle z2 kopiert, oder?
warum sagste aber „Z2 = IIf(.Cells(1, 1) = „“, 1,“? Eigentlich versteh ich die ganze Z2= Zeile nicht. Anscheinden wird da irgendwie Zeile für Zeile runter gezählt:?

MFG Uschi

*nur noch etwas Geduld bitte :wink:*