【发布时间】:2016-03-04 14:22:22
【问题描述】:
我尝试通过表单(期间)上的组合框让人们选择 2 个日期来搜索特定期间内的数据。所选日期用作在数据中搜索的选择标准。我通过这段代码来做:
Private Sub Datumok_Click()
Dim AA1 As String
Dim AA2 As String
Dim AA3 As String
Dim AA4 As String
Dim AA5 As String
Dim AA6 As String
Dim LastRow As Single
AA1 = Me.dag1.Value
AA2 = Me.maand1.Value
AA3 = Me.jaar1.Value
AA4 = Me.dag2.Value
AA5 = Me.maand2.Value
AA6 = Me.jaar2.Value
Application.ScreenUpdating = False
Sheets("Feuil2").Select
LastRow = Cells(Rows.Count, "a").End(xlUp).Row
Sheets("Start").Range("F7") = AA2 & "-" & AA1 & "-" & AA3
Sheets("Start").Range("G7") = AA5 & "-" & AA4 & "-" & AA6
Sheets("Start").Range("F8") = AA1 & "-" & AA2 & "-" & AA3
Sheets("Start").Range("G8") = AA4 & "-" & AA5 & "-" & AA6
Unload Periode
Sheets("Feuil2").Select
ActiveSheet.AutoFilterMode = False
Range(Cells(1, 1), Cells(LastRow, 10)).Select
Selection.AutoFilter
ActiveSheet.Range(Cells(2, 3), Cells(LastRow, 3)).AutoFilter Field:=3, ActiveSheet.Range(Cells(2, 3), Cells(LastRow, 3)).AutoFilter Field:=3, Criteria1:=">=" & Sheets("Start").Range("F8"), Operator:=xlAnd, Criteria2:="<=" & Sheets("Start").Range("G8")
Cells(1, 1).Select
Sheets("Start").Select
Cells(8, 5).Value = "Ok"
'Wel blad updaten
Application.ScreenUpdating = True
End Sub
可能有点讨厌的代码。选择被放到一个单元格中,这两个单元格用作选择标准。 有时 vba 或 Excel 不会接管日期,但是当我在过滤器中手动完成时,它可以工作。有谁知道如何改进代码,它总是有效的?
【问题讨论】:
-
请阅读How to Ask。你甚至没有在这篇文章中提出任何问题!
-
为什么在 F7、G7、F8 和 G8 中使用 2 种不同格式的 2 个日期?
-
好问题。这是向用户显示的英文日期(用于过滤器)和(荷兰文)日期的差异。
-
数据是数字和文本的混合体。第一列是行的标题(没有日期数据)。数据的日期放在第 3 行。我不太习惯这样过滤它。但它应该像这样占据整个部分(在我看来)。
-
行是这样划分的:[2] [06] [38726](Excel格式的时间)[09] [bla] [0,61] [101,2] [74,3 ] [ok] [ok] [1:05] [88] [21]([] 是一列)。