Стиль всех форматов даты в строке в VBA

#excel #vba #string #text

#excel #vba #строка #текст

Вопрос:

У меня есть электронная таблица Excel, и в одном столбце есть различные комментарии для конкретной записи (строки). Каждый раз, когда пользователь добавляет новый комментарий, перед новым комментарием добавляется текущая дата («дд.мм.гггг»). Следующий пример представляет одну ячейку с различными комментариями:

 29.03.2019: newest comment
28.03.2019: an older comment
25.02.2019: more test
maybe with line break
12.12.2018: the first comment
  

Что я ищу, так это способ определить все части в значении ячейки (string), которые представляют дату (в формате dd.mm.yyy) и установить стиль шрифта на bold.

Таким образом, это должно выглядеть следующим образом:

29.03.2019: последний комментарий

28.03.2019: более старый комментарий

25.02.2019: дополнительный тест

возможно, с разрывом строки

12.12.2018: первый комментарий

Ответ №1:

Это должно сработать, но это немного излишне, особенно если ваш диапазон большой

 Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Position As Integer
Dim FontRange As Range
Dim cell As Range

Set FontRange = ActiveSheet.Range("A1:A100") ' set your range with comments

For Each cell In FontRange
    Position = InStr(cell.Value, ":")
    If Position > 0 Then
    With cell.Characters(Start:=1, Length:=Position).Font
        .FontStyle = "Bold"
    End With
    End If
Next cell

End Sub
  

Комментарии:

1. Привет, это работает, но только для первой даты в ячейке, а также выделяет текст жирным шрифтом, когда это не дата