Formatierung von Zellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Formatierung von Zellen

Beitrag von schaborj »

Hi

seit einiger Zeit bin am googlen, um zu Erfahren, wie per BASIC Zellen formatiert werden, leider nichts gefunden.
Ich habe mir folgene, eigentlich einfache Aufgabe zu lösen:
Ich möchte irgendeine (über getbyposition()) ausgewählte Zelle mit Hife von OOo Basic 3.3 formatieren, und zwar komplett mit allen was die Funktion "Formatieren Zelle" erlaubt, Zahlenformat, Fonts, Rahmen, Ausrichtung, Abstände, Hintergrund, Schutz,etc.
Leider funktioniert das nur sehr begrenzt und der MakroRecorder hilft da auch nicht wirklich. Benutzte ich das Makro, wird die Zelle formatiert, wo der Curser zufällig steht, und das ist bestimmt nicht die, die Formatiert werden soll.

Hier mein bisheriger Versuch: :(

Code: Alles auswählen

function forhead01(oCell)
rem ###########################################################################################################################
rem Einstellen von Formaten für eine Zelle
rem		Übergrabewert
rem			oCell			ausgewählte Zelle des ausgewählten Tabellenblattes als Object
rem ---------------------------------------------------------------------------------------------------------------------------
rem 	Version VA10A vom 8.2.2011
rem ---------------------------------------------------------------------------------------------------------------------------
	oCell.VertJustify = com.sun.star.table.CellVertJustify.TOP			' Ausrichtung Oben
	oCell.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT			' Ausrichtung links
	ocell.CellBackColor = 11456256										' Hintergrund Diagram 8
	ocell.CharFontName = "Ariel"										' Verwendeter Font Ariel
	ocell.CharWeight = com.sun.star.awt.FontWeight.BOLD					' Fettschrifz
	ocell.CharHeight = 8												' Fontgrösse 8
	ocell.IsTextWrapped =false											' Kein Zeilenumbroch
rem Die Angaben zum Border erzeugen keine Fehler, aber auch kein Ergebnis
	oCell.LeftBorder.InnerLineWidth = 0
	oCell.LeftBorder.OuterLineWidth = 200
	oCell.BottomBorder.InnerLineWidth = 20
	oCell.BottomBorder.OuterLineWidth = 20
	oCell.BottomBorder.LineDistance = 40
rem Erzeugt Fehler "Eigenschaft oder Methode nicht gefunden: IsProtected
rem	oCell.IsProtected = true
	
end function
Das fast gleiche Problem habe ich mit dem Versuch, eine Formatvorlage per Basic zu erstellen.

Ich bin kein Programmierer und hoffe das es nur an meiner Unkenntnis liegt, dass es bis jetzt nicht so geht wie gewünscht.



Moderation,4: CODE tags gesetzt und Tippfehler bereinigt
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formatierung von Zellen

Beitrag von komma4 »

Willkommen im Forum.


Zunächst eine Frage: Du bist kein Programmierer - möchtest aber einer werden?
Ansonsten tätige Deine gewünschten Einstellungen in einer Formatvorlage und weise diese den Zellen zu.


Zum Code:
  • Du benötigst keine FUNCTION (die einen Wert an die rufende Routine zurück gibt), eine SUB reicht aus.
    der Font heisst ARIAL
    für BORDER-Eigenschaften ist IMHO auch eine Rahmenfarbe nötig

Zum Programmieren besorge Dir XRAY - die Suchfunktion hier im Forum hilft Dir dabei.


Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Re: Formatierung von Zellen

Beitrag von schaborj »

Hallo

nun hatte ich einige Tage etwas völlig Anderes zutun, als mit Basic zu arbeiten.

Nun wenn ich sage, ich bin kein Programmierer, dann beziehe ich das auf C, C+ oder ähnliche. Ich habe mich schon oft mit VBA abgemüht und dabei gelernt, dass Tabellen in ihren Funktionen und Abläufen stabiler sind, wenn nicht alle Einstellungen dem Anwender überlassen bleiben. Außerdem läßt sich die Datenquälität steigern und das Optische gehört auch dazu.
Aus VBA-Zeiten nutze ich oft Funktionen, um die Funktion als Fehlercode agieren zulassen. VBA kann auch sehr viel, aber es ist leider auch oft schlecht dokumentiert. Ähnlich sehe ich das in meinem Beispiel. Es sollte doch irgendwo eine Beschreibung geben, wie man ohne UNO alle Formartierungen einer Zelle (inkl. Rahmen, Farben, Validierungen, etc) per Basic setzen kann.

XRAY werde ich probieren, mal sehen ob es hilft. Was ist bitte IMHO ??

Nochmals Danke für Deine Antwort posting.php?mode=smilies&f=18#
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formatierung von Zellen

Beitrag von komma4 »

schaborj hat geschrieben:Was ist bitte IMHO ??
http://de.wiktionary.org/wiki/IMHO
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Re: Formatierung von Zellen

Beitrag von schaborj »

Hallo
erstmal vielen Dank für die Erklärung Begriff IMHO.
XRAY habe ich probiert, das gibt eine ganze Menge Informationen und daher schon recht hilfreich.

Dies hat mir aber auch gezeigt, dass OOO mich nicht verstehen will. Die gewünschten Werte werden nicht übernommen.

Hier nochmal der Code

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit


Sub Main
rem  Testen der Formatierung für Zellen
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")

rem Variable definieren
dim oDocument as object
dim oSheet as object
dim oCell as object

rem ----------------------------------------------------------------------
rem get access to the document
oDocument=ThisComponent

rem ####################################################################################################################################
rem Tabelle festlegen
	oSheet=oDocument.Sheets.getByName("Objects")
rem ####################################################################################################################################

	oCell = oSheet.getCellByPosition(1, 5)
	
	oCell.VertJustify = com.sun.star.table.CellVertJustify.TOP			' Ausrichtung Oben
	oCell.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT			' Ausrichtung links
	ocell.CellBackColor = 11456256										' Hintergrund blassgün
	ocell.CharFontName = "Arial"										' Verwendeter Font Arial
	ocell.CharWeight = com.sun.star.awt.FontWeight.BOLD					' Fettschrift
	ocell.CharHeight = 8												' Fontgrösse 8
	ocell.IsTextWrapped = false
	oCell.LeftBorder.Color = 0
	oCell.LeftBorder.InnerLineWidth = 0
	oCell.LeftBorder.OuterLineWidth = 35
	oCell.RightBorder.Color = 0
	oCell.RightBorder.InnerLineWidth = 0
	oCell.RightBorder.OuterLineWidth = 35	
	oCell.TopBorder.Color = 0
	oCell.TopBorder.InnerLineWidth = 0
	oCell.TopBorder.OuterLineWidth = 35	
	oCell.BottomBorder.Color = 0
	oCell.BottomBorder.InnerLineWidth = 2
	oCell.BottomBorder.OuterLineWidth = 2
	oCell.BottomBorder.LineDistance = 35
	
	xray oCell
	
End Sub

XRAY zeigt dann, dass die Werte für die Border nicht übernommen werden. Bei den anderen Werten scheint es zu funktionieren.
Wenn ich mit XRAY die Zelle beschreiben lasse, bekomme ich folgende Antwort:
AbsoluteName string "$Objects.$B$6" read-only
ActionLocks short pseudo-prop, write-only
Annotation com.sun.star.sheet.XSheetAnnotation pseudo-prop, read-only
ArrayFormula string "" pseudo-prop
ArrayTokens []com.sun.star.sheet.FormulaToken <empty> pseudo-prop
AsianVerticalMode boolean False
BottomBorder com.sun.star.table.BorderLine
CellAddress com.sun.star.table.CellAddress pseudo-prop, read-only
CellBackColor long 11456256
CellFormatRanges com.sun.star.container.XIndexAccess pseudo-prop, read-only
CellProtection com.sun.star.util.CellProtection
CellStyle string "Standard_Induvidials_neu"
CharColor long -1
CharContoured boolean False
CharCrossedOut boolean False
CharEmphasis short 0
CharFont short 5
CharFontCharSet short 1
CharFontCharSetAsian short 1
CharFontCharSetComplex short 1
CharFontFamily short 5
CharFontFamilyAsian short 6
CharFontFamilyComplex short 5
CharFontName string "Arial"
CharFontNameAsian string "Microsoft YaHei"
CharFontNameComplex string "Arial"
CharFontPitch short 2
CharFontPitchAsian short 2
CharFontPitchComplex short 0
CharFontStyleName string ""
CharFontStyleNameAsian string ""
CharFontStyleNameComplex string ""
CharHeight float 8
CharHeightAsian float 8
CharHeightComplex float 8
CharLocale com.sun.star.lang.Locale
CharLocaleAsian com.sun.star.lang.Locale
CharLocaleComplex com.sun.star.lang.Locale
CharOverline short 0
CharOverlineColor long -1
CharOverlineHasColor boolean False
CharPosture com.sun.star.awt.FontSlant 0 enum: com.sun.star.awt.FontSlant.NONE
CharPostureAsian com.sun.star.awt.FontSlant 0 enum: com.sun.star.awt.FontSlant.NONE
CharPostureComplex com.sun.star.awt.FontSlant 0 enum: com.sun.star.awt.FontSlant.NONE
CharRelief short 0
CharShadowed boolean False
CharStrikeout short 0
ChartColumnAsLabel boolean False
ChartRowAsLabel boolean False
CharUnderline short 0
CharUnderlineColor long -1
CharUnderlineHasColor boolean False
CharWeight float 150
CharWeightAsian float 100
CharWeightComplex float 100
CharWordMode boolean False
ColumnDescriptions []string pseudo-prop
Columns com.sun.star.table.XTableColumns pseudo-prop, read-only
ConditionalFormat com.sun.star.sheet.XSheetConditionalEntries
ConditionalFormatLocal com.sun.star.sheet.XSheetConditionalEntries
ConditionalFormatXML com.sun.star.sheet.XSheetConditionalEntries
Data [][]double pseudo-prop
DataArray [][]any pseudo-prop
Dbg_Methods string <...> basic prop, read-only
Dbg_Properties string <...> basic prop, read-only
Dbg_SupportedInterfaces string <...> basic prop, read-only
DiagonalBLTR com.sun.star.table.BorderLine
DiagonalTLBR com.sun.star.table.BorderLine
ElementType type pseudo-prop, read-only
End com.sun.star.text.XTextRange pseudo-prop, read-only
Error long 0 pseudo-prop, read-only
Formula string "M2946" pseudo-prop
FormulaArray [][]string pseudo-prop
FormulaLocal string "M2946"
FormulaResultType com.sun.star.table.CellContentType 2 read-only, enum: com.sun.star.table.CellContentType.TEXT
HoriJustify com.sun.star.table.CellHoriJustify 1 enum: com.sun.star.table.CellHoriJustify.LEFT
ImplementationId []byte pseudo-prop, read-only
ImplementationName string "ScCellObj" pseudo-prop, read-only
IsCellBackgroundTransparent boolean False
IsMerged boolean False pseudo-prop, read-only
IsTextWrapped boolean False
LeftBorder com.sun.star.table.BorderLine
NotANumber double 2.2250738585072E-308 pseudo-prop, read-only
NumberFormat long 10100
NumberingRules com.sun.star.container.XIndexReplace
Orientation com.sun.star.table.CellOrientation 0 enum: com.sun.star.table.CellOrientation.STANDARD
ParaAdjust short 0
ParaBottomMargin long 35
ParaIndent short 0
ParaIsCharacterDistance boolean False
ParaIsForbiddenRules boolean False
ParaIsHangingPunctuation boolean False
ParaIsHyphenation boolean False
ParaLastLineAdjust short 0
ParaLeftMargin long 35
ParaRightMargin long 35
ParaTopMargin long 35
Position com.sun.star.awt.Point read-only
PropertySetInfo com.sun.star.beans.XPropertySetInfo pseudo-prop, read-only
PropertyToDefault string pseudo-prop, write-only
RangeAddress com.sun.star.table.CellRangeAddress pseudo-prop, read-only
RightBorder com.sun.star.table.BorderLine
RotateAngle long 0
RotateReference com.sun.star.table.CellVertJustify 0 enum: com.sun.star.table.CellVertJustify.STANDARD
RowDescriptions []string pseudo-prop
Rows com.sun.star.table.XTableRows pseudo-prop, read-only
ShadowFormat com.sun.star.table.ShadowFormat
ShrinkToFit boolean False
Size com.sun.star.awt.Size read-only
Spreadsheet com.sun.star.sheet.XSpreadsheet pseudo-prop, read-only
Start com.sun.star.text.XTextRange pseudo-prop, read-only
String string "M2946" pseudo-prop
SupportedServiceNames []string pseudo-prop, read-only
TableBorder com.sun.star.table.TableBorder
Text com.sun.star.text.XText pseudo-prop, read-only
TextFieldMasters com.sun.star.container.XNameAccess <null> pseudo-prop, read-only
TextFields com.sun.star.container.XEnumerationAccess pseudo-prop, read-only
Tokens []com.sun.star.sheet.FormulaToken <empty> pseudo-prop
TopBorder com.sun.star.table.BorderLine
Type com.sun.star.table.CellContentType 2 pseudo-prop, read-only, enum: com.sun.star.table.CellContentType.TEXT
Types []type pseudo-prop, read-only
UniqueCellFormatRanges com.sun.star.container.XIndexAccess pseudo-prop, read-only
UserDefinedAttributes com.sun.star.container.XNameContainer
Validation com.sun.star.beans.XPropertySet
ValidationLocal com.sun.star.beans.XPropertySet
ValidationXML com.sun.star.beans.XPropertySet
Value double 0 pseudo-prop
VertJustify com.sun.star.table.CellVertJustify 1 enum: com.sun.star.table.CellVertJustify.TOP
WritingMode short 4
Für den Rahmen z.B.
Color long 0
InnerLineWidth short 0
LineDistance short 0
OuterLineWidth short 0
Hat jemand eine Idee wie man OOO dazu bringen kann, die Daten für den Rahmen zu akzeptieren ???
Bitte nicht manuell, das ist bei der gewünschten Flexibilität sehr unpraktisch.
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formatierung von Zellen

Beitrag von komma4 »

Dem Objekt muss ein Array zugewiesen werden.

Aus dem Code der Extension OOoStat

Code: Alles auswählen

Dim BasicBorder as New com.sun.star.table.BorderLine
Dim aBorder As Object
BasicBorder.OuterLineWidth = 10


for i=0 to c2+1
   aBorder=OOoStatSheet.getCellRangeByPosition(0,outputrow+7*i-1,c2+4,outputrow+7*i-1).TableBorder
   aBorder.BottomLine=BasicBorder
   OOoStatSheet.getCellRangeByPosition(0,outputrow+7*i-1,c2+4,outputrow+7*i-1).TableBorder=aBorder
   
next i

Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Re: Formatierung von Zellen

Beitrag von schaborj »

Hallo

danke für die schnelle Antwort, aber so ganz verstehe ich das nicht.
Laß mich versuchen, was ich daus erkennen kann:
Die ersten drei Kommandos Dim ... sind klar
Dann baust Du eine Schleife auf:
was bedeutet OOoStatSheet -> der Sheet der die zu ändernde Zelle enthält ???
was ist jetzt c2 und outputrow ??

oder wählst du die zu formartierende Zelle und ihre Umgebungszellen als Bereich aus . Wenn es Dir nichts ausmacht, kannst Du mir das vielleicht etwas deutlicher erklären. Ich versuche das dann in meinen Code zu implemetieren und werde diesen dann auch hier posten, zur Hilfe für andere

Im Vorraus schon mal danke
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formatierung von Zellen

Beitrag von komma4 »

also:


Der Codeabschnitt ist aus einer Extension OOoStat, die ich hier auf der Platte habe und deren Code deshalb gerade (als Beispiel) verfügbar war

BasicBorder ist eine bestimmte Struktur (siehe IDL zu BorderLine)

deren Eigenschaft OuterLineWidth wird gesetzt und dann die ganze Struktur der Eigenschaft TableBorder (einer Zelle) zugewiesen.

(Ja, OOoStatSheet ist ein Tabellenblatt)

Den Rest kannste vergessen.


Jetzt klarer?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Re: Formatierung von Zellen

Beitrag von schaborj »

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: 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
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
schaborj
*
Beiträge: 10
Registriert: Di, 08.02.2011 21:22

Re: Formatierung von Zellen

Beitrag von schaborj »

Hallo

da war noch ein Fehler beim Definieren des Bereichs im Sub. Es wurde nur eine Zelle angesprochen kein Bereich. Dann funktioniert es nicht richtig, nur die Zelle wird formatiert, nicht der Bereich.
Hier der angepasste Code

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 = 30					' 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
	dim oCell as object
	dim lcoln as long

	rem Bereich festlegen
	oCellRange = oSheet.getCellRangeByPosition(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
ich bitte vielmals um Entschuldigung :(
Bodo

Mit der Jahren weiß man immer noch nicht alles, aber die Freiheit ist das höchste Gut
Antworten