将今天的日期设置为查找搜索VBA的截止日期

时间:2014-03-03 01:25:39

标签: vba date excel-vba find excel

我正在尝试设置rng来搜索工作表,以确定是否有任何日期或包括今天的日期,以及是否有没有移动到下一个工作表。

我有以下代码完全按照我想要收集“今日日期”之前或包含“宏按钮”所在的工作表的任何行,但是如果没有任何日期落入该标准将返回错误,如果其他人打开电子表格,我想删除此错误。

Private Sub CommandButton2_Click()

Dim ws As Worksheet, wsCtrl As Worksheet
Dim lrow As Long, rng As Range
Dim tdate As Date

tdate = Date

Set wsCtrl = ThisWorkbook.Sheets("Collate Info")

With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Collate Info" Then GoTo nextsheet
With ws
    lrow = .Range("I" & .Rows.Count).End(xlUp).Row
    .AutoFilterMode = False
    Set rng = .Range("I2:I" & lrow).Find(what:="<tdate")
    If rng Is Nothing Then GoTo nextsheet
    .Range("I2:I" & lrow).AutoFilter Field:=1, Criteria1:="<" & tdate
    .Range("I3:I" & lrow).SpecialCells(xlCellTypeVisible).EntireRow.Copy
    wsCtrl.Range("A" & wsCtrl.Rows.Count).End(xlUp).Offset(2, 0).PasteSpecial xlPasteValues
    .AutoFilterMode = False
    Application.CutCopyMode = False
End With
nextsheet:
Next

With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub

我已经尝试了一些其他的设置.Find线的变体,似乎无法正确,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是找到日期范围内的最小值,并与今天的日期进行比较。

If Application.WorksheetFunction.Min(.Range("I1:I" & lrow)) > DateValue(Date) Then GoTo nextsheet

希望这有助于=]