der folgende Code beantwortet Ihre Frage gestellt:
For xx = 2 To 15494
xword = Cells(s, m)
If xword <> "" Then
le = Len(xword)
On Error GoTo NextLine
sprd = Application.Find(",", xword) '' If I am getting Error
On Error GoTo 0
old_sprd = sprd
's = 1
Star = 1
Do While sprd <> 0
word = Mid(xword, Star, sprd - 1)
xword = Mid(xword, sprd + 1, le)
s = s + 1
Rows(s).Insert
Cells(s, m) = word
sprd = Application.Find(",", xword)
If IsError(sprd) Then sprd = 0
If sprd = 0 Then
s = s + 1
Rows(s).Insert
Cells(s, m) = xword
End If
le = Len(xword)
Loop
End If
NextLine:
s = s + 1 '' My Code supposed to directing divert in This line.
Next
Grundsätzlich gibt es drei Änderungen: (1) kurz vor den Application.Find
Befehl ausgeben gibt es eine Zeile VBA zu sagen, was im Fall eines Fehlers zu tun -->
sollte es gehen zu NextLine
. NewLine
ist wie ein Lesezeichen und kann einen beliebigen Namen haben. Sie müssen VBA nur mitteilen, wo sich dieses Lesezeichen befindet. Das ist die zweite Änderung in Ihrem Code: (2) Hinzufügen einer Zeile kurz vor s = s + 1
sagt VBA, dass dies das "Lesezeichen" ist, das NewLine
genannt wird. Die dritte Änderung besteht darin, VBA mitzuteilen, dieses "Lesezeichen" nur zu verwenden, wenn der Fehler in der Zeile Application.Find
auftritt. In allen anderen Fällen sollte VBA den Fehler nur an Sie (den Benutzer) zurückgeben. Also, (3) direkt nach der Linie Application.Find
die error trapping is being turned off again.
Dennoch wäre eine bessere Lösung zu verwenden sein InStr()
wie so:
For xx = 2 To 15494
xword = Cells(s, m)
If xword <> "" Then
le = Len(xword)
If InStr(1, xword, ",", vbTextCompare) Then
sprd = Application.Find(",", xword)
old_sprd = sprd
Star = 1
Do While sprd <> 0
word = Mid(xword, Star, sprd - 1)
xword = Mid(xword, sprd + 1, le)
s = s + 1
Rows(s).Insert
Cells(s, m) = word
sprd = Application.Find(",", xword)
If IsError(sprd) Then sprd = 0
If sprd = 0 Then
s = s + 1
Rows(s).Insert
Cells(s, m) = xword
End If
le = Len(xword)
Loop
End If
End If
s = s + 1 '' My Code supposed to directing divert in This line.
Next xx
Sie durchlaufen xx, aber es gibt keine Verwendung von xx in Ihrem Code? – Luuklag
Warum benutzen Sie nicht 'Instr' statt' Application.Find'? Es wird 0 zurückgegeben, wenn die Suchzeichenfolge nicht gefunden wird, und nicht ein Fehlerwert. – Rory