Excel VBA圆形函数与工作表圆形函数
我试图将此Excel函数更改为VBA代码 胜过 VBA 对于低于0的情况,Excel和VBA都可以正常工作。然而,在VBA中,当值(val)大于sigfig(sigf)时,它会给我一个错误。例如,如果我想要3 sigfig的55481,它给出的是#值,而不是55500Excel VBA圆形函数与工作表圆形函数,excel,vba,Excel,Vba,我试图将此Excel函数更改为VBA代码 胜过 VBA 对于低于0的情况,Excel和VBA都可以正常工作。然而,在VBA中,当值(val)大于sigfig(sigf)时,它会给我一个错误。例如,如果我想要3 sigfig的55481,它给出的是#值,而不是55500 请帮忙 问题在于VBA的Round函数中的第二个参数不能为负,但在工作表函数的版本中可以为负 解决方案很简单,只需使用: sigfig = Application.WorksheetFunction.Round(val, sigf
请帮忙 问题在于VBA的
Round
函数中的第二个参数不能为负,但在工作表函数的版本中可以为负
解决方案很简单,只需使用:
sigfig = Application.WorksheetFunction.Round(val, sigf)
它将按预期工作
Application.WorksheetFunction使
Round
可用,这一点很重要。这正是因为VBA函数没有完全复制其功能。相比之下,Abs
只会复制该功能,因此无法从VBA调用该功能的工作表版本。。。。另外,Round
是银行家的舍入。。。所以,基本上是避开了,是的。
Public Function sigfig(val As Double, sigf As Integer) As Double
Dim var As Double
var = Abs(val)
var = Application.WorksheetFunction.Log10(var)
var = Int(var)
sigf = sigf - (1 + var)
sigfig = Round(val, sigf)
End Function
sigfig = Application.WorksheetFunction.Round(val, sigf)