[RESUELTO] Resaltar Celdas determinadas según celda activa

Discute sobre la aplicación de hojas de cálculo
Responder
Avatar de Usuario
bernarbernuli
Mensajes: 30
Registrado: Vie Dic 16, 2016 11:26 pm

[RESUELTO] Resaltar Celdas determinadas según celda activa

Mensaje por bernarbernuli »

Saludos:

¿Como podría hacer para que se resalte unas celdas determinadas dependiendo donde se encuentre la celda activa? , me explico, buscando, lo que encuentro en su mayoría son ejemplos en los que se resalta a través de macros toda la fila y la columna donde se encuentre la celda activa (en forma de cruz),pero lo que quiero, y en relación al archivo que adjunto es que si estoy en la celda E14, por ejemplo, se resaltan sólo las celdas E7 ("Ventas"), y A14 y B14 ("Luis León Parra").
Resaltar celda activa.ods
(24.14 KiB) Descargado 523 veces

Ejemplo del resalte de celda según la celda activa
Ejemplo del resalte de celda según la celda activa
Gracias por adelantado.
Última edición por bernarbernuli el Dom Ene 22, 2017 10:36 pm, editado 2 veces en total.
LibreOffice v5.2.4.2 (en Windows 10 Pro)
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

Si es que hubiera entendido bien entonces pudiéramos crear por ejemplo cuatro estilos de celda ( llamados azulcielo, normal1, turquesa3 y urquesa4 ):
Aquí una posible opción:
Saludos, Federico.
Adjuntos
ResaltarFila.ods
Resaltar fila versión II
(20.42 KiB) Descargado 483 veces
Última edición por fornelasa el Jue Ene 19, 2017 7:05 pm, editado 2 veces en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
bernarbernuli
Mensajes: 30
Registrado: Vie Dic 16, 2016 11:26 pm

Re: Resaltar Celdas determinadas según celda activa

Mensaje por bernarbernuli »

fornelasa escribió:Si es que hubiera entendido bien entonces pudiéramos crear por ejemplo tres estilos de celda ( llamados azulcielo, normal1 y turquesa3 ):
Aquí una posible opción:
Saludos, Federico.
Gracias por tu tiempo.

La macro al aplicarla a un archivo mayor en cuanto a filas y columnas me provoca algo de lag, lo cual puedo vivir con ello por supuesto, no obstante, apelo a otras alternativas . Quizás tu o alguien sepa hacer lo mismo con otra macro alternativa. En excel yo trabajaba con una macro que conjugaba la macro con formatos condicionales, esto lo digo como idea de una posible alternativa.

Gracias de antemano
LibreOffice v5.2.4.2 (en Windows 10 Pro)
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

canariohippie escribió:En excel yo trabajaba con una macro que conjugaba la macro con formatos condicionales, esto lo digo como idea de una posible alternativa.
Creo que no es correcto decir lo anterior sin mostrar la macro o formato condicional de referencia. Desde mi punto de vista si no se muestra el codigo la cita queda invalidada.
canariohippie escribió:La macro al aplicarla a un archivo mayor en cuanto a filas y columnas me provoca algo de lag, lo cual puedo vivir con ello por supuesto, no obstante, apelo a otras alternativas
Habría que ver cuanto pesa tu archivo por lo tanto así sin ver digo mi opinión: el manejo de archivos grandes no es uno de los fuertes del programa Calc independientemente de las macros.

Si claro hay otras opciones, por ejemplo usar un subradado de celdas en vez de estilos pero LO tiene un bug con respecto a este tema, en AOO funciona bien aunque no sé todavia si lo hace rapido.
El archivo anexo puede adecuarse a lo que solicitas pero no funciona en LO por el bug que te comenté.

Saludos, Federico.
Adjuntos
Resaltar.ods
EjemploParaResaltar
(9.34 KiB) Descargado 303 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
bernarbernuli
Mensajes: 30
Registrado: Vie Dic 16, 2016 11:26 pm

Re: Resaltar Celdas determinadas según celda activa

Mensaje por bernarbernuli »

fornelasa escribió:
canariohippie escribió:En excel yo trabajaba con una macro que conjugaba la macro con formatos condicionales, esto lo digo como idea de una posible alternativa.
Creo que no es correcto decir lo anterior sin mostrar la macro de referencia. Desde mi punto de vista si no se muestra el codigo la cita queda invalidada.
canariohippie escribió:La macro al aplicarla a un archivo mayor en cuanto a filas y columnas me provoca algo de lag, lo cual puedo vivir con ello por supuesto, no obstante, apelo a otras alternativas
Habría que ver cuanto pesa tu archivo por lo tanto así sin ver digo mi opinión: el manejo de archivos grandes no es uno de los fuertes del programa Calc independientemente de las macros.

Si claro hay otras opciones, por ejemplo usar un subradado de celdas en vez de estilos pero LO tiene un bug con respecto a este tema, en AOO funciona bien aunque no sé todavia si lo hace rapido.

Saludos, Federico.
Gracias por tu atención

