Kniffeliges VBA-Thema

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

CoreoG

Grünschnabel
Liebe VBA-Tüftler!

Wahrscheinlich ist es ganz easy, nur ich bin ein VB-Anfänger und suche eine Lösung für folgende Herausforderung:

Ich möchte eine Tabelle auf übereinstimmende Werte durchsuchen:

Erster Wert stammt aus einem Userform-Textfeld. Zusätlich soll aber auch eine weitere Bedingung stammend aus der gleichen Userform-Listbox erfüllt werden. Wenn diese beiden Bedingungen erfüllt sind, dann sollen die Spalten b, c und d der entsprechenden Zeile kopiert und in ein neues Tabellenblatt eingefügt werden.

Leider fehlt mir ein guter Ansatz wie ich das angehen soll ... kann mir jemand weiterhelfen?
 

CoreoG

Grünschnabel
Hab noch keine Lösung gefunden ....

Zuerst hab ich die Idee vom Advanced Filter verfolgt, da hab ich aber das Thema, dass bei der Listbox auch eine Mehrfachauswahl möglich ist. Also wäre es wahrscheinlich eleganter, das über die Find-Funktion/Methode zu lösen .... aber wie?
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
Wieso kennzeichnest du dann den Thread als gelöst?

Was dein Problem betrifft: Finde die letzte Zeile in deinem Excel-Blatt, laufe durch dein Excel-Blatt und vergleiche die Textbox sowie den Listbox-Eintrag mit Zelle in Spalte A, falls Treffer, schreibe in Blatt2.
 

CoreoG

Grünschnabel
sorry, bin neu hier, das hab ich nicht gesehen, dass ich den Thread als gelöst gekennzeichnet hab.

Danke für die Antwort! Ich werde das mal versuchen umzusetzen! Kann sein, dass ich mich nochmal melde! ;-)
 

CoreoG

Grünschnabel
Komme einfach nicht weiter ...

Ich muss nämlich in meinem Tabellenblatt eine Spalte mit Namen "Klasse" (erste Zeile) finden.
Wenn gefunden, dann soll diese Spalte auf den Wert aus einer Userform-Textbox durchsucht werden.

Alle Reihen in denen dieser Wert gefunden wird, sollen auf weitere Suchbegriffe, die aus einer multiselect Listbox kommen, durchsucht werden.

Und jetzt kommts: Wenn keine weiteren Suchbegriffe ausgewählt wurden, dann sollen alle Zeilen mit Übereinstimmung aus Auswahl A in Tabellenblatt 2 kopiert werden, sonst nur jene mit beiden Treffern.

Hab mal versucht die erste Auswahl herzuleiten, aber es klappt ganz und gar nicht ....

Visual Basic:
Dim wks_Liste As Worksheet
Dim wks_Resultate As Worksheet
Set wks_Liste = Worksheets(wsn_Liste)
wks_Liste.Activate

Dim sParameter As Range
Dim firstAddress As String


Application.ScreenUpdating = False


Set sParameter = Worksheets(wsn_Liste).UsedRange.Find(What:=txbKlasse.Text, LookIn:=xlValues, lookat:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False)

If Not sParameter Is Nothing Then
        firstAddress = sParameter.Address
   
            Do
            Cells(sParameter.Row).Copy Destination:=wks_Resultate("B2")
            Set sParameter = FindNext(sParameter)
            Loop While Not sParameter Is Nothing And sParameter <> firstAddress
End If
   
Application.ScreenUpdating = True
 
Zuletzt bearbeitet von einem Moderator:

CoreoG

Grünschnabel
Über Find(What:=txbKlasse.Text ...) gebe ich an, wonach zuerst gesucht werden soll.

Die zweite Auswahl bereitet mir noch mehr kopfzerbrechen, weil da können aus der Listbox bis zu 10 Werte bzw. auch keiner ausgewählt werden. Wenn keiner ausgewählt ist, dann soll nur nach Auswahl 1 "gefiltert" werden.

Ich scheitere leider schon daran die Herangehensweise zu definieren. Nehme ich eine If-Anweisung eine Do-Loop Anweisung oder With bzw. wie kann ich das ganze kombinieren ....
 

Yaslaw

n/a
Moderator
Das habe ich verstranden. Aber wie gesagt, ich kenne die Forms nicht. Wie kommst du an die Werte aus der Listbox?
 

CoreoG

Grünschnabel
Visual Basic:
Dim cGroup As Range

    For i = 0 To LboGroup.ListCount - 1
        If LboGroup.Selected(i) = True Then _
            Set cGroup = Worksheets(wsn_Liste).UsedRange.Find(What:=LboGroup.Selected(i), LookIn:=xlValues, lookat:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
            , SearchFormat:=False)
            Next i
        End If



Das wäre die Idee wie ich an die Werte aus der Listbox komme...
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…