使用 RegExp 正则表达式的粗体文本

Bold text using RegExp Regular Expressions

我正在尝试使用 regEx 查找日期并在一个范围内的多个单元格的文本中将它们加粗,但似乎我没有使用正确的表达式来使用 regEx 加粗文本。除了粗体功能之外,下面的代码还在工作。我需要正则表达式,因为我需要以 yyyy-mm-dd 格式加粗所有日期。我知道下面的 regEx 表达式不适合执行此操作,但我打算在处理下一部分之前让粗体功能正常工作。

我检查了所有其他问题,他们都避免使用 regEx 加粗。

Sub Bold_a_date2()

Dim ws As Worksheets
Dim item As Variant
Dim arr As Variant
arr = Worksheets("Formatted").Range("M1:M1000")

Dim regEx As New RegExp
regEx.Global = True
regEx.Pattern = "202[0-9]"

Dim text As Variant
Dim mc As MatchCollection, row As Long
row = 1

  For Each text In arr
    
    If regEx.test(text) = True Then
    Set mc = regEx.Execute(text)
    
    Selection.Font.Bold = True
    Debug.Print text
        
    End If
    
row = row + 1

Next text


End Sub

如果你的数据是日期值,结果会很奇怪。如果数据是文本格式,可以按如下方式进行。

Sub Bold_a_date2()

Dim ws As Worksheets
Dim item As Variant
Dim arr As Range
Dim text As Range

Set arr = Worksheets("Formatted").Range("M1:M1000")
'Set arr = Worksheets("Formatted").Range("i1:i1000")

Dim regEx As New RegExp
regEx.Global = True
regEx.Pattern = "202[0-9]"


Dim mc As MatchCollection, row As Long
Dim m As Match
Dim s As Integer, l As Integer
    For Each text In arr
    
        If regEx.test(text) = True Then
            Set mc = regEx.Execute(text)
            For Each m In mc
                s = m.FirstIndex
                l = m.Length
                text.Characters(s + 1, l).Font.Bold = True
            Next m
            Debug.Print text
        End If
    Next text
End Sub

字符串与日期值

多例