【发布时间】:2019-01-07 19:10:32
【问题描述】:
我在 EXCEL 2016 VBA 中的 WorksheetFunction.Power() 函数遇到了与此处讨论的有关 Fact() 函数的问题类似的问题:
https://www.excelforum.com/excel-general/468208-range-of-factorial-function.html
当我运行我的代码时,我收到以下错误消息:
对于大数字,Power() 函数不返回数字。这是电子表格中的快速演示:
但是,避免 Fact() 问题相对容易:我只是写了一个这样的条件语句:
If NTestvar < 170 Then
KS = WorksheetFunction.Fact(NTestvar)
Else
KS = 7.2574E+306
End If
然而,有这么多的基数/指数组合,这有点多维。我试过了,但仍然收到相同的消息:
If IsNumeric(WorksheetFunction.Power(NTestvar, NTestvar)) = True Then
KS_2 = 1 - ((2 / WorksheetFunction.Power(NTestvar, NTestvar))
Else
KS_2 = 1 - (2 / 1.79769313486232E+308)
End If
感谢任何帮助。
【问题讨论】:
-
感谢您的回复。是的,我在问我的问题之前阅读了那篇文章:这就是我使用数字 1.79769313486232E+308 的原因——我从那篇文章中得到的。不过,我的问题不是变量输入问题:我没有将结果存储在发生错误的语句中的变量中: If IsNumeric(WorksheetFunction.Power(NTestvar, NTestvar)) = True Then
-
是
KS_2声明为双精度? -
错误发生在 IF 语句 BEFORE KS_2 赋值语句。
-
我认为 IsNumeric 有一个限制。在对其进行测试时,
1.0e309会引发溢出错误,而1.0e308不会。
标签: excel vba function numbers