【问题标题】:Excel Userform textbox data validationExcel Userform 文本框数据验证
【发布时间】:2019-07-10 10:56:46
【问题描述】:

我正在创建一个 Excel 用户表单。我想验证两个文本框值。

if combobox1.text= 1 to 2yr then textbox2.value =>1 and <=2
combobox11.text= 3 to 10yr then textbox2.value =>3 and <=10
combobox1.text= 11 to 15yr then textbox2.value =>11 and <=15
combobox1.text= 16 to 20yr then textbox2.value =>16 and <=20
end if

【问题讨论】:

  • 嗨,您的语法看起来有问题……但为了帮助解决问题,最好澄清您要达到的目标。您是否希望根据textbox1.text 设置textbox2.value? ...或者您是否尝试验证两个文本框并执行其他操作? textbox1 中是否输入了一个数字?谢谢
  • 如果年龄组文本是 1 到 2 岁,那么年龄必须在 1 到 2 之间,如果值更大或更小,则显示消息“请输入正确的值”
  • 使用 KeyDown 事件可以更好地进行验证。

标签: excel vba userform


【解决方案1】:

一般语法需要如下所示:

If combobox1.Text = "1 - 2 yr" And (CDbl(textbox2.Value) < 1 Or CDbl(textbox2.Value) > 2) Then
    MsgBox ("Enter correct value")
ElseIf combobox1.Text = <another string> And <another range check> Then...
End If

注意事项:

  • combobox1.Text 值周围缺少引号:您需要将其与文本 (String) 进行比较。
  • textbox2.Value 需要转换为数字 (Double) 以检查范围。
  • 您需要考虑在输入中添加验证,以防该字段留空或输入其他非数字值。
  • 我还没有完成combobox1 的完整值集:您可以使用ElseIf 将它们链接在一起。
  • 一旦你有了基本的结构,你就可以通过写一个单独的Function来重构,例如命名为CheckRange,传递要检查的值和可接受的范围,而不是重复您的代码。
  • 作为一种精炼方式,如果您走到这一步,您可以从checkbox1.Text 值解析可接受的范围。不过,我最初不会担心这个。 hth

【讨论】:

  • 谢谢先生,它适用于除一个以外的所有标准,如果 combobox1.Text = "6 个月 - 1 年" 并且 (CDbl(textbox2.Value) 1)然后 MsgBox(“输入正确的值”),它显示错误消息。即使我输入正确的值,例如 = 0.7 , 0.8 , 0.9 ,0.10
  • 嗯,我不确定 - 您在评论中的代码看起来没问题。也许如果你编辑你的问题并显示你的完整代码,那可能会突出一些东西?另外,您是指错误消息还是 MsgBox?如果是实际的错误消息,那么您可能需要检查您的输入,例如没有尾随空格,因为这些可能会阻止CDbl 工作。最后,0.10 不在范围内:您输入的是小数,而不是月数。
  • 是的,先生,在代码中犯了一个拼写错误,这就是为什么它显示我的 msgbox。现在代码运行完美,
  • 最后你说“0.10 不在范围内:你输入的是小数,而不是月数。”那么我如何在上面的代码中使用 0.10 , 0.11 值
  • 您不能直接使用 0.10 来表示 10 个月……作为一个数字,它是十分之一。例如,十个月作为小数将是 10/12 = 0.83 ... 而 0.10 作为一年的小数部分是 1.2 个月!您可以使用两个文本框,一个用于年,一个用于月,并应用计算。
猜你喜欢
  • 2015-06-19
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多