我正在尝试针对VBA中的多个条件测试文本框的值,并且不确定最佳方法。
用户应该输入产品ID,该ID可以是5种格式之一,也可以是某种长度,具体取决于该格式。 5个中的4个是字母数字(10),第5个是仅数字(13)。对于他们中的三个(类型A),我让它检查字符串的前几个字符,看看它们在前2个是公平游戏后是否匹配。对于B型(仅限数字),我为该一个设置了一个数字范围,并试图强制使用13位数字。对于类型C,它可以从LMN或LMNZZ开始,其余字符应为数字。
这是我到目前为止所拥有的......
Dim ALen, Blen, Clen as Integer
Dim val_UpperLimit,val_LowerLimit as Double
val_UpperLimit = 9999999999999#
val_LowerLimit = 100000000000# (Only 12 digits b/c # can start with 0)
ALen = "10"
BLen = "13"
CLen = "14"
'Check for Product Type B (Should be numeric value only. 13 digits long)
If IsNumeric(txtProduct.Value) _
And txtProduct.Value < val_UpperLimit _
And txtProduct.Value > val_LowerLimit _
And Len(txtProduct.Value) = BLen _
'Check for Product Type A (Product will start with A0, D0 or YY and be 10 characters long)
Or txtProduct.Value Like "A0*" _
And Len(txtProduct.Value) = ALen _
Or txtProduct.Value Like "D0*" _
And Len(txtProduct.Value) = ALen _
Or txtProduct.Value Like "YY*" _
And Len(txtProduct.Value) = ALen _
'Check for Product Type C (Product will start with LMN# or LMNZZ# and be a total of 14 characters/digits)
Or txtProduct.Value Like "LMN*" _
Or txtProduct.Value Like "LMNZZ*" _
And Len(txtProduct.Value) = CLen _
Then
txtProduct.Value = UCase(txtProduct.Value)
Else
MsgBox "Please enter a valid Product ID", vbOKOnly
txtProduct.SetFocus
Exit Sub
End If
非常感谢任何帮助!
答案 0 :(得分:0)
我可能会使用如下函数:
.remove()
因此,您可以将该函数存储在某个模块中,并像在代码中一样调用它。