Я пытаюсь настроить функцию для Regex, которая возвращает cell.address
.Он работает на 99%, за исключением того, что он возвращает значение ячейки test
против местоположения ячейки, и я не могу это выяснить.
Отладка:
Там написано Object variable or with block variable not set
, еслиЯ Dim celladdr As Range
, но если я это закомментирую, то ошибка изменится на Object doesn't support this property or method
, и я смогу увидеть, что celladdr = test
.
Затем я попытался Set celladdr = Range(celladdr.Address)
и получил Object Required
.
Кто-нибудь может указать на ошибку?
Вот некоторый урезанный код: Обратите внимание, я жестко закодировал шаблон RegEx, так как эта функция работает, как и ожидалось, проблема, похоже, в функции RegExSearch
, но я могу добавить больше кода обратно при необходимости.
Public Sub TESTING()
Dim celladdr As Range
celladdr = RegExFunc("TEST")
ActiveSheet.celladdr.Select
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function RegExFunc(var) As Variant
RegExSearchPattern = RegExPattern(var)
RegExFunc = RegExSearch(RegExSearchPattern)
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function RegExPattern(my_string) As Variant
RegExPattern = "([a-z]{4})"
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function RegExSearch(strPattern) As Range
Dim regexp As Object
Dim rcell As Range, rng As Range
Dim strInput As String
Set regexp = CreateObject("vbscript.regexp")
Set rng = Range("A1:Z255")
For Each rcell In rng.Cells
If rcell <> "" Then
If strPattern <> "" Then
strInput = rcell.Value
With regexp
.Global = False
.MultiLine = False
.ignoreCase = True
.Pattern = strPattern
End With
If regexp.Test(strInput) Then
MsgBox rcell & " Matched in Cell" & rcell.Address
Set RegExSearch = Range(rcell.Address)
MsgBox RegExSearch
End If
End If
End If
Next
End Function