Страницы: 1
RSS
VBA Извлечь даты из комментария к ячейке
 
Доброго времени суток. Имеется набор комментариев типа: "дата: 05.09.2020 начало: 05.09.2020 суббота окончание: 06.09.2020 суббота" . Необходимо в любую ячейку записать "начало: 05.09.2020 окончание: 06.09.2020".
Как можно дополнить код ниже приведенного макроса чтобы преобразовать комментарий?:
Код
Sub reestr()
Function GetComment(rCell As Range) As String
GetComment = rCell.Comment.Text
End Function
 
taxol, в VBA нет функции GetComment
строго по "примеру":
Код
Function GetComment(rCell As Range) As String
    t = rCell.Comment.Text
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "\d+\.\d+\.\d+"
        Set e = .Execute(t)
    End With
    GetComment = "начало: " & e(1) & " окончание: " & e(2)
End Function


тема: VBA Извлечь даты из комментария к ячейке
Изменено: buchlotnik - 05.09.2020 12:35:20
Соблюдение правил форума не освобождает от модераторского произвола
 
taxol, из какого названия задача понятна? Из Вашего - VBA функция "GetComment или из предложенного Михаилом - VBA Извлечь даты из комментария к ячейке?
Название поменял, но в следующий раз САМИ формулируйте название по задаче.
 
Большое спасибо. Все работает как часы. Позвольте всего один вопрос (изучаю регулярные выражения, каверкая Ваш макрос))). Если применить приведенный Вами макрос с измененным паттерном .Pattern = "\d+\.\d+\." к вышеприведенному комментарию "дата: 05.09.2020 начало: 05.09.2020 суббота окончание: 06.09.2020 суббота" , получается  результат: "начало: 05.09. окончание: 06.09."
Однако с комментарием "начало: 05.09.2020 окончание: 06.09.2020" выдает ошибку.
Заранее благодарю за содействие.
 
Цитата
Однако с комментарием "начало: 05.09.2020 окончание: 06.09.2020" выдает ошибку.
Код
Function GetComment(rCell As Range) As String
Dim t As String
Dim e1 As Object
Dim e2 As Object
    t = rCell.Comment.Text
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "начало: \d+\.\d+\.(\d+)?"
        Set e1 = .Execute(t)
        .Pattern = "окончание: \d+\.\d+\.(\d+)?"
        Set e2 = .Execute(t)
       GetComment = e1(0) & " " & e2(0)
    End With
End Function
 
Благодарю за помощь.
Страницы: 1
Наверх