filtro sin datos en visual basic

11/11/2011 - 18:54 por nanote | Informe spam
¡ Hola !
Quisiera saber si ejecuté la siguiente sentencia:
Range("A1").AutoFilter field:=1, Criteria1:=">=" & lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2
y NO hubo filas filtradas, ¿con que sentencia compruebo que no hubo datos?
Traté de usar "mirango.rows.count" pero contabiliza todo, ¿habrá algo como Filter.empty ?
Gracias desde ya
Nano2757

Preguntas similare

Leer las respuestas

#1 Juan Español
12/11/2011 - 21:35 | Informe spam
Hola nanote:
Mira a ver si el código de esta macro te ayuda a entender como
detectar el caso de que no haya filas visibles después de aplicar un filtro.

Sub Macro_c_1()
'Esta macro hace un autofiltro (muestra las filas con fechas _
de Jun 2000 en Colum A) en la hoja activa y _
muestra un mensaje según resultado.
'¡¡¡OJO!!! La Colum tiene encabezamiento
Dim lFecha1, lFecha2, ContFil As Integer, area As Range
lFecha1 = 36678
lFecha2 = 36707
Range("A:A").AutoFilter field:=1, Criteria1:=">=" & lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2

'Aquí empieza el código de contar filas visibles con el filtro
Dim EsqSupIzd As Range
Set EsqSupIzd = Range("A2")
ContFil = -1
For Each area In _
EsqSupIzd.CurrentRegion.SpecialCells(xlVisible).Areas
ContFil = ContFil + area.Rows.Count
Next
If ContFil = 0 Then
MsgBox "No hay ninguna fila que cumpla el filtro"
ElseIf ContFil = 1 Then
MsgBox "Hay una fila que cumple el filtro."
Else: MsgBox "Hay " & ContFil & " filas que cumplen el filtro."
End If
End Sub


Saludos.-

"nanote" escribió en el mensaje de
noticias news:
¡ Hola !
Quisiera saber si ejecuté la siguiente sentencia:
Range("A1").AutoFilter field:=1, Criteria1:=">=" &
lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2
y NO hubo filas filtradas, ¿con que sentencia compruebo que no hubo
datos?
Traté de usar "mirango.rows.count" pero contabiliza todo,
¿habrá algo como Filter.empty ?
Gracias desde ya
Nano2757
Respuesta Responder a este mensaje
#2 nanote
13/11/2011 - 03:53 | Informe spam
Juan Español escribió el 12/11/2011 21:35 :
Hola nanote:
Mira a ver si el código de esta macro te ayuda a entender como
detectar el caso de que no haya filas visibles después de aplicar un
filtro.

Sub Macro_c_1()
'Esta macro hace un autofiltro (muestra las filas con fechas _
de Jun 2000 en Colum A) en la hoja activa y _
muestra un mensaje según resultado.
'¡¡¡OJO!!! La Colum tiene encabezamiento
Dim lFecha1, lFecha2, ContFil As Integer, area As Range
lFecha1 = 36678
lFecha2 = 36707
Range("A:A").AutoFilter field:=1, Criteria1:=">=" &
lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2

'Aquí empieza el código de contar filas visibles con el filtro
Dim EsqSupIzd As Range
Set EsqSupIzd = Range("A2")
ContFil = -1
For Each area In _
EsqSupIzd.CurrentRegion.SpecialCells(xlVisible).Areas
ContFil = ContFil + area.Rows.Count
Next
If ContFil = 0 Then
MsgBox "No hay ninguna fila que cumpla el filtro"
ElseIf ContFil = 1 Then
MsgBox "Hay una fila que cumple el filtro."
Else: MsgBox "Hay " & ContFil & " filas que cumplen el
filtro."
End If
End Sub


Saludos.-

"nanote" escribió
en el mensaje de
noticias news:
¡ Hola !
Quisiera saber si ejecuté la siguiente sentencia:
Range("A1").AutoFilter field:=1, Criteria1:=">=" &
lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2
y NO hubo filas filtradas, ¿con que sentencia compruebo que no hubo
datos?
Traté de usar "mirango.rows.count" pero contabiliza todo,
¿habrá algo como Filter.empty ?
Gracias desde ya
Nano2757




super bueno tu aporte Juan español, habia estado intentando con otras tecnicas, pero esta me llegó super, muchisismas gracias.
atte
nanote
Respuesta Responder a este mensaje
#3 Emeterio
20/11/2011 - 07:41 | Informe spam
On 11 nov, 18:54, nanote wrote:
¡ Hola !
 Quisiera saber si ejecuté la siguiente sentencia:
 Range("A1").AutoFilter field:=1, Criteria1:=">=" &
 lFecha1, _
 Operator:=xlAnd, Criteria2:="<=" & lFecha2
 y NO hubo filas filtradas, ¿con que sentencia compruebo que no hubo
 datos?
 Traté de usar "mirango.rows.count" pero contabiliza todo,
 ¿habrá algo como Filter.empty ?
 Gracias desde ya
 Nano2757




Private Function Filtrar(bad, tabla, pw, criterio)
'abre la base filtra el criterio y la deja abierta.
'devuelve cadena vacia si no coincide
Dim a
a = bad
On Error GoTo ErrBaseDatos
Workbooks.Open Filename:=a, Password:=pw
Sheets(tabla).Activate
Range("A1").Select
'Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=criterio
ActiveCell.SpecialCells(xlLastCell).Select
Selection.AutoFilter
Filtrar = ActiveWorkbook.Name
Exit Function
ErrBaseDatos:
If SelBase Then
a = base
Resume
End If
Filtrar = ""
End Function

Luego puede usarse:

bd = Filtrar(base, tabla, pw, c)
If bd = "" Then
MsgBox "No encuentra base de datos o clave erronea." & Chr
$(13) & Chr$(13), vbCritical, "Base de datos"
Exit Sub
End If

Select Case dbLEE
Case 0 'lee
Case 1 'siguiente
ActiveCell.Offset(1, 0).Select 'baja siguienge fila
Case 2 'anterior
If ActiveCell.Row > 1 Then
ActiveCell.Offset(-1, 0).Select 'anterior fila
End If
Case 3 'primero
If ActiveCell.Row > 1 Then
ActiveCell.Offset(-ActiveCell.Row + 1, 0).Select
'.Activate 'Range("A5").Select
End If
Case 4 'ultimo
ActiveCell.SpecialCells(xlLastCell).Select
Case Default 'lee
End Select
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida