运行 条件循环时如何跳过 13 错误(类型不匹配)?

How to skip a 13 error (type doesn't match) when running a loop with a conditional?

我有以下代码删除第 8 列等于 0 且第 4 列长度为 12 个字符的行:

Sub deletezeros()

Dim i As Integer
Dim isin As String
Dim valor As Long
Dim longitud As Long

Worksheets("2. Con.EMISION").Activate

For i = 200 To 1 Step -1

    isin = Cells(i, 4).Value
    longitud = Len(isin)
    valor = Cells(i, 8).Value

    If valor = 0 And longitud = 12 Then
        Rows(i & ":" & i).Delete
    End If

Next i

End Sub

问题是,当循环到达某一行时,valor 内容不适合长变量,然后我得到

13 error: Tpyes doesn't match

在这种情况下,有没有一种方法可以让循环跳过有条件的循环重复或其他方法来保持循环而不停止?

您可以使用 isNumeric 来检查它是否是一个数字。如果是returnsTrue,则跳过。否则你可以继续。

此外,我强烈建议您去掉工作表上的 .Activate,并声明您的工作表并改用该声明。

在下面查看您的代码修改:

Sub deletezeros()

    Dim i As Integer
    Dim isin As String
    Dim valor As Long
    Dim longitud As Long

    'Declare your worksheet
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("2. Con.EMISION")

    'Avoid using .Activate in lieu of using ws
    Worksheets("2. Con.EMISION").Activate

    'Use With ws (optional) for better code clarity
    With ws
        For i = 200 To 1 Step -1
            If IsNumeric(.Cells(i, 4)) = False Then
                isin = .Cells(i, 4).Value
                longitud = Len(isin)
                valor = .Cells(i, 8).Value

                If valor = 0 And longitud = 12 Then
                    .Rows(i & ":" & i).Delete
                End If
            End If
        Next i
    End With
End Sub