Fehlerbehandlung bei match
#1
Hilfe,

ich brauche eine Fehlerbehandlung für meinen Matchcode:

Code:
Dim rng As Range
Dim i, j As Integer
Dim Sakt As Variant


Sub DataSearchCopy()

ActiveCell.Select
rNr = ActiveCell.Row
WSname = Cells(rNr, 3).Value
 
   With Worksheets(WSname)
       Set rng = .Range(.Cells(3, 2), .Cells(140, 2))
   End With
   
   For i = 7 To 20
      Sakt = CStr(Sheets("Analyse").Cells(i + 44, 2).Value)
      For j = 2 To 6
          rng.Cells(Application.Match(Sakt, rng, 0), j).Copy Worksheets("Analyse").Cells(i + 44, j + 1)
      Next
   Next

End Sub

Ich habe schon einige Varianten ausprobiert, aber nix funktioniert.

Also, es wird nach einem String gesucht. Sakt ist dabei der Suchbegriff. Sollte dieser Suchbegriff in rng nicht vorhanden sein, würde mir eine msgBox mit dem Inhalt " Sakt  nicht gefunden" genügen, wobei Sakt schon der Suchbegriff sein sollte.

Im Voraus vielen Dank.
Top
#2
Moin!
Edit: Falsch gelesen, … Bitte warten … … Bitte warten … … Bitte warten … … Bitte warten …
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Das Warten hat ein Ende ;)
z.B. so:


Code:
Sub X()
Dim Ergebnis&
On Error Resume Next
Ergebnis = Application.Match("3", Split("2 3 4"), 0)
On Error GoTo 0
If Ergebnis > 0 Then
 MsgBox "Fundstelle: " & Ergebnis
Else
 MsgBox "Sorry, nix gefunden!"
End If
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Danke für die superschnelle Antwort.

Wäre schön, wenn Du mir noch erklärst wie und wo ich das Ganze in meinen Code einbaue. Ich hab's jetzt mal als Sub hinten drangehängt und es mit Call aufgerufen.

Einmal hinter der Zeile:

Code:
Sakt = CStr(Sheets("Analyse").Cells(i + 44, 2).Value)

und hinter
Code:
rng.Cells(Application.Match(Sakt, rng, 0), j).Copy Worksheets("Analyse").Cells(i + 44, j + 1)

aber beide Male gibt er die msgbox MsgBox "Fundstelle: 2"aus -  auch wenn kein Fehler vorhanden ist.
Top
#5
Hallöchen,

ich nehme an, dass das innerhalb der Schleife passiert. Eventuell wäre es von Vorteil, wenn Du am Anfang der Schleife Ergebnis = 0 setzt.
Eventuell wäre es noch besser, auf err zu prüfen.
If err then ... oder If err.number ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste