Seleccionar celdas, rangos, rangos con nombre, filas o columnas desde una macro en Calc

Estas tres funciones que te presentamos te permiten seleccionar celdas, rangos, rangos con nombre, filas o columnas de Calc desde una macro en OOo Basic.

El sistema es sencillo, y conocido para seleccionar filas, rangos o rangos con nombre, en cuyo caso siempre se utiliza la misma instrucción: getCelRangeByName. El rango indicado (B8, o B8:C14, o un rango con nombre) quedará inmediatamente seleccionado en la hoja activa.

No es tan sencillo para seleccionar filas o columnas. Habitualmente, los programadores seleccionan un rango de celdas, como por ejemplo, para seleccionar la columna B seleccionan el rango B1:B65536. Pero esto puede resultar muy peligroso, sobre todo, en la actual carrera entre las suites en cuanto al número de columnas y de filas, que en la versión 3.3 son unas pocas más... exactamente 1.048.576 filas.

Por lo tanto es mejor utilizar otro sistema; el que aquí presentamos seleccionará todas las filas (o columnas) que ocupe el rango indicado. Por ejemplo, el rango C4:C8 seleccionará las filas 4 a la 8.

public sub SeleccionarRango( cRango as string )
' cRango puede ser una celda A1, un rango A1:B3, o un rango con nombre
dim oRango as object

    oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( cRango )
    ThisComponent.getCurrentController.select( oRango )
   
end sub

public function SeleccionarFila( cRango as string )
' Selecciona las filas donde se situa cRango
' cRango puede ser una celda A1, un rango A1:B3, o un rango con nombre
dim oHoja   as object
dim dispatcher as object

    SeleccionarRango( cRango )
    oHoja = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(oHoja, ".uno:SelectRow", "", 0, Array())

end Function

public function SeleccionarColumna( cRango as string )
' Selecciona las columnas donde se situa cRango
' cRango puede ser una celda A1, un rango A1:B3, o un rango con nombre
dim oHoja   as object
dim dispatcher as object

    SeleccionarRango( cRango )
    oHoja = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(oHoja, ".uno:SelectColumn", "", 0, Array())

end Function

4 comentarios

Comentario De: cesar [Visitante]

Buenos dias
humm ejecuto el codigo y me dice que el argumento no es opcional un error de ooo basic que puede ser ?
gracias por sus escritos de programacion en ooo

03.09.13 @ 18:24 Reply to this comment
Comentario De: [Miembro]

Debes indicar un argumento para que se ejecuten las funciones, por ejemplo:

SeleccionarRango("B2:H12") selecciona las celdas B2 a H12
SeleccionarFila("B2") selecciona la fila 2
SeleccionarColumna("H12") selecciona la columna H

La selección no se muestra, pero si luego, por ejemplo, lo rellenas con un fondo, puedes comprobar que efectivamente quedan seleccionadas.

Saludos

03.09.13 @ 20:57 Reply to this comment
Comentario De: JRS [Visitante]

Help me!!

Necesito configurar una macro que seleccione únicamente hasta donde encuentre la última celda con valor y en base a ello graficar.

Comentario De: [Miembro]

JRS: Mejor pásate por el Foro Oficial y allí quizás encontremos la forma de ayudarte con la macro.
No olvides adjuntar lo que ya llevas hecho, para que sepan que lo estás intentando :)

22.04.14 @ 10:16 Reply to this comment


Form is loading...

Otros usuarios vieron...

  • 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
  • ¿Necesitas establecer o conocer la carpeta documentos del usuario con una macro en OpenOffice o LibreOffice?

    Pues aquí encontrarás además como establecer o conocer la carpeta de archivos temporales, en la …

  •  

    ¿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 Libre…

Patrocinado por SBS  Contacto • ©2019 by SalvaDCH