运行 条件循环时如何跳过 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
我有以下代码删除第 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