【发布时间】: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