2013-04-16 3 views
0

У меня есть таблица доступа с полем memo, где данные вводятся с использованием формы и до того, как пользователь вводит новые данные, дата добавляется в форме (Apr-01). После сохранения новые данные добавляются вверху. Тогда у меня есть функция, как следует, что попадает в поле и получает новые данные, так что бы на вершине:Доступ к регулярному выражению vbscript недействительный вызов или аргумент процедуры

Пример данных

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 

Запуск этой функции в окне Immediate, я получаю ожидаемые результаты, но когда я запускаю ту же функцию в запросе, я получаю invalid procedure or argument, указывая на эту строку del = colMatches(1). Что мне не хватает?

+0

Если вы проголосуете, пожалуйста, сделайте комментарий. – mpora

ответ

0

Чтобы извлечь то, что вы захватили, вы хотите 1-й элемент, который является индексом 0, но не 1;

del = colMatches.Item(0) 

Или альтернатива, избегающая объекта регулярного выражения;

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

После того, как вы попробовали свое предложение, ничего не возвращается. – mpora

Смежные вопросы