Excel 出现错误时跳到下一个

Excel 出现错误时跳到下一个,excel,vba,error-handling,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 我遇到的问题是,并非列中的所有文本都是相同

我试图从一列类似数据中获取两个单词之间的文本,到目前为止,我已经:

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 error resume next”。这是可行的,但它在有错误的单元格中重复。有什么简单的方法可以让它跳过单元格/保留空白,而不是创建一个副本吗?

以下是我的想法:

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
,这是一种很好的做法,因为它是整数的本机类型,可以容纳较大的值。我还创建了一个
工作表
变量,只是为了使它更灵活一点,并获得Intellisense。

在进行拆分之前测试两者是否存在。如果它们不存在,则单元格=”。是否有一个简单的命令来检查是否存在,或者我是否需要执行类似于循环字符串并查找单词的操作?我已经完成了。你能不能提交一个答案,这样我就可以选择它作为最佳答案?很高兴它成功了!我现在不能做,但稍后再试。