Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检查单元格值时类型不匹配_Excel_Vba - Fatal编程技术网

Excel 检查单元格值时类型不匹配

Excel 检查单元格值时类型不匹配,excel,vba,Excel,Vba,我有这个密码 错误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.H

我有这个密码

错误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

当您除以它时,您需要确保
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("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
0
时,更改公式以返回零而不是错误:

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

当您除以它时,您需要确保
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("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
0
时,更改公式以返回零而不是错误:

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

非常感谢你,先生!工作出色!非常感谢你,先生!工作出色!