Function МояФункция(Arg1 As Range) Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Function
[/vba]
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Я начал решать это проблему в соседнем форуме (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=57238&%3BFID=1) но там видимо все на выходных.
Мне нужна помощь допилить функцию:
[vba]
Код
Function МояФункция(Arg1 As Range) Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Function
[/vba]
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Я начал решать это проблему в соседнем форуме (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=57238&%3BFID=1) но там видимо все на выходных.virus555
В общем нашел такой код, который выполняет мою задачу:
[vba]
Код
Function StripTags(ByVal html As String) As String Dim text As String Dim accumulating As Boolean Dim n As Integer Dim c As String
text = "" accumulating = True
n = 1 Do While n <= Len(html)
c = Mid(html, n, 1) If c = "<" Then accumulating = False ElseIf c = ">" Then accumulating = True Else If accumulating Then text = text & c End If End If
n = n + 1 Loop
StripTags = text End Function
[/vba]
В общем нашел такой код, который выполняет мою задачу:
[vba]
Код
Function StripTags(ByVal html As String) As String Dim text As String Dim accumulating As Boolean Dim n As Integer Dim c As String
text = "" accumulating = True
n = 1 Do While n <= Len(html)
c = Mid(html, n, 1) If c = "<" Then accumulating = False ElseIf c = ">" Then accumulating = True Else If accumulating Then text = text & c End If End If
Function МояФункция(Arg1 As Range) Dim s As String Dim RegEx As Object
s = Arg1.Value Set RegEx = CreateObject("vbscript.regexp") With RegEx .Global = True .IgnoreCase = True .MultiLine = True .Pattern = "<[^>]+>" End With
МояФункция = RegEx.Replace(s, "") Set RegEx = Nothing
Function МояФункция(Arg1 As Range) Dim s As String Dim RegEx As Object
s = Arg1.Value Set RegEx = CreateObject("vbscript.regexp") With RegEx .Global = True .IgnoreCase = True .MultiLine = True .Pattern = "<[^>]+>" End With
МояФункция = RegEx.Replace(s, "") Set RegEx = Nothing
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Ну ведь Вы же забыли присвоить значение самой функции МояФункция, вот и выполняется действие над аргументом, а не вывод значения в ячейку, куда эта UDF вписана [vba]
Код
Function МояФункция(Arg1 As Range) МояФункция = Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Function
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Ну ведь Вы же забыли присвоить значение самой функции МояФункция, вот и выполняется действие над аргументом, а не вывод значения в ячейку, куда эта UDF вписана [vba]
Код
Function МояФункция(Arg1 As Range) МояФункция = Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Function