【问题标题】:VBA sin() and cos() troubleVBA sin() 和 cos() 麻烦
【发布时间】:2014-02-23 17:24:15
【问题描述】:

我正在尝试制作一些 VBA 表单并计算一些简单的值,但我不明白为什么 VBA 无法识别 Sin() 和 Cos() 函数。例如:我写了 int() 并且 VBA 将它转换为 Int(),但它对 sin 和 cos 的作用不同。 此外,在我尝试编译我的代码之后

    Private Sub btn_exit_Click()
    Unload laborator_2
End Sub

Private Sub btn_start_Click()
    today.Caption = Date
    rnb_val.Caption = Int(Rnd * 90 + 1)
    sqrt_val.Caption = Sqr(rnb_val.Caption)
    si_val.Caption = sin(rnb_val.Caption * 3.14159 / 180)
    co_val.Caption = rnb_val.Caption * 3.1459 / 180
End Sub

我收到了这条消息:

Run-time error "424" Object required

我是 VBA 新手,很抱歉,如果我没有写下所有细节。谢谢。

【问题讨论】:

  • 在编辑器的即时窗口 (ctrl+G) 中输入?sin(1) 并按回车键,你得到结果了吗?如果不是,?math.sin(1)
  • 有一点你可以肯定,它不是 sin 函数。您指的是哪种控件?文本框?标签?并且错误在罪恶行中?
  • 使用WorksheetFunction.Sin
  • 附言。看起来你在最后一行有错字。你是说3.1459 还是3.14159
  • 您知道nb_val.Caption 是文本,需要转换为浮点数。对 pi 也使用一个全局变量,如 Public Const PI As Double = 3.14159265358979

标签: excel vba trigonometry


【解决方案1】:

sin & cos 不是 vba 内置的函数。但是,它们是内置在 excel 中的,可以通过 vba 的 $WorksheetFunction$ 对象作为 $WorksheetFunction.Sin$ 和 $WorksheetFunction.Cos$ 访问。您可以在电子表格中使用的任何功能都可以通过这种方式访问​​。

【讨论】:

  • sin/cos 内置在 VBA 中,它们与 round()、log() 等一起是 Math 命名空间的一部分
【解决方案2】:

检查您在表单上为标签指定的名称 - 它们必须与代码中的名称完全匹配。我通过命名 si_val 标签 sival 得到了同样的错误。

【讨论】: