筛选另一个日期后的未来 2 周展望

Filtering the next 2 weeks lookahead after another date

提问人:M Muaz 提问时间:10/21/2022 最后编辑:M Muaz 更新时间:10/24/2022 访问量:62

问:

下面的代码显示了一个奇怪的错误,如屏幕截图所示enter image description here

我需要单击“确定”才能使过滤器正常工作

Sub LA2w()
Dim range_to_filter As Range
Set range_to_filter = Range("K6:S999")
Dim DD As Range
Set DD = Cells(1, 11)


range_to_filter.AutoFilter Field:=19, Criteria1:=Array("In Progress", "Not Started", "="), Operator:=xlFilterValues, Operator:=xlAnd
range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & DD.Value, Operator:=xlAnd, Criteria2:="<=" & DD.Value + 15


End Sub

@BigBen建议的修订版是

Sub LA4W()
Dim range_to_filter As Range
Set range_to_filter = Range("K6:S999")
Dim DD As Range
Set DD = Cells(1, 11)


range_to_filter.AutoFilter Field:=19, Criteria1:=Array("In Progress", "Not Started", "="), Operator:=xlFilterValues, Operator:=xlAnd
range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & Format$(DD.Value, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(DD.Value + 30, "mm/dd/yyyy")


End Sub

我把这张纸附在这里,以防你想看它。https://drive.google.com/file/d/1lMkZ6nwaDxMYS3gVUH5ypGsBFIWt3JfZ/view?usp=sharing

它有宏,令人惊讶的是,它在这个“test.xlsm”中运行良好 但是当我回到我的项目文件时,它说编译错误

enter image description here

Excel VBA

评论

0赞 BigBen 10/21/2022
Set用于对象变量。单元格不是对象。.Value
0赞 M Muaz 10/21/2022
谢谢@BigBen,我应该用什么来代替?字符串?
0赞 BigBen 10/24/2022
关于您的编辑:您的一个模块被命名为 。最好更改该名称,因为它会隐藏 Format 函数。如果无法更改名称,则在代码片段中,在 .FormatVBA.Format$
1赞 M Muaz 10/24/2022
@BigBen改了名字,它就像一个魅力。感谢您的 genuis 提示(至少对我来说:))

答:

2赞 BigBen 10/21/2022 #1

Set用于对象变量。因此,对于范围,然后在自动筛选条件中使用其值。Set DD

Dim DD As Range
Set DD = Cells(11, 1)

range_to_filter.AutoFilter _
   Field:=11, _
   Criteria1:=">=" & Format$(DD.Value, "mm/dd/yyyy"), _
   Operator:=xlAnd, _
   Criteria2:="<=" & Format$(DD.Value + 15, "mm/dd/yyyy")

另一个(可能更清晰的)选项:变量:Date

Dim DD As Date
DD = Cells(11, 1).Value

range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & DD, _
                        Operator:=xlAnd, _
                        Criteria2:="<=" & DD + 15

评论

0赞 M Muaz 10/21/2022
谢谢@BigBen,第一个工作。但有一个奇怪的“错误”或任何它的名字。应用了过滤器,但它并不是真正的过滤。我必须转到过滤器,单击“自定义过滤器”,在那里我可以看到我们应用于该范围的正确日期,我所要做的就是单击“确定”,然后应用过滤器。奇怪的是,我必须完成这些步骤才能单击确定
0赞 BigBen 10/21/2022
嗯。单元格 A11 中的值是手动输入的,是公式还是其他内容?
0赞 M Muaz 10/21/2022
是的,A11 中的日期是手动输入的
0赞 BigBen 10/21/2022
如果你使用 和 它有效吗?Criteria1:=">=" & Format$(DD.Value,"mm/dd/yyyy")Criteria2:="<=" & Format$(DD.Value + 15,"mm/dd/yyyy")
0赞 M Muaz 10/21/2022
它突出显示“Criteria2”并显示“预期:语句结束”