Evento Al cambiar la selección en Calc

 

¿Cómo detectar si el usuario ha cambiado de celda? utilizando un evento de la hoja de cálculo llamado Al cambiar la selección (en Apache OpenOffice, Selección cambiada en LibreOffice).

Este evento se dispara cuando por cualquier sistema (ratón, teclado o por código) se cambia de celda o se selecciona un rango de celdas o un rango múltiple de celdas.

Veamos cómo detectar tal situación.

El evento Al cambiar la selección se define para cada hoja de nuestro libro de Calc. Haciendo clic secundario sobre la pestaña de la hoja y seleccionando la opción Eventos de la hoja... se mostrará el diálogo Acción asignada que nos muestra y permite asignar macros a eventos.

 

 

Entre los eventos que disponemos se encuentra el llamado Al cambiar la selección (en Apache OpenOffice) o  Selección cambiada (en LibreOffice), que se produce siempre que el usuario selecciona una celda, rango o rango múltiple distinto al actual.

Desde el botón Macro... podemos asignar una macro existente al evento. En la imagen estamos asignando al evento una macro llamada Evento_Cambiar_Seleccion almacenada en un contenedor documento. El documento se puede descargar al final de este artículo.

 

 

Una vez asignada la macro, cualquier selección que realicemos sobre la hoja hará que se llame a la misma.

 

 

La macro recibirá un objeto que nos permite conocer qué es lo que ha seleccionado el usuario. Este objeto cambia de tipo, pudiendo ser un objeto tipo celda, rango o rango múltiple. Esto nos permite detectar qué es lo que se ha seleccionado en la hoja.

Podemos ver un ejemplo en la siguiente macro, que recibe el objeto en la variable oEv, y escribe en la celda A1 qué es lo que ha seleccionado el usuario:

 

Option Explicit

Sub Evento_Cambiar_Seleccion( oEv )
' oEv es un objeto de tipo scCellObj si se ha seleccionado una celda
' o tipo scCellRangeObj si se ha seleccionado un rango
' o tipo scCellRangesObj si se ha seleccionado un rango múltiple
Dim CeldaA1 As Object

CeldaA1=ThisComponent.GetCurrentController.GetActiveSheet.GetCellRangeByName( "A1" )

If oEv.SupportsService( "com.sun.star.sheet.SheetCell" ) Then
' Se ha seleccionado una celda
CeldaA1.String = "Has seleccionado la celda " & oEv.AbsoluteName
ElseIf oEv.SupportsService( "com.sun.star.sheet.SheetCellRange" ) Then
' Se ha seleccionado un rango
CeldaA1.String = "Has seleccionado el rango " & oEv.AbsoluteName
ElseIf oEv.SupportsService( "com.sun.star.sheet.SheetCellRanges" ) Then
'Se ha seleccionado un rango múltiple (varios rangos)
CeldaA1.String = "Has seleccionado el rango múltiple " & oEv.AbsoluteName
End If

End Sub

La macro examina los servicios que soporta el objeto oEv para determinar exactamente qué es lo que se ha seleccionado, y lo presenta en la celda A1, como puede verse en la imagen que encabeza este artículo.

 

Descargar documento con la macro Evento Al Cambiar Seleccion.ods

No hay reacciones, todavía


Form is loading...

Otros usuarios vieron...

  • Este procedimiento para ordenar matrices es, en la gran mayoría de casos, más rápido que el método de la burbuja.

    Para conocer más sobre estos métodos puedes consultar las sigui…

  • Proteger macros en OpenOffice

     

    OpenOffice es una aplicación de software libre.

    Pero las macros que tú mismo programas no tienen por qué serlo.

    Quizás quieras proteger tus macros de miradas indiscretas, o senc…

  • Esta función devuelve la letra del NIF asociada a un número de DNI

    Function LetraNif(dni As Long) As String
    LetraNif = Mid("TRWAGMYFPDXBNJZSQVHLCKE", (dni Mod 23) + 1, 1)
    End Function

Patrocinado por SBS  Contacto • ©2023 by SalvaDCH


Notice: fwrite(): write of 8192 bytes failed with errno=122 Disk quota exceeded in /home/officees/public_html/blog/inc/_core/model/_pagecache.class.php on line 600