Regex 多行文本框验证ms访问

Regex 多行文本框验证ms访问,regex,validation,ms-access,textbox,vba,Regex,Validation,Ms Access,Textbox,Vba,您好,我是Ms Access的新手,我可以利用您的一些专业知识提供建议: 我想验证多行文本框的文本,这样用户只能输入2个大写字母-7个数字-分号-新行。例如,文本框看起来是这样的(但是每个条目都在一个新行上,因为我有它,所以enter在文本框中生成一个新行) AB1234567; SE0001848; SE0019591; RE0010599; etc. 我认为这对于验证规则来说太复杂了。我也认为对于输入掩码来说太复杂了。我开始研究正则表达式来验证文本,但我不知道如何让代码对多行文本框中的每一

您好,我是Ms Access的新手,我可以利用您的一些专业知识提供建议:

我想验证多行文本框的文本,这样用户只能输入2个大写字母-7个数字-分号-新行。例如,文本框看起来是这样的(但是每个条目都在一个新行上,因为我有它,所以enter在文本框中生成一个新行)

AB1234567; SE0001848; SE0019591; RE0010599; etc.
我认为这对于验证规则来说太复杂了。我也认为对于输入掩码来说太复杂了。我开始研究正则表达式来验证文本,但我不知道如何让代码对多行文本框中的每一行进行求值,以便对整个文本框进行求值。我需要做某种循环吗


最后,我希望用户在错误地输入文本时得到一个消息框,该消息框会阻止条目被添加到记录中,并向用户解释他们需要修改条目以使其有效。

我认为您对正则表达式的理解是最简单的,但您需要添加一个引用(参见代码)

这应该满足您的需要(只需用文本控件替换Text14)

注意-我删除了CANCEL=TRUE,因为这会清除用户数据。最好的方法是确保文本框未绑定-如果有效,则在所有行验证RegExp时更新实际字段

Private子文本14\u更新前(取消为整数)
'需要参考“Microsoft VBScript正则表达式5.5”
“工具下|参考
'添加对“Microsoft VBScript正则表达式5.5”的引用'
“2个大写字母,后跟7位数字和”;”
Const VALID_LINE As String=“[A-Z]{2}[\d]{7};”
Dim regEx作为新的RegExp
在文本框中读取字符串形式的Dim strData
Dim varLines As Variant’使用此选项保存文本行
作为整数的Dim intNumLines
作为整数的Dim intLine
暗斯特林作为弦
用正则表达式
.Global=True
.Multiline=False
.IgnoreCase=False
.Pattern=有效线
以
'用文本框控件名称替换文本14
strData=Text14.Value'从文本框获取数据
'使用回车换行分隔符将数据拆分为行
varLines=Split(strData,vbCrLf)
'通过所有行检查数据问题
intNumLines=UBound(变线)
对于intLine=0到intNumLines
strLine=varLines(intLine)
如果不是正则表达式测试(strLine),则
MsgBox“行#的问题”和(intLine+1)
'取消-如果要清除数据
'取消=真
出口接头
如果结束
下一个
MsgBox“数据看起来不错:所有”&intNumLines&“行”
端接头

如果文本框应该绑定,代码也可以在更新前进入
表单
事件过程(然后使用
取消=True
),因此,如果文本无效,则无法保存记录。将尝试此操作并向其报告。请确保它可能真正起作用!不客气。您有了一个良好的开端,我们的问题经过深思熟虑,并提供了备选方案