【发布时间】:2018-04-11 20:07:55
【问题描述】:
我有两个宏,它们按日期过滤工作表列,然后删除不相关的列。
但是,它有很多错误,我需要一些帮助来纠正它。
这是第一个宏应该发生的事情:
1) 以日期格式 dd-mm-yyyy 从第 2 行到最后一行格式化 B 列 - 目前不会发生这种情况,并且在某些时候它会将格式应用于整个B列,包括数据后面的空单元格
2) 在 B 列(日期)上应用过滤器以显示除当天前一天以外的所有记录 - 正确了一半,因为它不包括过滤器中的当天。当我运行“删除”宏时,显示的单元格是当天和前一天,我应该只看到前一天。
Sub DateFilter()
Dim ws1 As Worksheet
Dim c As Range
Dim LastRow As Long
Dim Current_Date As Date
On Error Resume Next
Set ws1 = ActiveWorkbook.Sheets("Sheet")
LastRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
With ws1
For Each c In ActiveSheet.Range("B2:B" & LastRow).Cells
Current_Date = CDate(c)
c.Value = Current_Date
Next c
End With
x = CLng(Date)
ws1.UsedRange.AutoFilter Field:=2, Criteria1:="<" & x, Operator:=xlAnd, Criteria2:="<" & x - 1
End Sub
【问题讨论】:
-
这看起来像是 4 个独立的问题,或者至少不止一个?我会将每个帖子保留在一个问题上。在您的第一个中,“LastRow”是根据 A 列定义的——也许这就是问题所在。为什么不只是应用一种格式?
-
@SJR 抱歉,我已更新帖子并删除了问题的第二部分。我以后会尽量不要再这样做了。 :)
-
@SJR 关于你的第二个问题,B 列中的一些字段是 mm-dd-yyyy,有些是 yyyy-mm-dd,但我希望它们都是 dd-mm-年年。
-
好的,谢谢。请参阅@Zac 的回答,尽管根据这些信息可能需要进行一些修改。