我有一个文本框(在本例中为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”,则该值将不被验证并固定为标准格式,因为它不在我的条件列表中。
我永远无法在其中放置用户可能输入的所有排列。有没有办法使此不区分大小写?因此,无论用户输入哪种情况,它都会按照我的条件进行检查。
谢谢
答案 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