如何使用VBA在Excel注释中查找和替换日期格式

时间:2018-05-07 00:08:02

标签: excel vba excel-vba excel-2016

我有包含评论的单元格,如下所示:

  

2017年5月26日:从1000减少到900

我想使用VBA查找和替换评论中的日期格式:

  

MMM DD,YYYY

  

YYYY / MM / DD

搜索几个小时后我能找到的最佳代码如下,但不幸的是,它只查找和替换带有文本的文本。我试图让它与格式一起工作,但我不能。

getcwd()

1 个答案:

答案 0 :(得分:3)

您可以尝试以下代码。

确保在使用之前复制您的作品。 正如@Kevin所说,成功将取决于数据输入过程中使用的格式变化。 您提供的代码将遍历工作簿中的所有工作表,这是您想要的吗?

尽管如此,如果不合适,请尝试回来。

Sub test_comment()

Dim Wsh As Worksheet
Dim Cmt As Comment

For Each Wsh In ActiveWorkbook.Sheets
    For Each Cmt In Wsh.Comments
        If InStr(1, Cmt.Text, ":") > 0 Then
            St1 = Cmt.Text
            St2 = Format(Left(St1, InStr(1, St1, ":") - 1), "YYYY/MM/DD")
            Cmt.Text St2 & Mid(St1, InStr(1, St1, ":"))
        End If
    Next Cmt
Next Wsh

End Sub

多行的新尝试:

Sub test_comment()

Dim Wsh As Worksheet
Dim Cmt As Comment

For Each Wsh In ActiveWorkbook.Sheets
    For Each Cmt In Wsh.Comments
        Arr1 = Split(Cmt.Text, Chr(10))
        For i = 0 To UBound(Arr1)
            If InStr(1, Arr1(i), ":") > 0 Then
                St1 = Arr1(i)
                St2 = Format(Left(St1, InStr(1, St1, ":") - 1), "YYYY/MM/DD")
                Arr1(i) = St2 & Mid(St1, InStr(1, St1, ":"))
                Cmt.Text Join(Arr1, Chr(10))
            End If
        Next i
    Next Cmt
Next Wsh

End Sub