Vba 将单元格的值与公式一起使用将返回类型Missmatch
我在一个单元格(比如A1)中有一个Vba 将单元格的值与公式一起使用将返回类型Missmatch,vba,excel,Vba,Excel,我在一个单元格(比如A1)中有一个IFERROR公式,当出现错误时,该公式返回“”。因此,当发生错误时,单元格为“空白”。当我尝试使用该单元格的值时,例如通过执行单元格(1,1)=单元格(1,1).value+1,我会得到一个类型错误匹配错误。如果我删除了公式并将单元格留空,那么我就不会得到那个错误。有人知道为什么会发生这种情况吗?“+1不被VBA接受,因为一个是字符,一个是数字 您可以: 让IFERROR返回0而不是“”以避免类型不匹配 使用if语句检查“”: 将“”转换为0: 因为放入
IFERROR
公式,当出现错误时,该公式返回“”。因此,当发生错误时,单元格为“空白”。当我尝试使用该单元格的值时,例如通过执行单元格(1,1)=单元格(1,1).value+1
,我会得到一个类型错误匹配错误。如果我删除了公式并将单元格留空,那么我就不会得到那个错误。有人知道为什么会发生这种情况吗?“+1
不被VBA接受,因为一个是字符,一个是数字
您可以:
- 让
返回0而不是“”以避免类型不匹配IFERROR
- 使用
语句检查“”:if
- 将“”转换为0:
IFERROR
公式,空白单元格的值不是数字。因此,“+1
会导致类型不匹配。最好的方法是将0替换为“”。那么你就不会有这个问题了。如果我必须在公式中留下“”怎么办。是否有其他方法修复此问题?除了@ScottCraner注释外,还可以使用数字格式专门隐藏0。格式可以是0-0;"";@代码>。键中的“”来隐藏它。还有其他方法吗?比如把字符串转换成一个数字?如果单元格(1,1)=“”,那么单元格(1,1).值=0
-类似的东西?很好,这正是我的意思。谢谢!我不喜欢瓦尔,它会变成3410,不是吗?这可能不适用于欧洲十进制系统。使用CInt或Cdbl?@CodyGCInt(“”
和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