Vba: wert aus listbox in tabelle suchen

Hi Leute,

ich hab nen kleinen VBA Konflikt…

Ich habe eine Listbox mit den Daten aus einer Spalte der Tabelle2 gefüllt.
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

Moin, Uschi,

wozu soll das gut sein? Ich baue meine Listboxen so auf, dass ich die benötigten Werte darin mit Spaltenbreite=0 verstecke.

Es geht natürlich, indem Du den Satz selbst aus der Tabelle liest. Hier ein Beispiel (da lösche ich, aber das ist ja egal):

Dim element As Variant

 For Each element In Quellbox.ItemsSelected

 If vonGruppe " " Then
 teilnehmer = Quellbox.ItemData(element)
 DeleteStatement = DLeader & teilnehmer & Trailer

 DoCmd.RunSQL DeleteStatement
 End If
 Next element
 DoCmd.RunCommand acCmdSaveRecord

Oh jemine, was stellt der pre /pre denn hier an!

Gruß Ralf

hi Ralf,

danke für dein bemühen aber deinen quelltext raff ich gar nicht…
hab versucht ihn für mich anzupassen aber das krieg ich nicht hin.

ich hab übrigens vba6, falls es daran liegt.

wozu soll das gut sein? Ich baue meine Listboxen so auf, dass
ich die benötigten Werte darin mit Spaltenbreite=0 verstecke.

der benutzer soll durch die listbox eine auswahlmöglichkeit erhalten.
deswegen werden die daten aus der tabelle ausgelesen und in der listbox aufgelistet. der benutzer klickt dann auf ein element, was er bearbeiten möchte. dieses soll dann in der tabelle ausgewählt werden…
warum soll das ausgewählt werden?
Ich benötige dann die restliche zeile, die hinter dem einen (schlüssel)element steht. diese wird dann in eine andere tabelle kopiert. das ist so notwendig.

ich weiß jetzt aber nicht, wie ich vba sage, dass er das in der listbox angeklickte element nehmen soll und in der tabelle 2 aktivieren soll.

gruß uschi

Hi Uschi ^ Ralf,

danke für dein bemühen aber deinen quelltext raff ich gar
nicht…
hab versucht ihn für mich anzupassen aber das krieg ich nicht
hin.

mir gehts noch schlimmer, ich verstehe gleich euch beide kaum bis nicht :smile:

ich hab übrigens vba6, falls es daran liegt.

? Kannst du auch die Excelversion angeben?

In XL97, XL2000 usw. gibt es zwar eine innere Variable „VBA60“, die bei XL97 den Wert 0 hat, daher vermute ich XL97-Vba wurde aus VB5.0 gebastelt, höhere Excel-Versionen bzw. deren VBa wurde aus VB6.0 erstellt.

Und bei Ralfs Code glaube ich eh, daß nicht Vba sondern VB gemeint ist.

wozu soll das gut sein? Ich baue meine Listboxen so auf, dass
ich die benötigten Werte darin mit Spaltenbreite=0 verstecke.

? ich denke Uschi will da in der Listbox etwas auswählen, da ist das verstecken nicht förderlich :smile:

der benutzer soll durch die listbox eine auswahlmöglichkeit
erhalten.

sach ich ja.

deswegen werden die daten aus der tabelle ausgelesen und in
der listbox aufgelistet. der benutzer klickt dann auf ein
element, was er bearbeiten möchte. dieses soll dann in der
tabelle ausgewählt werden…
warum soll das ausgewählt werden?

Ich benötige dann die restliche zeile, die hinter dem einen
(schlüssel)element steht. diese wird dann in eine andere
tabelle kopiert. das ist so notwendig.

ich weiß jetzt aber nicht, wie ich vba sage, dass er das in
der listbox angeklickte element nehmen soll und in der tabelle
2 aktivieren soll.

Also aufgrund der Auswahl (ist Multiselect erlaubt?) wird eine oder mehr Zeile(n) aus Tab1 nach Tab2 kopiert und dort dann markiert?
Was ist wenn der Schlüssel schon in Tab2 existiert, ist das egal, also die Zeilen immer unter in tab2 anhängen?

Verwirrte Grüße
Reinhard

Moin, Reinhard,

in der Ursprungsfrage taucht eine Tabelle2 auf - von 2 Tabellen ist da keine Rede.

? ich denke Uschi will da in der Listbox etwas auswählen, da
ist das verstecken nicht förderlich :smile:

Meistens sieht der Anwender einen Begriff, der ihm etwas sagt, zB Name & Vorname. Mit der Personalnummer, die den Zugriff ermöglicht, fängt er nichts an, deshalb zeige ich sie ihm erst gar nicht.

Verwirrende Grüße :smile:
Ralf

Hallo Ralf,

in der Ursprungsfrage taucht eine Tabelle2 auf - von 2
Tabellen ist da keine Rede.

ups, ich ging von 2 Tabellenblättern in einer Mappe aus.

? ich denke Uschi will da in der Listbox etwas auswählen, da
ist das verstecken nicht förderlich :smile:

Meistens sieht der Anwender einen Begriff, der ihm etwas sagt,
zB Name & Vorname. Mit der Personalnummer, die den Zugriff
ermöglicht, fängt er nichts an, deshalb zeige ich sie ihm erst
gar nicht.

Alles klar, wenn die Tabelle in Blatt nicht für die Listbox optimiert (gibt ja auch mit Recht andere Prioritäten) aufgebaut ist, so stellst du ListFillrange auf „A1:M100“ und blendest die nicht für die Listboxauswahl wichtigen Spalten (Gehalt *ggg*) aus.

Okay, ich habe da was gebastelt, dummerweise hat die Kiste hier keinen USB Anschluß.

Gruß
Reinhard, der hier jetzt alles verstanden hat *glaubt*

Ich habe eine Listbox mit den Daten aus einer Spalte der
Tabelle2 gefüllt.
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.

Hi Uschi,
mal ein Ansatz, ohne die Features von Ralf :smile:
Du brauchst eine Listbox aus Steuelementtollbox im Blatt deren Listfillrange A1:A10 o.ä. ist.

Private Sub ListBox1\_MouseUp(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("Tabelle1")
Z1 = Application.WorksheetFunction.Match(ListBox1, ws1.Range("A:A"), 0)
ws1.Range("A1").Select
With Worksheets("Tabelle2")
 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

Gruß
Reinhard