Microsoft Excel

Herbers Excel/VBA-Archiv

VBA zwei Spalten nach gegebenen Werten durchsuchen


Betrifft: VBA zwei Spalten nach gegebenen Werten durchsuchen
von: Sam
Geschrieben am: 18.12.2018 13:52:19

Hallo zusammen!
Ich habe da ein Problem bei dem ich mich immer wieder im Kreis drehe, und bräuchte mal die Schwarmintelligenz!
Folgendes:

Ich habe in einer Userform (unter anderem) eine TextBox9 in er ein Datum eingetragen wird und eine ComboBox2 aus der ein Produkt ausgewählt wird.
Durch Drücken von CommandButton1 soll folgendes ausgelöst werden:

- eine ANDERE Datei ("Datei x") wird geöffnet.
- Auf Tabellenblatt1, In Spalte A soll nach dem Datum aus TextBox1 gesucht werden.
- Ist das Datum vorhanden, soll abgeglichen werden, ob der Wert in der gleichen Zeile in Spalte B mit ComboBox2 übereinstimmt.
- Tut er dies soll die Zeile für weitere Aktionen unter „lngZeile“ gespeichert
Werden (bspw: If CheckBox21.Value = True Then: .Cells(lngZeile, 17).Value =
TextBox74.Value)
- Tut er dies NICHT, soll weiter nach einer anderen Übereinstimmung gesucht
werden. Wird keine weitere gefunden, soll in die erste freie Spalte beide Werte
neu eingetragen werden. (nun soll das Programm wieder zum Anfang
springen, so dass „lngZeile“ gesetzt wird.)
- Ist das Datum noch nicht vorhanden, sollen ebenfalls in die erste freie Spalte beide Werte neu eingetragen werden und das Programm wieder zum Anfang springen.

Folgenden Ansatz habe ich mir zusammen gebastelt, komme allerdings damit nicht weiter, da entweder „lngZeile“ als 0/nicht vorhanden erkannt wird, oder das Programm scheinbar in der Schleife festhängt und sich gar nichts mehr tut…

Unten mal mein Code… Vielleicht kann mir jemand von euch helfen?

Vielen Dank schon einmal vorab!

Gruß Sam

Private Sub CommandButton1_Click()

Workbooks.Open Filename:=\\Pfad\..\Datei x.xlsx

Dim rng As Range
Dim lngZeile As Long
        
Call GELabor
        
Workbooks("Datei x.xlsx").Close SaveChanges:=True
MsgBox ("Daten übertragen!")

End Sub


Sub GELabor()

Dim rngDate As Range
Dim datAdresse As String

With Workbooks("Datei x.xlsx").Sheets("Tabelle1")

Do
    Set rngDate = .Columns(1).Find(What:=TextBox9.Value, LookIn:=xlValues, LookAt:=xlPart)
    
    If rngDate Is Nothing Then
        .Range("a1").End(xlDown).Offset(1, 0) = TextBox9.Value
        .Range("b1").End(xlDown).Offset(1, 0) = ComboBox2.Value
        
    ElseIf Not rngDate Is Nothing Then
    
        datAdresse = rngDate.Address
        
        If rngDate.Offset(0, 1) = ComboBox2.Value Then
            lngZeile = rngDate.Row
            Exit Do
       
        Else

            Set rngDate = .Columns.FindNext(after:=rngDate)
            
            If rngDate.Address = datAdresse Then
                .Range("a1").End(xlDown).Offset(1, 0) = TextBox9.Value
                .Range("b1").End(xlDown).Offset(1, 0) = ComboBox2.Value
                
            ElseIf rngDate.Offset(0, 1) = ComboBox2.Value Then
                lngZeile = rngDate.Row
                Exit Do
            End If
        End If
    End If
Loop

(weitere Aktionen mit „lngZeile“ für die jeweilige Zeile)

End With

End Sub

  

Betrifft: AW: VBA zwei Spalten nach gegebenen Werten durchsuchen
von: Sam
Geschrieben am: 18.12.2018 16:01:03

Oder hat vielleicht jemand eine alternativen Lösungsansatz? Freue mich über jede Hilfe!


  

Betrifft: AW: VBA zwei Spalten nach gegebenen Werten durchsuchen
von: Rudi Maintaire
Geschrieben am: 18.12.2018 16:03:44

Hallo,
da ist der erste Fehler:

Set rngDate = .Columns(1).Find(What:=TextBox9.Value, LookIn:=xlValues, LookAt:=xlPart)

Eine TextBox enthält Text und kein Datum.
Versuchs mit
Set rngDate = .Columns(1).Find(What:=CDate(TextBox9.Value), LookIn:=xlValues, LookAt:=xlPart)

Gruß
Rudi


  

Betrifft: AW: VBA zwei Spalten nach gegebenen Werten durchsuchen
von: Sam
Geschrieben am: 18.12.2018 16:34:42

Hallo Rudi,

erst mal danke für deine Rückmeldung!
Zur Erklärung: Für meine Zwecke ist es irrelevant ob das Datum als Text oder als Datum behandelt wird.
In anderen Subs dieser Userform hat die Suche nur nach dem Datum (bzw. dem Text...) super funktioniert.

Was mir hier Probleme bereitet ist die Schleife die ich brauche um auch Spalte B abzufragen...
Da kommt das Programm nicht mehr raus.
(Ich habe allerdings deinen Vorschlag auch mal getestet - Problem besteht immer noch!)

Gruß Sam


  

Betrifft: Solange du hier nicht die Datei postest...
von: onur
Geschrieben am: 19.12.2018 17:27:55

Solange du hier nicht die Datei postest, wird dir wohl niemand helfen können!


  

Betrifft: AW: Solange du hier nicht die Datei postest...
von: Hajo_zi
Geschrieben am: 22.12.2018 13:24:05

dem kann man nur zustimmen.

GrußformelHomepage

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.