Veja se melhorou.
Private Sub Btn_gerar_Click()
Dim linhalistbox As Long, rng As Range
Dim LR As Long, r As Range, LRf As Long, cod As Long
Dim datainicial As Date, datafinal As Date
Dim codprod As String, cx As Long, descr As Range
datainicial = CDate(Me.TextBox_datainicial.Value)
datafinal = CDate(Me.TextBox_datafinal.Value)
If datainicial = Empty Then
MsgBox ("Informe data inicial para pesquisa."
Me.TextBox_datainicial.SetFocus
Exit Sub
End If
If datafinal = Empty Then
MsgBox ("Informe a data final para pesquisa."
Me.TextBox_datafinal.SetFocus
Exit Sub
End If
ListBox1.Clear
With Sheets("Plan3"
.AutoFilterMode = False
LR = .Cells(Rows.Count, 1).End(3).Row
.Range("A1:E" & LR).AutoFilter Field:=1, Criteria1:=">=" & CDbl(datainicial), Operator:=xlAnd, Criteria2:="<=" & CDbl(datafinal)
If .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then .AutoFilterMode = False: Exit Sub
LRf = .Cells(Rows.Count, 1).End(3).Row
Set rng = .Range("D2" & LRf).Cells.SpecialCells(xlCellTypeVisible)
For Each r In rng
cod = Evaluate("SUMPRODUCT(SUBTOTAL(3,OFFSET(Plan3!D" & r.Row & "" & LRf & ",ROW(Plan3!D" & r.Row & "" & LRf & "-MIN(ROW(D" & r.Row & "" & LRf & "),,1))*(Plan3!D" & r.Row & "" & LRf & "=Plan3!" & r.Address & ")"
If cod = 1 Then
codprod = r.Value
cx = Evaluate("=SUMPRODUCT(SUBTOTAL(9,OFFSET(Plan3!E2:E" & LRf & ",ROW(C2:C" & LRf & "-ROW(C2),,1)),--(Plan3!D2" & LRf & "=Plan3!" & r.Address & ")"
Set descr = Sheets("Plan2".[A:A].Find(codprod, lookat:=xlWhole)
ListBox1.AddItem
ListBox1.List(linhalistbox, 0) = codprod 'codigo produto
ListBox1.List(linhalistbox, 1) = descr.Offset(, 1).Value 'descrição do produto
ListBox1.List(linhalistbox, 2) = cx 'quantidade de caixas
linhalistbox = linhalistbox + 1
End If
Next r
.AutoFilterMode = False
End With
If ListBox1.ListCount > 0 Then
Btn_imprimir.Enabled = True
Btn_limpar.Enabled = True
End If
End Sub