von schaborj » Di, 01.03.2011 22:17
Hallo und danke
jetzt habe ich das bekommen was ich wollte und auch Deine Antwort wohl verstanden.
Man darf also nicht mit einer einzelnen Zelle arbeiten, sondern mit einem Range, wie groß dieser Range ist, ist eigentlich egal, er kann auch nur eine Zelle groß sein.
Der Bereich kann der Vorteil haben, das die Performance sogar steigt, wenn wie in meinem Fall die erste Reihe als "Kopfzeile" deutlich unterscheidbar formartiert werden soll.
Durch der Bereich musste ich allerdings die vertikale und horizontalen Linien ergänzen.
Ich poste hier das Programm nocheinmal, vielleicht hilfts anderen Usern.
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
sub testCellFormat
rem Testaufruf
dim oDocument as object
dim oSheet as object
dim lCols, lCole, lRows, lRowe, i as long
rem ----------------------------------------------------------------------
rem get access to the document
oDocument=ThisComponent
rem Tabelle festlegen
oSheet=oDocument.Sheets.getByName("Objects")
rem Zellbreich festlegen
lCols = 0
lCole = 31 ' Spalte 0 bis 31
lRows = 0
lRowe = 0 ' Reihe 0
CellFormatHeader( oSheet, lCols, lCole, lRows, lRowe)
end sub
Sub CellFormatHeader( oSheet, lCols, lCole, lRows, lRowe)
rem ####################################################################################################################################
rem Formatieren von Zellen
rem Verwendung der Formateinstellungen für die erste Reihe von Tabellen
rem
rem ####################################################################################################################################
rem Übergabeparameter
rem oSheet die Tabelle, die zu formatierende Zellen enthält als Object
rem lCols Erste Spalte, die zu formatierende Zellen enthält als Long
rem lCole Letzte Spalte, die zu formatierende Zellen enthält als Long
rem lRows Erste Reihe, die zu formatierende Zellen enthält als Long
rem lRowe Letzte Reihe, die zu formatierende Zellen enthält als Long
rem -------------------------------------------------------------------------------------------------------------------------------------
rem Rückgabe
rem keine
rem -------------------------------------------------------------------------------------------------------------------------------------
rem VA10A vom 1.3.2011
rem -------------------------------------------------------------------------------------------------------------------------------------
rem Testen der Formatierung für Zellen
rem GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
rem Variable definieren
Dim BasicBorder as New com.sun.star.table.BorderLine
Dim aBorder As Object
Dim oCellRange as Object
oCellRange = oSheet.getCellByPosition(lCols, lRows, lCole, lRowe)
oCellRange.VertJustify = com.sun.star.table.CellVertJustify.TOP ' Ausrichtung Oben
oCellRange.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT ' Ausrichtung links
oCellRange.CellBackColor = 11456256 ' Hintergrund blassgün
oCellRange.CharFontName = "Arial" ' Verwendeter Font Arial
oCellRange.CharWeight = com.sun.star.awt.FontWeight.BOLD ' Fettschrift
oCellRange.CharHeight = 8 ' Fontgrösse 8
oCellRange.IsTextWrapped = false ' Kein Textumbruch
oCellRange.CellProtection.IsLocked = true
rem Ränder einstellen, bei Rändern muß immer ein Zellbreich gewählt werden
rem der Zellbereich kann allerdings auch nur eine Zelle sein
rem Werte für einen doppelten Rand
BasicBorder.Color = 0
BasicBorder.InnerLineWidth = 2
BasicBorder.OuterLineWidth = 2
BasicBorder.LineDistance = 35
rem Doppelinie unterem Rand zuordnen
aBorder = oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder
aBorder.BottomLine = BasicBorder
oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder = aBorder
rem Werte für einen einfachen Rand
BasicBorder.Color = 0
BasicBorder.InnerLineWidth = 0
BasicBorder.OuterLineWidth = 2
BasicBorder.LineDistance = 0
rem einfache Linie oben, links, rechts zuordnen
aBorder = oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder
aBorder.TopLine = BasicBorder
aBorder.LeftLine = BasicBorder
aBorder.RightLine = BasicBorder
aBorder.Verticalline = BasicBorder
aBorder.Horizontalline = BasicBorder
oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder = aBorder
rem xray oCellRange
End Sub
Dir Winfried noch vielen Dank und eine gute Zeit in Thailand
Hallo und danke
jetzt habe ich das bekommen was ich wollte und auch Deine Antwort wohl verstanden. 8)
Man darf also nicht mit einer einzelnen Zelle arbeiten, sondern mit einem Range, wie groß dieser Range ist, ist eigentlich egal, er kann auch nur eine Zelle groß sein.
Der Bereich kann der Vorteil haben, das die Performance sogar steigt, wenn wie in meinem Fall die erste Reihe als "Kopfzeile" deutlich unterscheidbar formartiert werden soll.
Durch der Bereich musste ich allerdings die vertikale und horizontalen Linien ergänzen.
Ich poste hier das Programm nocheinmal, vielleicht hilfts anderen Usern.
[code]REM ***** BASIC *****
Option Explicit
sub testCellFormat
rem Testaufruf
dim oDocument as object
dim oSheet as object
dim lCols, lCole, lRows, lRowe, i as long
rem ----------------------------------------------------------------------
rem get access to the document
oDocument=ThisComponent
rem Tabelle festlegen
oSheet=oDocument.Sheets.getByName("Objects")
rem Zellbreich festlegen
lCols = 0
lCole = 31 ' Spalte 0 bis 31
lRows = 0
lRowe = 0 ' Reihe 0
CellFormatHeader( oSheet, lCols, lCole, lRows, lRowe)
end sub
Sub CellFormatHeader( oSheet, lCols, lCole, lRows, lRowe)
rem ####################################################################################################################################
rem Formatieren von Zellen
rem Verwendung der Formateinstellungen für die erste Reihe von Tabellen
rem
rem ####################################################################################################################################
rem Übergabeparameter
rem oSheet die Tabelle, die zu formatierende Zellen enthält als Object
rem lCols Erste Spalte, die zu formatierende Zellen enthält als Long
rem lCole Letzte Spalte, die zu formatierende Zellen enthält als Long
rem lRows Erste Reihe, die zu formatierende Zellen enthält als Long
rem lRowe Letzte Reihe, die zu formatierende Zellen enthält als Long
rem -------------------------------------------------------------------------------------------------------------------------------------
rem Rückgabe
rem keine
rem -------------------------------------------------------------------------------------------------------------------------------------
rem VA10A vom 1.3.2011
rem -------------------------------------------------------------------------------------------------------------------------------------
rem Testen der Formatierung für Zellen
rem GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
rem Variable definieren
Dim BasicBorder as New com.sun.star.table.BorderLine
Dim aBorder As Object
Dim oCellRange as Object
oCellRange = oSheet.getCellByPosition(lCols, lRows, lCole, lRowe)
oCellRange.VertJustify = com.sun.star.table.CellVertJustify.TOP ' Ausrichtung Oben
oCellRange.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT ' Ausrichtung links
oCellRange.CellBackColor = 11456256 ' Hintergrund blassgün
oCellRange.CharFontName = "Arial" ' Verwendeter Font Arial
oCellRange.CharWeight = com.sun.star.awt.FontWeight.BOLD ' Fettschrift
oCellRange.CharHeight = 8 ' Fontgrösse 8
oCellRange.IsTextWrapped = false ' Kein Textumbruch
oCellRange.CellProtection.IsLocked = true
rem Ränder einstellen, bei Rändern muß immer ein Zellbreich gewählt werden
rem der Zellbereich kann allerdings auch nur eine Zelle sein
rem Werte für einen doppelten Rand
BasicBorder.Color = 0
BasicBorder.InnerLineWidth = 2
BasicBorder.OuterLineWidth = 2
BasicBorder.LineDistance = 35
rem Doppelinie unterem Rand zuordnen
aBorder = oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder
aBorder.BottomLine = BasicBorder
oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder = aBorder
rem Werte für einen einfachen Rand
BasicBorder.Color = 0
BasicBorder.InnerLineWidth = 0
BasicBorder.OuterLineWidth = 2
BasicBorder.LineDistance = 0
rem einfache Linie oben, links, rechts zuordnen
aBorder = oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder
aBorder.TopLine = BasicBorder
aBorder.LeftLine = BasicBorder
aBorder.RightLine = BasicBorder
aBorder.Verticalline = BasicBorder
aBorder.Horizontalline = BasicBorder
oSheet.getCellRangeByPosition(lCols, lRows, lCole, lRowe).TableBorder = aBorder
rem xray oCellRange
End Sub
[/code]
Dir Winfried noch vielen Dank und eine gute Zeit in Thailand