我想在所有工作表中搜索日期,并在找到时将日期替换为“是”。
我有以下代码:
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循环。当我删除“ - ”时,日期将成为它找到的数字。但是,当存在破折号时,代码找不到任何拟合值,但这些值存在。
答案 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