【问题标题】:Assigning userform textbox entry to a variable in VBA procedure将用户表单文本框条目分配给VBA过程中的变量
【发布时间】:2018-11-30 19:52:07
【问题描述】:

我的代码可以生成一个名为 MaterialForm 的用户表单,其中包含一个名为 txtGravity 的文本框。我的目标是获取 txtGravity 框中的条目,检查它以确定它是否为数字,然后将数值存储为变量以在我的程序中使用。

在我提供的代码中,数字检查按预期工作,并且只会传递整数。但是,从字符串到双精度的转换不起作用;并将值“0”存储在我的变量 EnteredGrav 中。

这里是代码

Private Sub Cmd_Save_Click()
    With txtGravity   'Check for non-numerical or empty values
    If IsNumeric(.Text) = False Or Len(.Text) = 0 Then
        .Text = ""
        MsgBox "It must be a numeric value"
        .SetFocus
        Exit Sub
    Else  'Convert the text (string) to the data type double
        EnteredGrav = CDbl(Trim(txtGravity.Value))
    End If
    End With
End Sub

感谢您提供的任何帮助!

【问题讨论】:

  • EnteredGrav 是如何声明的?你有Option Explicit 在值的顶部吗?可能你有语法错误。代码是如何触发的?
  • 它被声明为 Double。是的,在模块选项的顶部明确说明。是否需要在每个 sub 之前再次说明?抱歉,代码是如何触发的是什么意思?
  • Option Explicit 每个模块只能在模块顶部出现一次。这样就可以了。关于触发代码 - 你如何调用代码,它是如何启动的,你如何启动它?你能做一个minimal reproducible example,这足以让任何人复制和粘贴它并得到同样的错误吗?如果你在你的问题中提供这个,它会很快得到回答。
  • 我用我的子信息更新了代码,但我不确定如何提供代码来生成用户表单...如果我提供的内容还不够,那么感谢您的尝试帮助
  • 你仍然在你的 With 块内, EnteredGrav = CDbl(Trim(.Value)) 所以不需要指定 txtGravity

标签: vba variables textbox userform


【解决方案1】:

试试这 3 行:

Private Sub Cmd_Save_Click()

    Dim enteredGrav As Double
    enteredGrav = CDbl(Trim(Me.txtGravity.Value))
    MsgBox enteredGrav

End Sub

如果可行,请尝试从那里构建您的代码。可能您没有输入条件或没有正确声明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 2018-08-23
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2012-01-03
    相关资源
    最近更新 更多