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
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
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
Help me!!
Necesito configurar una macro que seleccione únicamente hasta donde encuentre la última celda con valor y en base a ello graficar.
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 :)