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 |