我有一张工作表Data24h
,其中填充了按日期排序的数据。
我想为用户创建一个只显示特定日期数据的功能。
所以我创建了一个UserForm
,其中用户在textbox1
中输入了一个日期,然后我希望程序隐藏未包含在日期间隔中的每一行。
隐藏功能似乎有效,但条件不起作用。如果我今天的日期为YYMMDD作为输入,它仍将显示所有日期。
我是一般的编程和特别是VBA的新手,并且理解问题是否有点模糊,并且很可能代码看起来像#!!#@。
Private Sub CommandButton1_Click()
Datum = TextBox1.Value
Sheets("Data24h").Select
BeginRow = ""
EndRow = 100
ChkCol = 3
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value >= Datum Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else
Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
Columns("A").Select
Unload Me
Återställ1.Show
End Sub
所以我尝试使用Autofilter,但仍然无法管理。现在我在“last”自动过滤器行中收到错误1004。据我所知,我得到这个错误,因为autofilter认为范围是空的?
编辑:我做到了! Autofilter解决了它!我错过了:=在菲尔兹。感谢大家的努力。Private Sub CommandButton1_Click()
Dim Datum As Date
Dim Datum_l As Long
Sheets("Data24h").Select
Datum = CDate(Me.TextBox1.Value)
With Data24h
AutoFilterMode = False
Selection.Range("A2:A100").AutoFilter
Selection.Range("A2:A100").AutoFilter Field = 1, Criteria1:=">=" & Datum
End With
答案 0 :(得分:0)
首先关闭所有添加基准变量的声明(Dim Datum As Date)
下一步重写将日期设置为Datum = CDate(TextBox1.Value)
这只是为了让你入门。它使文本框中的值与单元格中的值之间的比较更好(假设单元格中的值是真实日期)
答案 1 :(得分:0)
尝试使用此代码,我添加CDate()
函数将数据转换为类型化日期可能会缓解此问题,但是yoy可能需要检查人们可以输入文本框的输入值。
Private Sub CommandButton1_Click()
Dim Datum As Date, _
BeginRow As Integer, _
EndRow As Double, _
ChkCol As Integer, _
Ws As Worksheet
Set Ws = Sheets("Data24h")
Datum = CDate(Me.TextBox1.Value)
BeginRow = 1
EndRow = Ws.Range(Rows.Count).End(xlUp).Row
ChkCol = 3
For RowCnt = BeginRow To EndRow
If CDate(Ws.Cells(RowCnt, ChkCol).Value) >= Datum Then
Ws.Rows(RowCnt).EntireRow.Hidden = True
Else
Ws.Rows(RowCnt).EntireRow.Hidden = False
End If
Next RowCnt
'Columns("A").Select
Unload Me
Återställ1.Show
End Sub