将 div 0 错误更改为一个值(得到错误 13)vba excel
change div0 error into a value (getting error 13) vba excel
有些单元格有 div 0 错误,因为某些值尚未更新,所以这是我写的解决方法(尝试更改数组内的值):
For a = 0 To cap
Hoja9.Cells(a + 4, 3).Value = Empty
array_visco(a, 0) = Hoja1.Range("C" & a + 2)
If Hoja1.Range("C" & a + 2) = CVErr(xlErrDiv0) Then array_visco(a, 0) = 0
' ^ ^ ^ ^ ^ ^ i get error 13 in this line ^ ^ ^ ^ ^ ^ ^ ^ ^
'menor quexxx
Select Case Hoja9.Cells(2, 3)
Case Is > 0
If array_visco(a, 0) <= Hoja9.Cells(2, 3) Then Hoja9.Cells(a + 4, 3) = array_visco(a, 0)
End Select
'mayor quexxxx
Select Case Hoja9.Cells(1, 3)
Case Is > 0
If array_visco(a, 0) >= Hoja9.Cells(1, 3) Then Hoja9.Cells(a + 4, 3) = array_visco(a, 0)
End Select
If Hoja9.Cells(a + 4, 3) = Empty Then Hoja9.Cells(a + 4, 3) = CVErr(xlErrNA)
Next
问题是我收到错误 13,我不知道为什么
解决方案:
感谢吉普车
更改此行
If Hoja1.Range("C" & a + 2) = CVErr(xlErrDiv0) Then array_visco(a, 0) = 0
到
Select Case Hoja1.Range("C" & (a + 2)).Text
Case Is = "#¡DIV/0!"
array_visco(a, 0) = 0
End Select
您在单元格上收到的错误 不是 #DIV/0!
错误;不是是一个#DIV/0!
(或任何其他)错误。
这是检查任何工作表错误的一种方法,然后是仅检查 #DIV/0!
错误的两种方法。
If IsError(Selection) Then
Debug.Print "iserror"
End If
If Selection.Text = "#DIV/0!" Then
Debug.Print "text found error"
End If
If Selection = CVErr(xlErrDiv0) Then
Debug.Print "xlErrDiv0"
End If
第三种方法可以在有错误时识别错误,但在没有错误时生成 Type mismatch
。不能将常规文本、日期或数字值与错误进行比较,正如不能将错误分配给字符串或整数一样。
第二种简单比较 Range.Text property 的方法可能是定位 #DIV/0!
特定错误的最佳方法,第一种方法将捕获任何 #DIV/0!
、#VALUE!
、#N/A
,等等错误。
有些单元格有 div 0 错误,因为某些值尚未更新,所以这是我写的解决方法(尝试更改数组内的值):
For a = 0 To cap
Hoja9.Cells(a + 4, 3).Value = Empty
array_visco(a, 0) = Hoja1.Range("C" & a + 2)
If Hoja1.Range("C" & a + 2) = CVErr(xlErrDiv0) Then array_visco(a, 0) = 0
' ^ ^ ^ ^ ^ ^ i get error 13 in this line ^ ^ ^ ^ ^ ^ ^ ^ ^
'menor quexxx
Select Case Hoja9.Cells(2, 3)
Case Is > 0
If array_visco(a, 0) <= Hoja9.Cells(2, 3) Then Hoja9.Cells(a + 4, 3) = array_visco(a, 0)
End Select
'mayor quexxxx
Select Case Hoja9.Cells(1, 3)
Case Is > 0
If array_visco(a, 0) >= Hoja9.Cells(1, 3) Then Hoja9.Cells(a + 4, 3) = array_visco(a, 0)
End Select
If Hoja9.Cells(a + 4, 3) = Empty Then Hoja9.Cells(a + 4, 3) = CVErr(xlErrNA)
Next
问题是我收到错误 13,我不知道为什么
解决方案:
感谢吉普车
更改此行
If Hoja1.Range("C" & a + 2) = CVErr(xlErrDiv0) Then array_visco(a, 0) = 0
到
Select Case Hoja1.Range("C" & (a + 2)).Text
Case Is = "#¡DIV/0!"
array_visco(a, 0) = 0
End Select
您在单元格上收到的错误 不是 #DIV/0!
错误;不是是一个#DIV/0!
(或任何其他)错误。
这是检查任何工作表错误的一种方法,然后是仅检查 #DIV/0!
错误的两种方法。
If IsError(Selection) Then
Debug.Print "iserror"
End If
If Selection.Text = "#DIV/0!" Then
Debug.Print "text found error"
End If
If Selection = CVErr(xlErrDiv0) Then
Debug.Print "xlErrDiv0"
End If
第三种方法可以在有错误时识别错误,但在没有错误时生成 Type mismatch
。不能将常规文本、日期或数字值与错误进行比较,正如不能将错误分配给字符串或整数一样。
第二种简单比较 Range.Text property 的方法可能是定位 #DIV/0!
特定错误的最佳方法,第一种方法将捕获任何 #DIV/0!
、#VALUE!
、#N/A
,等等错误。