【发布时间】:2014-04-03 21:00:19
【问题描述】:
我正在尝试将 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 行时尝试了一些其他变体,但似乎无法正确设置,我们将不胜感激
【问题讨论】:
-
您的查找出现错误;我改为:'Set rng = .Range("I2:I" & lrow).Find(What:=CDate(tdate))' 但这只找到今天匹配的日期 - 而不是更早......我会再看一些,但您可能需要另一种方法。