Question: What would be difference between Microservice Patterns [Transaction Log Trailing](https://microservices.io/patterns/data/transaction-log-tailing.html) vs [Polling Publisher](https://microservices.io/patterns/data/polling-publisher.html).

Looking at listed example ([Eventuate Local](https://github.com/eventuate-local/eventuate-local/)) seems that both the patterns are based on trailing database logs and publishing to message broker.

Answer: 
just *plain* use of `Autofilter()`:

```
Private Sub Summary_Click()
    Dim EMPLID As String

    EMPLID = Application.InputBox("Enter Your Employee Number", "Employee Number")

    With Sheets("Tracking Data").Range("E:E")
        .AutoFilter field:=1, Criteria1:=EMPLID
        If WorksheetFunction.Subtotal(103, .Cells) = 1 Then ' if only header row filtered -> no match found
            MsgBox "Nothing found"
            .Parent.AutoFilterMode = False ' remove AutoFilter and show all data
        End If
    End With
    Unload Me
End Sub

```

BTW I'd suggest you some little enhancements:

1. limit the searching range to the actual data extensions, instead of the whole column (some 1 million row)
2. Don't use `Unload Me` inside a UserForm code. Adopt `Hide.Me` and move `Unload Me` to the `Userform` calling sub (the one where you place some `With New MyUserform` statement or the likes)

like follows:

```
Private Sub Summary_Click()
    Dim EMPLID As String

    EMPLID = Application.InputBox("Enter Your Employee Number", "Employee Number")

    With Sheets("Tracking Data")
        With .Range("E1", .Cells(.Rows.Count, "E").End(xlUp))
            .AutoFilter field:=1, Criteria1:=EMPLID
            If WorksheetFunction.Subtotal(103, .Cells) = 1 Then ' if only header row filtered -> no match found
                MsgBox "Nothing found"
                .Parent.AutoFilterMode = False ' remove AutoFilter and show all data
            End If
        End With
    End With
    Me.Hide
End Sub

```
Try

```
Sub test()
    Dim EMPLID As String
    Dim rngDB As Range, Rng As Range, rngU As Range
    Dim Ws As Worksheet
    Dim strAddress As String

    EMPLID = Application.InputBox("Enter Your Employee Number", "Employee Number")

    Set Ws = Sheets("Tracking Data")
    With Ws
        Set rngDB = .Range("e1", .Range("e" & Rows.Count).End(xlUp))
    End With
    With rngDB
        .EntireRow.Hidden = False
        Set Rng = .Find(What:=EMPLID, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)

        If Not Rng Is Nothing Then
            strAddress = Rng.Address
            Do
                If rngU Is Nothing Then
                    Set rngU = Rng

                Else
                    Set rngU = Union(rngU, Rng)
                End If
                Set Rng = .FindNext(Rng)
            Loop While Rng.Address <> strAddress

        End If
    End With
    If rngU Is Nothing Then
        MsgBox "Nothing found"
    Else
        rngDB.EntireRow.Hidden = True
        rngU.EntireRow.Hidden = False
    End If

End Sub

```