Página 1 de 1

[RESUELTO] Filtro con Macros alternativa bug de LibreOffice

NotaPublicado: Vie Oct 23, 2015 6:58 pm
por elandriu
Hola a todos,
Tengo un problema con un filtro usando macros.
Quiero filtrar la columna 3 de un rango llamado "campo", el problema es que las celdas de la columna 3 a filtrar tiene una formula, ese resultado cuando resulta en "NO", no lo debe contener en el filtro.

He probado escribiendo "NO" manualmente (sin que sea la formula quien de el resultado y la macro que a continuación escribo, me funciona perfecto.

Mi pregunta es: ¿Cómo puedo hacer para que mi macro funcione cuando las celdas a filtrar contienen una fórmula como resultado a filtrar.

Un saludo y gracias.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub Filtro()
Dim oDoc As Object
Dim oRangosBD As Object
Dim sNombre As String
Dim oRBD As Object
Dim oDesFiltro As Object
Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField
   oDoc = ThisComponent
   oRangosBD = oDoc.DataBaseRanges()   
   sNombre = "campo"
   oRBD = oRangosBD.getByName( sNombre )
   oDesFiltro = oRBD.getFilterDescriptor()   
'El campo por el que queremos filtrar
   mCamposFiltro(0).Field = 2
'El tipo de comparación
   mCamposFiltro(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL   
'Si es un número
   mCamposFiltro(0).IsNumeric = FALSE   
'El valor de comparación
   mCamposFiltro(0).StringValue = "NO"
'Le pasamos los campos
   oDesFiltro.FilterFields = mCamposFiltro
'Refrescamos el rango para ver el resultado del filtro
   oRBD.refresh()
   MsgBox "Listo"
End Sub

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Vie Oct 23, 2015 7:59 pm
por fornelasa
Sugiero olvidarnos un poquito del codigo y enviar un archivo ejemplo aclarando aún más el problema.
Saludos, Federico.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Vie Oct 23, 2015 8:10 pm
por SLV-es
¿La fórmula contenida en las celdas devuelve una cadena de carácteres con "No"?
Revisa si devuelven "No " o " No"; es un error común.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Vie Oct 23, 2015 8:21 pm
por elandriu
Estoy creando un ejemplo para subir un archivo. En un rato lo subo.

La fórmula devuelve "NO", tal cual sin espacio y hasta en mayúsculas como intento filtrar. Cuando en lugar de que lo devuelva la fórmula, lo escribo manualmente al "NO", me funciona.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Vie Oct 23, 2015 9:25 pm
por elandriu
Lo he despejado del trabajo para solo quedarme con el filtro y me encuentro que si hago primero un filtro automático y le digo que muestre todo menos "NO" (sea función o valor), y luego pongo y saco tantas veces como quiero el filtro, me funciona.

Pero cuando abro el archivo y ejecuto la macro, no funciona.

Como les decía, una vez que hago el filtro manual y lo quito, el filtro de la macro y la limpieza de la macro, funcionan hasta que vuelvo a cerrar el archivo.

Espero que le encuentren el problema que no puedo encontrar la solución.

Un saludo

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Vie Oct 23, 2015 11:50 pm
por fornelasa
En OpenOffice funciona correctamente, me atrevería a decir que es un bug de LibreOffice ya que en AOO funciona normal.
Si seleccionamos de forma manual "campo" en Datos <> Definir Intervalo ya funciona ..... pero no es lo normal.
Sugiero intentar por otro camino.
Saludos, Federico.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Sab Oct 24, 2015 12:30 am
por elandriu
Gracias fornelasa. Me podría haber vuelto loco!!!
Le estuve dando muchas vueltas. He cambiado varias veces el código para filtrar diferente pero siempre me encuentro con la misma traba. En definitiva siempre estoy necesitando filtrar.
Se te ocurre alguna idea para engañar y hacer algo automático para que enganche esa primera vez luego que se abre el documento?
Gracias!

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Sab Oct 24, 2015 12:38 am
por fornelasa
ok dejame ver, ahorita voy de salida, en cuanta pueda lo checo ..... si es que alguien más de la comunidad no lo revisa.
Saludos, Federico.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Sab Oct 24, 2015 12:53 am
por elandriu
Gracias Federico y te mando mis deseos de que el huracán haga el menor daño posible.
Un saludo,
Andrés

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Lun Oct 26, 2015 6:16 pm
por fornelasa
Veinte años despues ...... :lol:
Ante la falla (o posible Bug) de LibreOffice podriamos usar una macro como la mostrada en el siguiente archivo ejemplo:
Saludos, Federico.

Re: Filtrar celdas que contiene una función usando Macros

NotaPublicado: Lun Oct 26, 2015 6:33 pm
por elandriu
Hola Federico,
Que buena solución, ahora lo voy a aplicar y utilizando la protección de celda "oculto", lo protejo y no lo muestro a quien vea la hoja.

Muchas gracias!!!