验证用户窗体(Excel VBA)上的文本框条目

时间:2018-06-24 14:02:09

标签: excel vba excel-vba

我有一个文本框(在本例中为textbox11),前端用户将需要以某种形式输入“半天”。

这是我的代码:

Private Sub TextBox11_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox11 = "half" Or Me.TextBox11 = "half day" Or Me.TextBox11 = "half-day" Or Me.TextBox11 = 0.5 Or Me.TextBox11 = "1/2" Then
Me.TextBox11 = "Half Day"
End If

End Sub

当我运行它时,它可以很好地工作-在我设定的条件下。但是,如果用户说输入“ hALf dAy”,则该值将不被验证并固定为标准格式,因为它不在我的条件列表中。

我永远无法在其中放置用户可能输入的所有排列。有没有办法使此不区分大小写?因此,无论用户输入哪种情况,它都会按照我的条件进行检查。

谢谢

2 个答案:

答案 0 :(得分:1)

LCase(或UCase)用户输入。通过将所有字符都转换为小写,然后与小写字符串进行比较,您实际上是不区分大小写的。这是一个例子。

Private Sub TextBox11_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Select Case Trim(LCase(Me.TextBox11.Text))
    Case "half", "half day", "half-day", "0.5", ".5", "1/2"
        Me.TextBox11.Text = "Half Day"
    Case Else
        ' do nothing?
        '
        '
End Select

但是,如果您真的想要验证,最好的选择是使用带有预定义值的ComboBox,而不是用户可以在其中键入任何垃圾的文本框。

答案 1 :(得分:0)

对于您的代码,您可以使用UCase

Private Sub TextBox11_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
dim inp as string
inp = ucase(Me.TextBox11.text)
If inp = "HALF" Or inp = "HALF DAY" Or inp = "HALF-DAY" Or Me.TextBox11 = 0.5 Or Me.TextBox11 = "1/2" Then
Me.TextBox11 = "Half Day"
End If

End Sub