gpt4 book ai didi

vba - 如何在 VBA 的函数子例程中添加错误消息

转载 作者:行者123 更新时间:2023-12-02 17:42:33 24 4
gpt4 key购买 nike

我真是个刚学VBA的新生。我对如何在函数子例程中添加错误消息感到困惑。

这是我的问题,当我完成识别函数时,如何添加这样的错误消息:“请按升序输入值”?

例如:如果我输入 =triangle(3,2,1),其中数字按降序排列,我应该会收到一条错误消息。

这是我的代码:

Public Function triangular(Minimum As Single, mostlikelyvalue As Single, maximum As Single) As Single

Dim uniform As Single
Dim d As Single

Randomize
Application.Volatile

d = (mostlikelyvalue - Minimum) / (maximum - Minimum)
uniform = Rnd

If uniform <= d Then
triangular = Minimum + (maximum - Minimum) * Sqr(d * uniform)
Else
triangular = Minimum + (maximum - Minimum) * (1 - Sqr((1 - d) * (1 - uniform)))
End If

End Function

最佳答案

您可以直接在函数中测试不正确的顺序或无效条目并返回该结果,而不是使用错误处理

  • 更改了变量名称,以帮助避免错误以及与现有函数的混淆
  • 使用变体函数来保存结果或两个自定义错误消息之一
  • 您也可以使用 double 而不是单打

代码

Public Function triangular(dbMinimum As Double, dbMostlikelyvalue As Double, dbMaximum As Double)

Dim uniform As Double
Dim d As Double
Dim dbCnt As Double


dbCnt = dbMinimum * dbMostlikelyvalue * dbMaximum
If dbCnt = 0 Then
triangular = "at least one value is zero"
Exit Function
End If

If dbMostlikelyvalue > dbMaximum Or dbMinimum > dbMostlikelyvalue Then
triangular = "values not sorted"
Exit Function
End If

Randomize
Application.Volatile

d = (dbMostlikelyvalue - dbMinimum) / (dbMaximum - dbMinimum)
uniform = Rnd

If uniform <= d Then
triangular = dbMinimum + (dbMaximum - dbMinimum) * Sqr(d * uniform)
Else
triangular = dbMinimum + (dbMaximum - dbMinimum) * (1 - Sqr((1 - d) * (1 - uniform)))
End If

End Function

关于vba - 如何在 VBA 的函数子例程中添加错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com