No puse nada porque no creía conveniente subir un archivo excel con el ejemplo sobre resaltado, por lo de que este es un foro sobre LO/OO.
Resaltar en excel.xlsm
(16.76 KiB) Descargado 459 veces
La macro:

Código: Seleccionar todo

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Range("a8").Calculate
End Sub
En la captura muestro el codigo de los formatos condicionales, creo que no se ve muy bien.
Captura.JPG
Captura.JPG (9.81 KiB) Visto 9001 veces

Configuración de los formatos condicionales:

Código: Seleccionar todo

=COLUMNA()=CELDA("Columna")  en el rango de celdas =$A$4:$I$4 (se resalta en verde)

=FILA()=CELDA("Fila") en el rango de celdas =$A$5:$B$24 (se resalta en verde)
LibreOffice v5.2.4.2 (en Windows 10 Pro)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Resaltar Celdas determinadas según celda activa

Mensaje por mauricio »

Otra opción...
test.ods
(17.94 KiB) Descargado 341 veces
Para quien le interese, aquí el código usado:

Código: Seleccionar todo

#!/usr/bin/env python
import uno


last_sel1 = None
last_sel2 = None
ra = None


def resaltar(event):
    global last_sel1
    global last_sel2
    global ra

    if event.ImplementationName != 'ScCellObj':
        return
    try:
        if not last_sel1 is None:
            last_sel1.CellStyle = 'Original1'
        if not last_sel2 is None:
            last_sel2.CellStyle = 'Original2'
    except:
        pass

    sheet = event.getSpreadsheet()
    if ra is None:
        cursor = sheet.createCursorByRange(event)
        cursor.collapseToCurrentRegion()
        ra = cursor.getRangeAddress()

    col = event.CellAddress.Column
    row = event.CellAddress.Row
    if row < 7:
        return

    if col > ra.EndColumn or row > ra.EndRow:
        return

    last_sel1 = sheet.getCellByPosition(col, 6)
    last_sel1.CellStyle = 'Resaltado'
    last_sel2 = sheet.getCellRangeByPosition(0, row, 1, row)
    last_sel2.CellStyle = 'Resaltado'

    return
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

canariohippie, He actualizado el archivo en el segundo post de este debate, considero que la tarea es ahora más rápida. Por el momento es lo menos lag que puedo hacerlo.

mauricio, no supe como hacer funcionar la tarea si le agrego por ejemplo 500 filas más (A28:I527), parece que ya no funciona, parece ....

Saludos, Federico.
Última edición por fornelasa el Jue Ene 19, 2017 7:51 pm, editado 1 vez en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Resaltar Celdas determinadas según celda activa

Mensaje por mauricio »

fornelasa escribió:mauricio, no supe como hacer funcionar la tarea si le agrego por ejemplo 500 filas más (A28:I527), parece que ya no funciona, parece .....
Si mira el código... toma la región actual de los datos para que no lo haga fuera de este rango... pero como es una variable global, solo valida si ya esta definida la primera vez... por lo que creo, si agregados datos una vez ha arrancado, no toma el cambio de rango, solo guarda, cierra y vuelve a abrir, debería tomar el nuevo rango la primera vez... de tarea le queda a alguien hacer esto de forma dinamica... tip -es mala idea hacerlo cada que cambie el rango-

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

mauricio, efectivamente era eso, funciona perfectamente y ¡rápido! :super:

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
bernarbernuli
Mensajes: 30
Registrado: Vie Dic 16, 2016 11:26 pm

Re: Resaltar Celdas determinadas según celda activa

Mensaje por bernarbernuli »

Gracias por vuestra atención, fornelasa efectivamente va mas rápido la 2ª versión que has hecho, no obstante querría adaptar primero el código de mauricio en otra hoja de calculo, ya que me da la impresión que va si cabe mas suave, pero no tengo claro como insertarla en una hoja de calculo ni tan siquiera editarla. Creo que no se hace igual que una macro VBA, ya que la de mauricio es pithon, no?.

He leído que se debe insertar a través de un archivo de texto plano
LibreOffice v5.2.4.2 (en Windows 10 Pro)
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

Efectivamente es Python, mira todo este tema y "baja" la extensión.
https://forum.openoffice.org/es/forum/v ... HON#p55495
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Resaltar Celdas determinadas según celda activa

Mensaje por fornelasa »

Y por ultimo (de mi parte) una nueva versión más "suave" y más "similar" a Excel en cuanto a formatos condicionales, y según yo: "rápida".
Saludos, Federico.
Adjuntos
ResaltarFila3.ods
Versión 3
(20.77 KiB) Descargado 548 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
bernarbernuli
Mensajes: 30
Registrado: Vie Dic 16, 2016 11:26 pm

Re: Resaltar Celdas determinadas según celda activa

Mensaje por bernarbernuli »

fornelasa escribió:Y por ultimo (de mi parte) una nueva versión más "suave" y más "similar" a Excel en cuanto a formatos condicionales, y según yo: "rápida".
Saludos, Federico.

Perfecto, va genial @fornelasa. Gracias por tu buen hacer.

Por mi doy por solucionado el "topic".
LibreOffice v5.2.4.2 (en Windows 10 Pro)
Responder