繁体   English   中英

按文本框搜索并显示在列表框中

[英]Search by textbox and display in listbox

我正在尝试创建一个搜索,该搜索将在列表框中显示信息。

我正在尝试按名称和日期范围,按名称或仅按日期搜索。

我有代码,日期正确,但显示了所有名称。

Private Sub cmdFind_Click() 

    Dim DateRange As Range, rCl As Range, rng As Range, Dn As Range 
    Dim Date1 As Date, Date2 As Date 
    Dim iX As Integer 
    Dim strName As String 

    Set DateRange = Sheet2.Range("A1").CurrentRegion.Columns(4) 
    Set rng = Sheet2.Range("A1").CurrentRegion.Columns(4) 
    Me.ListBox1.Clear 

    strName = Me.txtName.Text 
    Date1 = CDate(Me.txtDate.Value) 
    Date2 = CDate(Me.EndDate.Value) 

    For Each rCl In DateRange.Cells 
        For Each Dn In rng.Cells 
            If rCl.Value >= Date1 And rCl.Value <= Date2 And strName Then

            ElseIf Dn.Value = strName Then 

                With Me.ListBox1 
                    .AddItem Sheet2.Cells(rCl.Row, 1) 
                    .List(.ListCount - 1, 1) = Sheet2.Cells(rCl.Row, 2) 
                    .List(.ListCount - 1, 2) = Sheet2.Cells(rCl.Row, 3) 
                    .List(.ListCount - 1, 3) = Sheet2.Cells(rCl.Row, 4) 
                    .List(.ListCount - 1, 4) = Sheet2.Cells(rCl.Row, 5) 
                    .List(.ListCount - 1, 5) = Format(Sheet2.Cells(rCl.Row, 6), "hh:mm:ss") 
                End With 
            End If 
        Next Dn 
    Next rCl 
End Sub

假设您仅在同一行中检查日期范围:删除For Each Dn in rng.CellsNext Dn For Each Dn in rng.Cells的第二个循环,并将以下条件替换为:

        If (rCl.Value >= Date1 And rCl.Value <= Date2) And rCl.Offset(0, -3).Value = strName Then

顺便说一句,使用数组比使用范围循环是更好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM