我循环遍历一个数组并检查单元格的值,然而有时候检查到的单元格值是 "#DIV/0!",这时我的宏就会停止运行。怎样才能解决这个问题?我已经尝试了两种方法但都没有取得积极的效果。
vRange = Range(Cells(ShiftRow, 4), Cells(ShiftRow - 3, TheLastColumn)).Value
Dim i As Integer
For i = 4 To TheLastColumn
Select Case vRange(4, i)
Case Is = "#DIV/0!"
vRange(1, i) = ""
Case Is = "1"
vRange(1, i) = vRange(3, i)
Case Is = "2"
vRange(1, i) = vRange(3, i - 1)
Case Is = "3"
vRange(1, i) = vRange(3, i - 2)
Case Is = "I"
vRange(1, i) = vRange(3, i)
Case Is = "II"
vRange(1, i) = vRange(3, i - 1)
Case Is = "III"
vRange(1, i) = vRange(3, i - 2)
Case Else
vRange(1, i) = ""
End Select
Next i
我也尝试了:
Case CVErr(xlErrDiv0)
。
vRange
的值吗?看起来你的循环应该是这样的:For i = 1 To UBound(vRange, 2)
。Case CVErr(xlErrDiv0)
应该是正确的方式,所以错误可能出现在其他地方。 - SlaiIf IsError(vRange(4, i)) then vRange(4, i) = ""
,会发生什么? - Rémii = 4 To TheLastColumn
,因为LBound(vRange) To UBound(vRange)
只循环了1到4。但实际上UBound(vRange, 2)
是可以的。然而,总体来说问题仍然存在。 @Rémi 它起作用了!谢谢! - maersCase CVErr(xlErrDiv0)
,因为你的Case Else
语句已经可以处理它了。 - Slai