【发布时间】:2014-05-30 11:53:40
【问题描述】:
我要做的就是让一个单元格显示其他两个单元格之间的百分比增加/减少。当其中有数值时,该代码工作正常,但在按下“重置”按钮(将单元格值设置为“-”)后,即使我在代码中使用了“-”场景,它也不会工作:
Private Sub PerChange(ByVal burn1 As Range, burn2 As Range, change As Range)
If burn1.Value And burn2.Value = "-" Then
change.Value = "-"
Else
change.Value = (burn1.Value / burn2.Value) - 1
End If
End Sub
这是发生错误的粗线,即使两者的值都是“-”
我也尝试将粗线换成:
**If IsNumeric(burn1.value and burn2.value) = False**
尽管 IsNumeric 的全部意义在于检查非数字类型,但它仍然在这一行出现 TYPE 不匹配而停止!!
当我把头发扯掉时请指教......
【问题讨论】:
-
不应该是
burn1.Value = "-" And burn2.Value = "-"吗?If IsNumeric(burn1.value and burn2.value) = False也是有效的,但绝对不是你想要的。试试If Not IsNumeric(burn1.value) and Not IsNumeric(burn2.value) -
感谢您的帮助。我可以问一下吗,你说我的陈述是有效的,但不是我想要的。这是为什么?是不是因为 IsNumeric() 只能取一个值?
-
问题是
IsNumeric(burn1.value and burn2.value)表示您想知道表达式burn1.value and burn2.value是否为数值。对变量值使用And运算符容易出错且不是很直观,而且绝对不是您想要实现的目标。例如,如果其中一个单元格值是无法转换为数字的字符串(例如“abc”),则会出现错误。或者,如果您的单元格为空,则Empty and Empty实际上将返回零,这是一个数值。所以是的,在你可以预测的表达式上使用IsNumeric,比如单个变量 -
好吧,这是有道理的。再次感谢!
标签: excel runtime-error vba