Rahmen um Zelle :?:

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Rahmen um Zelle :?:

von turtle47 » Mi, 30.08.2006 21:37

Hi Toxitom,

Werbung an:

Tari Tara
das Buch ist da.
Und das schon nach 2 Tagen per Onlinebestellung (Versandkostenfrei) :D

Echt klasse der Schmöker. Habe direkt mehrer Dinge gefunden die ich
noch gesucht habe. :lol:

Die Investition hat sich gelohnt.

Werbung aus

Schöne Grüße

Jürgen

von Toxitom » So, 27.08.2006 16:08

Hey Jürgen,

na ja, vielleicht solltest du dir doch ein Buch zu OOo Basic zulegen ;-) (z.B. siehe unten).

Wenn du jede Zelle mit einem Rahmen versehen willst, benötigst du kein TableBorder-Objekt, sondern für jeden Strich ein "BorderLine-Objekt". Das kannst du zusätzlich oder ausschliesslich nutzen. Oder - hier vielleicht einfacher - du fügst jede Zelle als einzelne Adresse im Array auf :-)

Gruss
Thomas

von turtle47 » So, 27.08.2006 10:42

Hallo Toxitom,

erst mal Dankeschön für die Antwort.

Habe leider nicht soviel Zeit mich mit Programmierung auseinanderzusetzen.
Bislang habe ich mir immer Makrofragmente aus diesem Forum zu einem Makro zusammengestell.
Leider weiss ich nicht immer genau wofür was genau ist. :oops:
Werde mir jetzt aber mal das Buch über Basicprogrammierung für OOo zulegen. :idea:

Edit: Hab da noch zwei Fragen. Ist es ohne großen Aufwand möglich,
dass in dem definierten Bereich
alle einzelnen Zellen den farbigen Rahmen haben
und wie kann ich den Rahmen zurücksetzen?

Schöne Grüße

Jürgen

von Toxitom » So, 27.08.2006 09:37

Hei Jürgen,
Geht das vieleicht ein wenig kürzer?
Das ganze erscheint mir etwas klobig.
Das ist schon OK. Da die Blöcke redundant sind, kanst du natürlich mit einer Schleife arbeiten, und Rahmen und Linie außerhalb einmal definieren:

Code: Alles auswählen

Sub rahmen_setzen() 
    dim aBereiche()
    aBereiche = array("D4:D8", "J5:J16") 'alle Bereiche
    REM Linie und Rahmen definieren
    rahmenlinie = CreateUnoStruct("com.sun.star.table.BorderLine")
    With rahmenlinie
      .Color = RGB( 255, 0, 0 )
      .OuterLineWidth = 100
    End With
    rahmen = createUnoStruct("com.sun.star.table.TableBorder")
    With rahmen
      .TopLine = rahmenlinie
      .IsTopLineValid = True
      .BottomLine = rahmenlinie
      .IsBottomLineValid = True
      .LeftLine = rahmenlinie
      .IsLeftLineValid = True
      .RightLine = rahmenlinie
      .IsRightLineValid = True
    End With
    for i = 0 to uBound(aBereiche())   'Schleife über alle Bereiche
        oZellBereich = ThisComponent.Sheets(  0).getCellRangeByname( aBereiche(i) ) 'der jeweilige Zellbereich
       REM oZellbereich.supportsService("com.sun.star.sheet.SheetCell")
       oZellbereich.TableBorder = rahmen 
    next
end Sub
Brauchst du noch mehr Bereiche, so erweitere einfach den Bereichsarray :-)
Was allerdings deine "supportsService" Zeile soll, ist mir schleierhaft. entweder du scheibst eine Bedingung (wie Stefan) oder du lässt sie weg. So hat sie keine Wirkung!

Viele Grüße
Thomas

von turtle47 » So, 27.08.2006 09:12

Hallo Stephan,

ich möchte mehrere Zellbereiche mit Rahmen versehen und habe Dein
Makro wie folgt umgeschrieben:

Code: Alles auswählen

Sub rahmen_setzen()
oZellBereich = ThisComponent.Sheets(0).getCellRangeByname( "D4:D8" ) 'Erster Zellbereich
oZellbereich.supportsService("com.sun.star.sheet.SheetCell")
   rahmenlinie = CreateUnoStruct("com.sun.star.table.BorderLine")
   With rahmenlinie
      .Color = RGB( 255, 0, 0 )
      .OuterLineWidth = 100
   End With
   rahmen = createUnoStruct("com.sun.star.table.TableBorder")
   With rahmen
      .TopLine = rahmenlinie
      .IsTopLineValid = True
      .BottomLine = rahmenlinie
      .IsBottomLineValid = True
      .LeftLine = rahmenlinie
      .IsLeftLineValid = True
      .RightLine = rahmenlinie
      .IsRightLineValid = True
   End With
   oZellbereich.TableBorder = rahmen
oZellBereich = ThisComponent.Sheets(0).getCellRangeByname( "J5:J16" ) 'Zweiter Zellbereich
oZellbereich.supportsService("com.sun.star.sheet.SheetCell")
   rahmenlinie = CreateUnoStruct("com.sun.star.table.BorderLine")
   With rahmenlinie
      .Color = RGB( 255, 0, 0 )
      .OuterLineWidth = 100
   End With
   rahmen = createUnoStruct("com.sun.star.table.TableBorder")
   With rahmen
      .TopLine = rahmenlinie
      .IsTopLineValid = True
      .BottomLine = rahmenlinie
      .IsBottomLineValid = True
      .LeftLine = rahmenlinie
      .IsLeftLineValid = True
      .RightLine = rahmenlinie
      .IsRightLineValid = True
   End With
   oZellbereich.TableBorder = rahmen
End Sub
Geht das vieleicht ein wenig kürzer?
Das ganze erscheint mir etwas klobig.

Im voraus vielen Dank.

Jürgen

von mike6 » Mi, 07.09.2005 13:02

:D - :D - :D


Danke. Funktioniert bestens.

mfg
mike6

von Stephan » Mi, 07.09.2005 12:10

Code: Alles auswählen

Sub rahmen_setzen()
bereich = ThisComponent.getCurrentSelection()
if bereich.supportsService("com.sun.star.sheet.SheetCell" ) _
OR bereich.supportsService("com.sun.star.sheet.SheetCellRange" ) _
OR bereich.supportsService("com.sun.star.sheet.SheetCellRanges") Then
	rahmenlinie = CreateUnoStruct("com.sun.star.table.BorderLine")
	With rahmenlinie
		.Color = RGB( 255, 0, 0 )
		.OuterLineWidth = 100
	End With
	rahmen = createUnoStruct("com.sun.star.table.TableBorder")
	With rahmen
		.TopLine = rahmenlinie
		.IsTopLineValid = True
		.BottomLine = rahmenlinie
		.IsBottomLineValid = True
		.LeftLine = rahmenlinie
		.IsLeftLineValid = True
		.RightLine = rahmenlinie
		.IsRightLineValid = True
	End With
	bereich.TableBorder = rahmen
End If
End Sub

Gruß
Stephan

Rahmen um Zelle :?:

von mike6 » Mi, 07.09.2005 11:20

Hallo,

ich möchte eine zuvor markierte Zelle ( oder Zellbereich ) mit
einem roten Rahmen versehen.

Leider bekomme ich das nur über einen zuvor deffinierten Bereich hin:



oZellBereich = ThisComponent.Sheets(0).getCellRangeByname( "B2:D4" )


Wie schreibe ich das Makro um, dass nur der zuvor markierte Bereich
gemeint ist.

mfg

mike6

Nach oben