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 @ 20: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 @ 22: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.

21.04.14 @ 23:38 Reply to this comment
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 @ 12:16 Reply to this comment


Form is loading...

Otros usuarios vieron...

  • macros para comentarios en openoffice libreoffice calc

    Recientemente nos hemos encontrado con varias preguntas realizadas en el foro sobre cómo gestionar los comentarios en Calc mediante macros, y después de hacer un arduo trabajo de investigación, pr…

  • Calcular días laborables

    Varios usuarios han preguntado en distintos foros el modo de calcular los días laborables de un rango de celdas que contienen fechas. No es sencillo, pues en cada país, re…

  • 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…

Patrocinado por SBS  Contacto • ©2025 by Salvador Domènech Chicote