Hallo,
ich habe in das Makro eine Zellauswahl eingefügt, von wo aus die Werte eingetragen werden. Es erfolgt hier aber keine Fehlerabfrage, wenn auf Abbrechen geklickt oder keine Zellladresse eingetragen wird!
Code:
Sub prcX2()
   Dim rngSuche As Range, rngAusgabe As Range
   Dim lngLastRow As Long, lngC As Long
   Dim strArt As String, strAdresse As String
  
   Set rngAusgabe = Application.InputBox("Von welcher Zelle aus soll gestartet werden?", "Zellauswahl", Type:=8)
   With Worksheets("Tabelle2")
      'die Daten aus dem Auswertebereich löschen
      On Error Resume Next
      rngAusgabe.Resize(rngAusgabe.End(xlDown).Row, 7).ClearContents
      On Error Goto 0
'      .Cells(2, 7).Resize(.Cells(2, 7).End(xlDown).Row - 1, 6).ClearContents
      'Schleife für den Suchwert und -/+ 10
      For lngC = -10 To 10
         'der Wert wird im Zellbereich E5:N16 gesucht
         Set rngSuche = Worksheets("Tabelle1").Range("E5:N16").Find(What:=.Range("B6") + lngC, LookIn:=xlValues, LookAt:=xlWhole)
         'wenn es einen Treffer gibt....
         If Not rngSuche Is Nothing Then
            '...wird die Adresse des ersten Treffers in einer Variablen gespeichert....
            
            
            strAdresse = rngSuche.Address
            Do
               If Worksheets("Tabelle1").Cells(4, rngSuche.Column).Value = .Cells(6, 4).Value And _
               (.Cells(6, 3).Value = "X" And rngSuche.Column < 10 Or .Cells(6, 3).Value = "Y" And rngSuche.Column > 9) Then
                  '... und die erste freie Zelle im Auswertebereich gesucht....
                  If Not IsEmpty(rngAusgabe) Then lngLastRow = .Cells(.Rows.Count, rngAusgabe.Column).End(xlUp).Row + 1 Else lngLastRow = rngAusgabe.Row
                  ' ... und in die Tabelle eingetragen
                  .Cells(lngLastRow, rngAusgabe.Column).Value = rngSuche.Value
                  .Cells(lngLastRow, rngAusgabe.Column).Offset(, 1).Value = IIf(rngSuche.Column < 10, "X", "Y")
                  .Cells(lngLastRow, rngAusgabe.Column).Offset(, 2).Value = Worksheets("Tabelle1").Cells(4, rngSuche.Column).Value
                  .Cells(lngLastRow, rngAusgabe.Column).Offset(, 3).Value = "Option" & IIf(rngSuche.Row < 11, "1", "2")
                  Select Case rngSuche.Row
                     Case 5 To 7, 11 To 13
                        strArt = "Art1"
                     Case Else
                        strArt = "Art2"
                  End Select
                  .Cells(lngLastRow, rngAusgabe.Column).Offset(, 4).Value = strArt
'                  .Cells(lngLastRow, 12).Value = .Cells(rngSuche.Row, 4).Value
                  'Suche nach einen weiteren Treffer
               End If
               Set rngSuche = Worksheets("Tabelle1").Range("E5:N16").FindNext(rngSuche)
            'und wiederhole es solange, bis der erste Treffer wieder gefunden wird
            Loop While rngSuche.Address <> strAdresse
         End If
      Next lngC
   End With
End Sub
Nachtrag: Fehlernotbehandlung eingebaut.