首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel表单: VBA中的搜索工具我无法从数据表中搜索日期

Excel表单: VBA中的搜索工具我无法从数据表中搜索日期
EN

Stack Overflow用户
提问于 2020-12-01 16:52:18
回答 2查看 64关注 0票数 0

我在excel中有一个VBA表单,用户可以在其中选择一个搜索词,如日期,它在特定的日期列中搜索,但我不能使它工作。对于另一个非日期搜索词,它工作得很好。也许日期格式是我不确定的问题。

代码语言:javascript
复制
Sub Add_SearchColumn()

    frmForm.EnableEvents = False

    With frmForm.cmbSearchColumn
    
        .Clear
        
        .AddItem "All"
        
        .AddItem "Visit Date"
        .AddItem "Visitor Id"
        .AddItem "Visitor Name"
        .AddItem "Patient Name"
        .AddItem "Gender"
        .AddItem "Nationality"
        .AddItem "Time In"
        .AddItem "Time Out"
               
        .Value = "All"
       
    End With
    
    frmForm.EnableEvents = True
    
    frmForm.txtSearch.Value = ""
    frmForm.txtSearch.Enabled = False
    frmForm.cmdSearch.Enabled = False
End Sub
代码语言:javascript
复制
Sub SearchData()

    Application.ScreenUpdating = False
    
    Dim shDatabase As Worksheet ' Database sheet
    Dim shSearchData As Worksheet 'SearchData sheet
    
    Dim iColumn As Integer 'To hold the selected column number in Database sheet
    Dim iDatabaseRow As Long 'To store the last non-blank row number available in Database sheet
    Dim iSearchRow As Long 'To hold the last non-blank row number available in SearachData sheet
    
    Dim sColumn As String 'To store the column selection
    Dim sValue As String 'To hold the search text value
    
    
    Set shDatabase = ThisWorkbook.Sheets("Database")
    Set shSearchData = ThisWorkbook.Sheets("SearchData")
    
    
    iDatabaseRow = ThisWorkbook.Sheets("Database").Range("A" & Application.Rows.Count).End(xlUp).Row
    
    
    sColumn = frmForm.cmbSearchColumn.Value
    
    sValue = frmForm.txtSearch.Value
    
    
    iColumn = Application.WorksheetFunction.Match(sColumn, shDatabase.Range("A1:M1"), 0)
    
    'Remove filter from Database worksheet
    
    If shDatabase.FilterMode = True Then
    
        shDatabase.AutoFilterMode = False
    
    End If

    'Apply filter on Database worksheet
    
    If frmForm.cmbSearchColumn.Value = "Visitor Id" Then
    
        shDatabase.Range("A1:M" & iDatabaseRow).AutoFilter Field:=iColumn, Criteria1:=sValue
    
    Else
    
        shDatabase.Range("A1:M" & iDatabaseRow).AutoFilter Field:=iColumn, Criteria1:="*" & sValue & "*"
    
    End If
    
    If Application.WorksheetFunction.Subtotal(3, shDatabase.Range("C:C")) >= 2 Then
    
        'Code to remove the previous data from SearchData worksheet
        
        shSearchData.Cells.Clear
        
        shDatabase.AutoFilter.Range.Copy shSearchData.Range("A1")
        
        Application.CutCopyMode = False
        
        iSearchRow = shSearchData.Range("A" & Application.Rows.Count).End(xlUp).Row
        
        frmForm.lstDatabase.ColumnCount = 13
        
        frmForm.lstDatabase.ColumnWidths = "30, 60, 80, 40, 60, 80, 65, 60, 65, 60, 60, 60, 70"
        
        If iSearchRow > 1 Then
        
            frmForm.lstDatabase.RowSource = "SearchData!A2:M" & iSearchRow
            
            MsgBox "Records found."
        
        End If
        
        
    Else
    
       MsgBox "No record found."
    
    End If

    shDatabase.AutoFilterMode = False
    Application.ScreenUpdating = True
End Sub
EN

Stack Overflow用户

发布于 2020-12-01 20:56:32

我通过从贡献者那里获取一些提示来解决我的问题,下面是解决方案

代码语言:javascript
复制
sValue = frmForm.txtSearch.Value

 'My code below to check if the search value is date
If IsDate(sValue) Then
    'do nothing
Else
sValue = Format(frmForm.txtSearch.Value, "DD-MM-YYYY")
End If
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65087314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档