17.04.2021, 16:49 
		
	
	
		Hallo liebes Forum
Ich wäre um eure Hilfe sehr dankbar!
Mit untenstehendem Code suche ich jeden Wert im Sheet (shtLV_Import, Spalte Q) und schaue, ob dieser Wert in einem importierten Katalog (Spalte F) vorhanden ist.
Wenn ja, wird der dann in Spalte H befindliche Wert zurück in mein importiertes Sheet geschrieben.
Aber...
Ich muss diesen Code nun dahingehend abhändern, dass ich als Schleife für VERSCHIEDENE Bereiche des shtLV_Import auch VERSCHIEDENE Kataloge verwenden muss.
Beispiel:
Zeile 1 - 200 --> Katalog1
Zeile 201 - 500 --> Katalog2
Zeile 501 bis lastrow --> Katalog3
Die Bereiche bzw. Zeilen ändern sich natürlich je nach erhaltener Datei, ich werde diese aber händisch über eine Userform eintragen, ebenso den Katalog der jeweiligen Bereiche. Gelegentlich gibt es nur einen Bereich bzw. das ganze Sheet, gelegentlich 2-3 Bereiche mit eigenen Such-Katalogen.
Aber ich habe im moment keinen Ansatz, wie ich die Schleife einbauen muss...
Hat jemand von euch eine Idee?
Danke im Voraus und schöne Grüsse
Christian
	
	
	
	
	
Ich wäre um eure Hilfe sehr dankbar!
Mit untenstehendem Code suche ich jeden Wert im Sheet (shtLV_Import, Spalte Q) und schaue, ob dieser Wert in einem importierten Katalog (Spalte F) vorhanden ist.
Wenn ja, wird der dann in Spalte H befindliche Wert zurück in mein importiertes Sheet geschrieben.
Aber...
Ich muss diesen Code nun dahingehend abhändern, dass ich als Schleife für VERSCHIEDENE Bereiche des shtLV_Import auch VERSCHIEDENE Kataloge verwenden muss.
Beispiel:
Zeile 1 - 200 --> Katalog1
Zeile 201 - 500 --> Katalog2
Zeile 501 bis lastrow --> Katalog3
Die Bereiche bzw. Zeilen ändern sich natürlich je nach erhaltener Datei, ich werde diese aber händisch über eine Userform eintragen, ebenso den Katalog der jeweiligen Bereiche. Gelegentlich gibt es nur einen Bereich bzw. das ganze Sheet, gelegentlich 2-3 Bereiche mit eigenen Such-Katalogen.
Aber ich habe im moment keinen Ansatz, wie ich die Schleife einbauen muss...

Hat jemand von euch eine Idee?
Danke im Voraus und schöne Grüsse
Christian
Code:
Sub G_Flexibler_Sverweis()
Dim i As Long, letzteZeileKatalog As Long, lngFirstRow As Long
Dim strGefunden As String
Dim Suchwert As String
Dim shtKatalog As Worksheet
Dim shtLV_Import As Worksheet
Dim ZelleGefunden As Range
Dim Suchbereich As Range
Set shtKatalog = ThisWorkbook.Worksheets("Katalog") 'Kopie Katalog
Set shtLV_Import = ThisWorkbook.Worksheets("LV_Import")
'Suchbereich im import. Katalog festlegen
letzteZeileKatalog = shtKatalog.Range("C" & Rows.Count).End(xlUp).Row
Set Suchbereich = shtKatalog.Range("C3:C" & letzteZeileKatalog)
'SCHLEIFE:
For i = lngFirstRow To shtLV_Import.Range("Q" & Rows.Count).End(xlUp).Row
        'PRÜFEN OB WERT IN Q VORHANDEN:
        If shtLV_Import.Cells(i, 17).Value <> "" Then
            Suchwert = shtLV_Import.Range("Q" & i).Value 'Suchwert=Positionsnummer in Spalte 17 - Sheet LV_Import
             
            With shtKatalog
                Set ZelleGefunden = Suchbereich.Find(Suchwert, LookIn:=xlValues, LookAt:=xlWhole)
                    'NICHT GEFUNDEN
                    If ZelleGefunden Is Nothing Then
                           strGefunden = ""
                           With shtLV_Import
                           .Range("H" & i).Value = "Kein Wert"
                           .Range("H" & i).Font.Color = vbRed 'Rot
                           'Aussen:
                           .Range("R" & i).Value = "Kein Wert"
                           End With
                           
                    'GEFUNDEN
                    Else
                        'Gefundener Wert:
                        strGefunden = CDbl(.Range("F" & ZelleGefunden.Row).Value) 'Wert in Spalte F (F = Katalogpreise) der gefundenen (Katalog)Zeile
                        'In LV übertragen:
                        With shtLV_Import
                            .Range("H" & i).Value = strGefunden
                            .Range("H" & i).Font.Color = vbBlue 'Blau
                            .Cells(i, 9).Font.Color = vbBlue 'Blau
                            If IsError(Cells(i, 9)) Then Cells(i, 9).Value = ""
                        End With
                    Set ZelleGefunden = Nothing
                    End If
            End With
End Sub