Возвращение совпадения регулярного выражения в VBA (excel)

Я пытаюсь написать функцию для excel 2010, которая будет принимать ячейку неструктурированного текста, искать что-то, называемое значением sdi, и, если оно найдено, возвращать это число. . Значение sdi будет отображаться как sdi ####. Я хочу вернуть sdi и отдельные числа, следующие за ним, поэтому, если ячейка содержит «некоторый текст sdi 1234 еще один текст», функция вернет sdi 1234.

Это моя функция:

Function SdiTest(LookIn As String) As String
  Dim temp As String
  Dim STA As Object
  temp = ""

  Set SDI = CreateObject("VBScript.RegExp")
  SDI.IgnoreCase = True
  SDI.Pattern = "sdi [1-9]*"
  SDI.Global = True

  If SDI.Test(LookIn) Then
    temp = SDI.Execute(LookIn)
  End If

  SdiTest = temp
End Function

Если есть нет номера sdi, он никогда не входит в оператор if и послушно возвращает пустую строку. Если есть номер SDI, я получаю # ЗНАЧЕНИЕ!

Что мне не хватает?

Да, VBScript включен. Кроме того, мне неприятно использовать регулярное выражение в VBA, и мне трудно найти полезную информацию в Интернете. Приветствуются ссылки на хорошие онлайн-ресурсы.

Спасибо

45
задан Ken White 16 November 2011 в 03:58
поделиться