首页 > 解决方案 > 检查单元格的值时类型不匹配

问题描述

我有这个代码

错误 13:类型不匹配

每当我在 C59 中输入或更改值时,C59 都会包含此公式=ROUNDUP(D59/C57,0)。我猜是因为变量不同但不知道如何解决,非常感谢任何帮助!

If Range("C59").Value = "0" Then
        Sheets("InvPL").Rows("78:79").EntireRow.Hidden = True
        Else
        Sheets("InvPL").Rows("78:79").EntireRow.Hidden = False
End If

标签: excelvba

解决方案


您需要确保C57不是0因为您正在除以它,在这种情况下C59将是#DIV/0!(错误)

.Value如果单元格包含错误,则无法检查单元格的属性。

首先检查单元格C59是否有错误:

If IsError(Worksheets("InvPL").Range("C59")) Then
  Msgbox "C59 contains an error. If C57=0 then it is a divide by zero error."
Else
  If Range("C59").Value = "0" Then
    Sheets("InvPL").Rows("78:79").EntireRow.Hidden = True
  Else
    Sheets("InvPL").Rows("78:79").EntireRow.Hidden = False
  End If
End If

或者更简洁的版本,使用With块,并使用Worksheets而不是Sheets因为工作表也可以引用图表对象:

  With Worksheets("InvPL")
    If IsError(.Range("C59")) Then
      Msgbox "C59 contains an error. If C57=0 then it is a divide by zero error."
    Else
      If .Range("C59").Value = "0" Then
        .Rows("78:79").EntireRow.Hidden = True
      Else
        .Rows("78:79").EntireRow.Hidden = False
      End If
    End If
  End With

如果您想在出现错误的情况下隐藏/取消隐藏这些行,您可以稍微更改逻辑。


C57另一种选择是更改公式以在is时返回零而不是错误0

=IF(C57=0,0,ROUNDUP(D59/C57,0))

推荐阅读