在整个工作簿中查找日期(变暗为字符串)

时间:2015-05-17 14:56:05

标签: excel vba excel-vba

我想在所有工作表中搜索日期,并在找到时将日期替换为“是”。

我有以下代码:

Sub Aftekenen()

Dim Sh As Worksheet
Dim Loc As Range
Dim Datum As String

Datum = "28-12-2015"

For Each Sh In ThisWorkbook.Worksheets
With Sh.UsedRange

    Set Loc = .Cells.Find(What:=Datum)

    If Not Loc Is Nothing Then
        Do Until Loc Is Nothing
            Loc.Value = "Yes"
            Set Loc = .FindNext(Loc)
        Loop
    End If
End With
Set Loc = Nothing
Next

End Sub

然而,代码运行,但它永远不会到达For each循环。当我删除“ - ”时,日期将成为它找到的数字。但是,当存在破折号时,代码找不到任何拟合值,但这些值存在。

1 个答案:

答案 0 :(得分:0)

尝试使用for each ... next方法,比较.Text(不是值,因为"28-12-2015"的单元格的值是42366),它运行良好,但有些用户有由于某些原因对这种方法有异议,对于我来说,编码更少,阅读更好

Sub Aftekenen()
    Dim Sh As Worksheet, Loc As Range, Datum As String
    Application.ScreenUpdating = 0
    Datum = "28-12-2015"
    For Each Sh In ThisWorkbook.Worksheets
        For Each Loc In Sh.UsedRange
            If Loc.Text = Datum Then Loc.Value = "Yes"
        Next Loc
    Next Sh
    Application.ScreenUpdating = 1
End Sub

更新

如果您更喜欢.find方法,则需要搜索日期才能将Application.FindFormat.NumberFormat切换为包含日期的单元格格式,因为.text中的日期为{{1} },但18-05-2015.value

以下是您更新的版本

42142