Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удалить все что между знаками < и > - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удалить все что между знаками < и >
virus555 Дата: Суббота, 17.05.2014, 22:41 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Мне нужна помощь допилить функцию:

[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) но там видимо все на выходных.
К сообщению приложен файл: 7618200.xlsm (21.9 Kb)


Сообщение отредактировал virus555 - Суббота, 17.05.2014, 22:49
 
Ответить
СообщениеМне нужна помощь допилить функцию:

[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
Дата добавления - 17.05.2014 в 22:41
virus555 Дата: Воскресенье, 18.05.2014, 00:26 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В общем нашел такой код, который выполняет мою задачу:

[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

         n = n + 1
     Loop

     StripTags = text
End Function
[/vba]

Автор - virus555
Дата добавления - 18.05.2014 в 00:26
tsap Дата: Воскресенье, 18.05.2014, 14:21 | Сообщение № 3
Группа: Проверенные
Ранг: Участник
Сообщений: 60
Репутация: 6 ±
Замечаний: 0% ±

2013
Вариант на регулярных выражениях

[vba]
Код

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

End Function
[/vba]
(взят отсюда:)[spoiler]http://stackoverflow.com/questions/16924311/remove-text-between-specific-tags-in-microsoft-excel




Сообщение отредактировал tsap - Воскресенье, 18.05.2014, 14:23
 
Ответить
СообщениеВариант на регулярных выражениях

[vba]
Код

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

End Function
[/vba]
(взят отсюда:)[spoiler]http://stackoverflow.com/questions/16924311/remove-text-between-specific-tags-in-microsoft-excel

Автор - tsap
Дата добавления - 18.05.2014 в 14:21
Alex_ST Дата: Понедельник, 19.05.2014, 10:36 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Ну ведь Вы же забыли присвоить значение самой функции МояФункция, вот и выполняется действие над аргументом, а не вывод значения в ячейку, куда эта UDF вписана
[vba]
Код
Function МояФункция(Arg1 As Range)
          МояФункция = Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
          ReplaceFormat:=False
End Function
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 19.05.2014, 10:37
 
Ответить
Сообщение
Эта ф-ция почему-то выводит результат в ячейку выбранную для Arg1, а надо в ту ячейку, в которой записана сама функция.
Ну ведь Вы же забыли присвоить значение самой функции МояФункция, вот и выполняется действие над аргументом, а не вывод значения в ячейку, куда эта UDF вписана
[vba]
Код
Function МояФункция(Arg1 As Range)
          МояФункция = Arg1.Replace What:="<*>", Replacement:="", LookAt:=xlPart, _
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
          ReplaceFormat:=False
End Function
[/vba]

Автор - Alex_ST
Дата добавления - 19.05.2014 в 10:36
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!