Te anexo la macro para filtrar por fechas
Antes de ejecutar la macro debes crear una hoja y le pones por nombre "Temporal"
Actualiza en la macro esta información:
Set h1 = Sheets("BASE DE DATOS FACTURACION")
Set h2 = Sheets("Temporal")
col = "F" 'columna de Fechas
fila = 5 'fila de encabezados
uc = Columns("P").Column 'última columna con datos
Después de presionar el botón, en la hoja "temporal" tendrás la información filtrada.
Private Sub CommandButton1_Click()
'Por.Dante Amor
'filtrar
Set h1 = Sheets("BASE DE DATOS FACTURACION")
Set h2 = Sheets("Temporal")
col = "F" 'columna de Fechas
fila = 5 'fila de encabezados
uc = Columns("P").Column 'última columna con datos
'
h2.Cells.Clear
ListBox1.RowSource = ""
'
'VALIDACIONES
If TextBox1.Value = "" Or Not IsDate(TextBox1.Value) Then
MsgBox "Captura una fecha INICIO"
TextBox1.SetFocus
Exit Sub
End If
If Me.TextBox2.Value = "" Or Not IsDate(TextBox2.Value) Then
MsgBox "Captura fecha FIN"
TextBox2.SetFocus
Exit Sub
End If
fec1 = CDate(TextBox1.Value)
fec2 = CDate(TextBox2.Value)
If fec2 < fec1 Then
MsgBox "La fecha FIN no puede ser menor a la fecha INICIO"
TextBox2.SetFocus
Exit Sub
End If
'
Application.ScreenUpdating = False
If h1.AutoFilterMode Then h1.AutoFilterMode = False
u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
coln = Columns(col).Column
h1.Range(h1.Cells(fila, "A"), h1.Cells(u1, uc)).AutoFilter Field:=coln, _
Criteria1:=">=" & Format(fec1, "mm/dd/yyyy"), Operator:=xlAnd, _
Criteria2:="<=" & Format(fec2, "mm/dd/yyyy")
u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
h1.Range(h1.Cells(fila, "A"), h1.Cells(u1, uc)).Copy h2.Cells(1, "A")
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
If u2 = 1 Then
MsgBox "No existen registros con ese filtro", vbExclamation, "FILTRO"
Else
rango = Range(Cells(2, "A"), Cells(u2, uc)).Address
h2.Cells.EntireColumn.AutoFit
ancho = ""
For i = 1 To uc
ancho = ancho & Int(h2.Cells(1, i).Width) + 3 & ";"
Next
ListBox1.RowSource = h2.Name & "!" & rango
ListBox1.ColumnCount = uc
ListBox1.ColumnHeads = True
ListBox1.ColumnWidths = ancho
End If
If h1.AutoFilterMode Then h1.AutoFilterMode = False
Application.ScreenUpdating = True
End Sub
No mencionaste cómo quieres copiar la información a la hoja "libro". La quieres copiar con encabezado, sin encabezado, en cuál fila, o se debe pegar después de la última fila con datos.
Como te comenté, la información filtrada está en la hoja "temporal" puedes tomar de ahí la información y copiarla a la hoja "libro".
'.[Sal u dos. Dante Amor. No olvides valorar la respuesta.
'.[Avísame cualquier duda