Как отфильтровать таблицу по типу значения в ячейке vba - PullRequest
0 голосов
/ 30 июня 2019

Я хочу отфильтровать таблицу на другом листе на основе значения одной ячейки из первого

Привет, во время подготовки нового отчета я столкнулся с такой проблемой: я попытался отфильтровать таблицу на другом листе на основе значения отдельной ячейкис первого.Код, который я написал, кажется работающим, но гарантированно показывает требуемые результаты, он выделяет только пустые строки.Если я гарантировал использование строки, поместите дату прямо в код, все выглядит хорошо, но, увы, это не то, что я ищу.Любой совет?

Sub Makro3()

    Dim ws As Worksheet
    Dim tbl As ListObject
    Dim mySearch As Variant
    Dim sht As Worksheet

    Set ws = Arkusz6
    Set sht = Arkusz1
    Set tbl = ws.ListObjects("ineffective")
    'Set tbl = ws.Range("A4:E31")
    mySearch = sht.Range("B2").Value

    'tbl.Range.AutoFilter Field:=4, Criteria1:="28.06.2019", Operator:=xlAnd
    'tbl.Range.AutoFilter Field:=4, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
    'tbl.Range.AutoFilter Field:=4, Criteria1:="*" & TextBox1.Text & "*", Operator:=xlFilterValue
    'tbl.Range.AutoFilter Field:=4, Criteria1:="=*" & mySearch & "*", Operator:=xlAnd

End Sub

1 Ответ

0 голосов
/ 01 июля 2019

Это пример того, как вы можете автоматически фильтровать таблицу по значению даты на основе значения ячейки на другом листе.В приведенном ниже примере даты указаны в столбце 2 таблицы.

Sub FilterTable()

    Dim ws1 As Worksheet 'sheet with the table
    Dim ws2 As Worksheet 'sheet with the search parameter
    Dim tbl As ListObject 'table object
    Dim mySearch As Variant 'or Dim as Date; cell with the search parameter

    Set ws1 = Worksheets("Data")
    Set ws2 = Worksheets("Filter Table by Type")
    Set tbl = ws1.ListObjects("t_Data")
    mySearch = ws2.Range("A1").Value
    Debug.Print "mySearch = " & mySearch


    With tbl.Range

        '~~> Show all records
        .AutoFilter Field:=2

        If IsDate(mySearch) Then

            .AutoFilter Field:=2, _
            Operator:=xlFilterValues, _
            Criteria1:=mySearch

        Else

            .AutoFilter Field:=2, _
            Operator:=xlFilterValues, _
            Criteria1:=DateSerial(Year(mySearch), Month(mySearch), Day(mySearch))

        End If

    End With


    '~~> Release the variables from memory
    Set ws1 = Nothing
    Set ws2 = Nothing
    Set tbl = Nothing
    mySearch = vbNull

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...