Formato de filas y columnas
Para establecer la altura de las filas, usamos la propiedad Height, el valor se establece en centésimas de milímetros, por lo que para tener una fila de 0.50 cm le asignamos un valor de 500 como en el siguiente ejemplo.
Sub FormatoFilas1()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Establecemos el alto de las filas seleccionadas
oSel.getRows.Height = 500
End Sub
Cuando tratas de establecer la altura de las filas en cero (0), si bien no te dará ningún error, tampoco veras ningún cambio, aun, estableciendo el valor en la unidad veras que la fila sigue siendo notable. Si lo que deseas es ocultarla, es mejor usar la propiedad correspondiente, para este caso, IsVisible, como en.
Sub FormatoFilas2()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Ocultamos las filas seleccionadas
oSel.getRows.IsVisible = False
End Sub
Esta propiedad se establece en falso (false) para ocultar la fila y en verdadero (true) para mostrarla, el siguiente ejemplo te alternara en ocultar y mostrar conforme la ejecutes.
Sub FormatoFilas3()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Alternamos entre visible y oculta
oSel.getRows.IsVisible = Not oSel.getRows.IsVisible
End Sub
Las filas, adquieren una propiedad particular cuando se les aplica un filtro, esta propiedad se llama IsFiltered, y te devolverá verdadero (true), cuando la fila consultada este oculta como consecuencia de un filtro, toma nota de que “solo” cuando este oculta por un filtro, si tu la ocultas con IsVisible, esta propiedad (IsFiltered) seguirá siendo falsa (false), prueba a hacer un filtro en tu hoja activa y procura que la fila consultada (getByIndex(Indice)) este filtrada.
Sub FormatoFilas4()
Dim oHojaActiva As Object
oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
'Consultamos si la fila 3 esta filtrada
MsgBox oHojaActiva.getRows.getByindex(2).IsFiltered
End Sub
También podemos establecer el alto óptimo de las filas con la propiedad OptimalHeight, debe estar en verdadero (true) para que tenga efecto.
Sub FormatoFilas5()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Establecemos el alto optimo de las filas seleccionadas
oSel.getRows.OptimalHeight = True
End Sub
A las filas también es posible cambiarles el color de fondo, esto nos permite establecer el color de toda la fila.
Sub FormatoFilas6()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Establecemos el color de fondo de las celdas de la fila completa
oSel.getRows.CellBackColor = RGB(200,200,200)
End Sub
La siguiente macro te cambiara el color de las filas impares de la selección.
Sub FormatoFilas7()
Dim oSel As Object
Dim co1 As Long
oSel = ThisComponent.getCurrentSelection()
For co1 = 0 To oSel.getRows.getCount() - 1 Step 2
'Establecemos un color aleatorio para las filas impares de la selección
oSel.getRows.getByIndex( co1 ).CellBackColor = RGB( Rnd()*255,Rnd()*255,Rnd()*255 )
Next
End Sub
A las columnas también les podemos establecer el ancho.
Sub FormatoColumnas1()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Establecemos el ancho de las columnas seleccionadas
oSel.getColumns.Width = 1000
End Sub
Y ocultarlas.
Sub FormatoColumnas2()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Ocultamos las columnas seleccionadas
oSel.getColumns.IsVisible = False
End Sub
Ajustar al contenido.
Sub FormatoColumnas3()
Dim oSel As Object
oSel = ThisComponent.getCurrentSelection()
'Ajustamos al contenido
oSel.getColumns.OptimalWidth = True
End Sub
Las columnas no tienen una propiedad IsFiltered, por que como sabes, no hay filtros horizontales, pero con un poco de ingenio y usando la propiedad IsVisible, puedes crearte tu versión de filtros horizontales. Tampoco puedes usar la propiedad CellBackColor para establecer el color de fondo, pero también podemos implementar nuestra versión, aquí una primera aproximación.
Sub FormatoColumnas4()
Dim oSel As Object
Dim oCursor As Object
oSel = ThisComponent.getCurrentSelection()
'Nos apoyamos en un cursor
oCursor = oSel.getSpreadSheet.createCursorByRange( oSel )
oCursor.expandToEntireColumns()
oCursor.CellBackColor = RGB(210,210,210)
End Sub
La siguiente macro, establecerá el ancho de las columnas en 1 cm, después el alto de las filas también en 1 y coloreará alternadamente filas y columnas para hacer un lindo mosaico.
Sub FormatoFilasColumnas1()
Dim oSel As Object
Dim oCursor As Object
Dim co1 As Long
oSel = ThisComponent.getCurrentSelection()
oSel.getRows.Height = 1000
oSel.getColumns.Width = 1000
For co1 = 0 To oSel.getRows.getCount() - 1 Step 2
oSel.getRows.getByIndex( co1 ).CellBackColor = RGB( 230,230,230 )
Next
For co1 = 0 To oSel.getColumns.getCount() - 1 Step 2
oCursor = oSel.getSpreadSheet.createCursorByRange( oSel.getCellByPosition(co1,0) )
oCursor.expandToEntireColumns()
oCursor.CellBackColor = RGB(230,230,230)
Next
End Sub
Las filas y columnas cuentan con algunas propiedades involucradas en la impresión de los documentos, por lo que se verán en el capitulo correspondiente a impresión.
| Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO, o quieres ampliar la información, no dudes en dirigirte al Foro Oficial en español de Apache OpenOffice para Macros y API UNO |
