隐藏基于日期输入的行

时间:2015-05-12 09:49:52

标签: excel vba

我有一张工作表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

2 个答案:

答案 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