访问vbscript正则表达式无效的过程调用或参数

时间:2013-04-16 15:41:55

标签: regex vba ms-access access-vba

我有一个带有备忘录字段的访问表,其中使用表单输入数据,在用户输入新数据之前,以(Apr-01)的形式添加日期。保存后,新数据将添加到顶部。然后我有一个如下函数进入该字段并获取最新数据,因此它将位于顶部:

示例数据

Apr-01 - new data
Mar-09 - old data
etc

获取最新信息的功能:

Public Function GetLatest(text As String) As String
    If (IsNull(text)) Then
        GetLatest = ""
    Else
        Set objRegExpr = New regexp

        objRegExpr.Pattern = "([A-Za-z]{3}-[0-9]{2})"
        objRegExpr.Global = True
        objRegExpr.IgnoreCase = True

        Set colMatches = objRegExpr.Execute(text)

        del = colMatches(1)
        txt = Split(text, del)
        GetLatest = txt(0)
    End If
End Function

在立即窗口中运行此函数,我得到了预期的结果,但是当我在查询中运行相同的函数时,我得到invalid procedure or argument指向此行del = colMatches(1)。我错过了什么?

1 个答案:

答案 0 :(得分:0)

要提取您捕获的内容,您希望第1项是索引0而不是1;

del = colMatches.Item(0)

或者避免使用regexp对象的替代方法;

if ucase$(text) like "[A-Z][A-Z][A-Z]-[0-9][0-9]*" then GetLatest = left$(text,6)