出错时跳到下一个

时间:2014-03-07 14:47:44

标签: excel vba error-handling

我试图从一列相似数据中的两个单词之间得到一些文字,到目前为止我有:

Dim I As Integer

For I = 1 To 989

thisSTRING = Worksheets(1).Range("A" & I).Value
ref = Split(Split(thisSTRING, "RING ")(1), " EM")(0)
Worksheets(1).Range("B" & I).Value = ref

Next I

我遇到的问题是并非列中的所有文本都是相同的,当我在for循环中达到这样一个点时,我得到一条错误消息,因为没有“RING”或“EM”,以避免这种情况我尝试使用“on next resume next”。这有效,但它在有错误的单元格中重复。是否有任何简单的方法可以跳过单元格/将其留空而不是创建副本?

1 个答案:

答案 0 :(得分:0)

这就是我的想法:

Sub PrintSplit()
Dim ws As Excel.Worksheet
Dim i As Long
Dim thisSTRING As String
Dim ref As String

Set ws = ThisWorkbook.Worksheets(1)
For i = 1 To 989
    thisSTRING = ws.Range("A" & i).Value
    If InStr(thisSTRING, "RING ") > 0 And InStr(thisSTRING, " EM") > 0 Then
        ref = Split(Split(thisSTRING, "RING ")(1), " EM")(0)
        ws.Range("B" & i).Value = ref
    End If
Next i
End Sub

如果缺少任何一个字符串,则假定您需要空白。如果只想丢失两个字符串,那么逻辑就会有所不同,但类似。

请注意,我将i更改为Long这是一个很好的做法,因为它是整数的原生类型,并且会容纳更大的值。我还创建了一个worksheet变量,只是为了让它变得更灵活,并获得Intellisense。