Vba 将单元格的值与公式一起使用将返回类型Missmatch

Vba 将单元格的值与公式一起使用将返回类型Missmatch,vba,excel,Vba,Excel,我在一个单元格(比如A1)中有一个IFERROR公式,当出现错误时,该公式返回“”。因此,当发生错误时,单元格为“空白”。当我尝试使用该单元格的值时,例如通过执行单元格(1,1)=单元格(1,1).value+1,我会得到一个类型错误匹配错误。如果我删除了公式并将单元格留空,那么我就不会得到那个错误。有人知道为什么会发生这种情况吗?“+1不被VBA接受,因为一个是字符,一个是数字 您可以: 让IFERROR返回0而不是“”以避免类型不匹配 使用if语句检查“”: 将“”转换为0: 因为放入

我在一个单元格(比如A1)中有一个
IFERROR
公式,当出现错误时,该公式返回“”。因此,当发生错误时,单元格为“空白”。当我尝试使用该单元格的值时,例如通过执行
单元格(1,1)=单元格(1,1).value+1
,我会得到一个类型错误匹配错误。如果我删除了公式并将单元格留空,那么我就不会得到那个错误。有人知道为什么会发生这种情况吗?

“+1
不被VBA接受,因为一个是字符,一个是数字

您可以:

  • IFERROR
    返回0而不是“”以避免类型不匹配
  • 使用
    if
    语句检查“”:

  • 将“”转换为0:


因为放入空字符串(字符串)的公式与默认为0的空白单元格之间存在差异。根据
IFERROR
公式,空白单元格的值不是数字。因此,
“+1
会导致类型不匹配。最好的方法是将0替换为“”。那么你就不会有这个问题了。如果我必须在公式中留下“”怎么办。是否有其他方法修复此问题?除了@ScottCraner注释外,还可以使用数字格式专门隐藏0。格式可以是
0-0;"";@。键中的“”来隐藏它。还有其他方法吗?比如把字符串转换成一个数字?
如果单元格(1,1)=“”,那么单元格(1,1).值=0
-类似的东西?很好,这正是我的意思。谢谢!我不喜欢瓦尔,它会变成3410,不是吗?这可能不适用于欧洲十进制系统。使用CInt或Cdbl?@CodyG
CInt(“”
CDbl(“”
也将给出类型不匹配错误
Val(“”
在处理诸如
“”
单元格之类的伪空白时工作正常。
If Cells(1,1) = "" Then 
     Cells(1,1) = 1
Elseif IsNumeric(Cells(1,1)) Then
     Cells(1,1) = Cells(1,1).Value + 1
End If
Cells(1,1) = Val(Cells(1,1).Value) + 1