In einer Zelle verschiedene Attribute

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: In einer Zelle verschiedene Attribute

Re: In einer Zelle verschiedene Attribute

von Charly » Sa, 29.11.2008 09:12

Hallo Balu!

Ich habe eigentlich schon verstanden, was das &T(V_1) bewirkt. Du hast V_1 als "Name" festgesetzt und hinter diesem Namen steht eine Zellvorlage, die den Hintergrund und die Schriftfarbe verändert. Auf diese Weise eine Zellvorlage zuzuweisen, kannte ich bisher nicht. Das muss ich mir merken.

Bei der Ursachenforschung hatte ich nur das Gefühl, dass dadurch das Anpassen der Zelle durch die Funktion langsamer vorsich geht. Mein Makro also schneller die Zelle abfrägt, als der Inhalt aufgebaut ist. Deine Aussage, dass bei mehrmaligem Laufen des Makros, es doch noch funktioniert hat, weist zumindestens darauf hin. Eine andere Erklärung ist mir nicht eingefallen.

Aber nachdem du darauf verzichten kannst, kann ich nur sagen "Ende gut, Alles gut" :D

Gruß
Charly

Re: In einer Zelle verschiedene Attribute

von balu » Fr, 28.11.2008 14:14

Hallo Charly,

meine geschilderte Problembeobachtung hast Du wohl nicht so ganz richtig verstanden.
Anfangs stand in der Zelle z.B. einfach nur V1 auf "Blankem" Hintergrund ohne jegliche Formatierung drin, welche durch eine Formel ausgegeben wurde. Und erst als ich fast die gleiche Formel, nur mit der erwähnten Änderung, genommen hatte, trat das Problem auf. In der Zelle stand jetzt wieder V1 drin, nur mit dem Farblichen Hintergrund und anderer Schriftfarbe.
Hier mal ein screenie von normal,
V1-N.jpg
V1-N.jpg (1.77 KiB) 201 mal betrachtet
und hier mit Farbe, der das Problem verursachte.
V1-F.jpg
V1-F.jpg (2.47 KiB) 200 mal betrachtet
Der Inhalt der Zelle hatte sich, wie zu sehen, also nicht geändert, nur die Darstellung auf Grund der verwendeten Formel.



Ich danke dir dafür das Du dir Gedanken wegen Zellvorlagen zuzuweisen gemacht hast :D
Aber das brauche ich jetzt nicht mehr, denn so wie es ist, ist es sehr gut. Jedoch werde ich mir das für Später mal gut aufheben :wink:

Charly hat geschrieben: Dein Kalender schaut gut aus. Meine Gratulation.
Danke, freut mich zu hören :D

Hier mal ein kleines Bild wo er rein kommt. Ist ein 3-Monatsübersicht-Tischkalender.
Kalender2k.jpg
Kalender2k.jpg (48.33 KiB) 201 mal betrachtet
Ist nicht für mich, sondern für einen Bekannten von mir. Die Datei bekommt er jetzt als ein vorgezogenes Nikolaus Geschenk :wink:



Gruß
balu

Re: In einer Zelle verschiedene Attribute

von Charly » Fr, 28.11.2008 10:55

Hallo Balu!

Ich habe mir noch mal Gedanken gemacht, über deinen Wunsch, der Vorlagenzellen eine Zellvorlage zuzuweisen.
Das kann auch über das Makro geschehen.

Ändere das Makro vor dem Befehl "select Case suche" wie folgt:

Code: Alles auswählen

Zelle = Hilfsblatt.getCellByPosition(4,I+4)
Suche = Zelle.string
Select Case Suche
Ordne jeder Auswahl, die gewünscht Vorlage folgendermaßen zu:

Code: Alles auswählen

Case "V1"
Quelle = Hilfsblatt.getCellrangeByName("K3").getRangeAddress()
Zelle.cellstyle = "V_1"
Mache auch noch eine neutrale Zellvorlage für die nicht betroffenen Zellen und ordne diese bei "Case Else" zu.

Code: Alles auswählen

Case Else
Kenn = 1
Zelle.cellstyle = "V_0"
Gruß
Charly

Re: In einer Zelle verschiedene Attribute

von Charly » Fr, 28.11.2008 08:04

Hallo Balu!

Dein Kalender schaut gut aus. Meine Gratulation.
Mir war bei meinen Tests etwas aufgefallen, was wahrscheinlich mit .getCellByPosition() zu tun hat.
Das Problem hat nichts damit zu tun, sondern damit

Code: Alles auswählen

Case "V1"
Hier frägt das Makro nach dem Inhalt der Zelle ab. Ist dieser nicht identisch mit "V1", durch
Mit &T(V_1) wies ich die eben erwähnte Farbvorlage zu.
ignoriert das Makro den Wert.

Gruß
Charly

Re: In einer Zelle verschiedene Attribute

von balu » Do, 27.11.2008 20:27

Hallo liebe Freunde,

ich bin wirklich seeeeehr glücklich und zufrieden mit dem Ergebnis :lol:
Und ich möchte mich hiermit noch mal bei allen bedanken die mir mit Rat und Tat zur Seite standen. Danke :D

Der Kalender hat jetzt ein sehr gutes Beta-Stadium erreicht. Und Beta deshalb, weil da noch ein paar kleine Anderungen "unter der Motorhaube" zu erledigen sind, die aber mit der Hauptfunktion nichts zu tun haben.

Ich habe es sogar geschafft, dass Makro mit dem Drehfeld für die Jahresauswahl zu kombinieren. So braucht man nur noch das Jahr auszuwählen, und schwupp-di-wupp ist alles erledigt :D

Wer will kann ihn sich ja mal anschauen, er ist im Anhang.



Mir war bei meinen Tests etwas aufgefallen, was wahrscheinlich mit .getCellByPosition() zu tun hat. Ist nichts schlimmes, nur im ersten moment hatte es mich doch etwas verwirrt. Ich konnte jedoch das Problem selber herausfinden und beseitigen.

Um was ging es!?
In der Datei, die ich hier auch angehängt hatte, gab ich den Code von Charly ein. Er funktionierte auf anhieb einwandfrei! Aber als ich die Formeln, die in den Spalten "Vorlage" drin waren, in die anderen integrierte, gabs Probleme. Ich musste manchmal das Makro zweimal hintereinander aufrufen, damit alle definierten Felder ordnungsgemäß ausgefüllt wurden. Das war aber vorher nicht der Fall gewesen. Ich konnte im ersten Augenblick nicht herausfinden warum das so war. Es hatte sich eigentlich durch die integration nicht sehr viel geändert. Das einzige was offensichtlich war, das war jetzt die Optische Darstellung der anzuwendende Vorlage.
Vorher stand in der "Vorlagenspalte" z.B. V1
Und jetzt stand da auch wieder V1, nur mit dem einzigen unterschied das die Schrift Weiß, und der Hintergrund Blau war. Nun, das kam durch folgende Formel, hier der Reduzierte ausschnitt, zu stande.

Code: Alles auswählen

WENN(überprüfung;"V1"&T(V_1);sonst)
Mit &T(V_1) wies ich die eben erwähnte Farbvorlage zu.
Und erst als ich diesen Teil aus der Formel entfernte, funktionierte alles wieder einwandfrei.
Also muss sich wahrscheinlich aus irgendwelchen Gründen .getCellByPosition() an der Umwandelung einer Zahl in einen leeren Textstring stören.
Nun, das war ja auch nicht weiter schlimm, da ja dieses Tabellenblatt in diesem zustand für mich nur eine Programmier- und Vergleichshilfe war. Und in der jetzigen Version habe ich dieses Blatt von unnützen Ballast befreit. Es sind jetzt nur noch Sachen dort, die auch dahin gehören.

Ob das Problem jetzt aber auch wirklich an .getCellByPosition() gelegen hat, kann ich nicht mit gewissheit sagen. Ist mehr eine Laienvermutung meinerseits. Aber ich dachte mir mal, dass ich davon berichte.


@Charly
Danke für deine Erklärung bezüglich "Kenn", jetzt verstehe ich es :D
Ja ja! Die Zeiten als ich auf meinen Atari 800XL in Turbo-BASIC programmierte sind lange vorbei, und nicht mit diesem Basic hier zu vergleichen. Aber Spaß hatte es dennoch gemacht :lol:



Gruß
balu
Dateianhänge
Tischkalender_Beta.ods
(33.17 KiB) 43-mal heruntergeladen

Re: In einer Zelle verschiedene Attribute

von Charly » Mi, 26.11.2008 21:06

Hallo Balu!

Es freut mich, dass dir das Programm hilft. :D

"Kenn" ist nur eine Hilfsvariable für die Select Case Abfrage und die folgende If-Abfrage. Ich starte in die Abfrage mit dem Wert = 0. Wird V1 bis V7 gefunden bleibt der Wert 0, wird kein Sonderformat gefunden, erhält die Variable den Wert = 1. Die IF-Abfrage wird nur bei Wert = 0 durchlaufen, bei Wert 1 brauche ich sie ja nicht.

Gruß

Charly

Re: In einer Zelle verschiedene Attribute

von balu » Mi, 26.11.2008 17:50

Hallo Charly,

Du glaubst gar nicht wie Glücklich Du mich gemacht hast :lol: :D

Der Kalender trägt nicht umsonst den Beinamen "Baustelle", da ich selber noch einige Formeln umprogrammieren muss. Und dann ist das mit den Feiertagen auch kein Thema, da sie jetzt als nächstes mit in die anderen Formeln einfließen werden.

Meine bisherigen Tests zauberten mir ein glückliches Lächeln in mein Gesicht. :D
Merci! Merci! Merci!


Eine Frage habe ich da aber noch.
Sehe ich das richtig, dass "Kenn" ein Patzhalter (Variable) ist, die also den Indexzähler aufnimmt? Oder wie verhält sich das?



Gruß
balu

Re: In einer Zelle verschiedene Attribute

von Charly » Mi, 26.11.2008 08:39

Hallo Balu!

Ich habe mich mal an der gewünschten Formatübertragung versucht. Allerdings nicht mit einer Funktion, sondern mit einem "Sub". Vor der Übertragung habe ich zunächst die alte Formatierung herstellt, indem ich in die Felder B16 und C16 deine Funktion geschrieben habe. Dann habe ich deine Hilfstabelle abgearbeitet und je nach Vorlagennummer kopiert. Die beiden Zeilen Ostermontag und Pfingssonntag habe ich dabei nicht berücksichtigt. Hier mein Ergebnis:

Code: Alles auswählen

Sub FormatKalender()

Dim Doc as Object
Dim Monate
Dim Hilfsblatt as Object
Dim Formel1 as String
Dim Formel2 as String
Dim Monatsblatt as Object
Dim Zelle as Object
Dim Suche as String
Dim Quelle as Object
Dim Ziel as Object

Doc = ThisComponent
Hilfsblatt = Doc.sheets.getByName("temp_KALENER")
Monate =Array("Dez","Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov")

'Alte Formatierungen zurücksetzen

Formel1 = "=DoMo_mitte"
Formel2 = "=DoDi_mitte"

For I = 0 to 11

Monatsblatt = Doc.sheets.getByName(Monate(I))
Zelle = Monatsblatt.getCellRangeByName("B16")
Zelle.formula = Formel1


Zelle = Monatsblatt.getCellRangeByName("C16")
Zelle.formula = Formel2

next I

'Neue Formatierungen für B16 übertragen

For I = 0 to 11

Kenn = 0
Suche = Hilfsblatt.getCellByPosition(15,I+4).string
Select Case Suche

Case "V1"
Quelle = Hilfsblatt.getCellrangeByName("T3").getRangeAddress()

Case "V2"
Quelle = Hilfsblatt.getCellrangeByName("V3").getRangeAddress()

Case "V3"
Quelle = Hilfsblatt.getCellrangeByName("X3").getRangeAddress()

Case "V4"
Quelle = Hilfsblatt.getCellrangeByName("Z3").getRangeAddress()

Case "V5"
Quelle = Hilfsblatt.getCellrangeByName("AB3").getRangeAddress()

Case "V7"
Quelle = Hilfsblatt.getCellrangeByName("AF3").getRangeAddress()

Case Else
Kenn = 1
End select

If Kenn = 0 then
Monatsblatt = Doc.sheets.getByName(Monate(I))
Ziel = Monatsblatt.getCellRangeByName("B16").getCellAddress()
Monatsblatt.copyrange(Ziel, Quelle)
End if

Next I

'Neue Formatierungen für C16 übertragen

For I = 0 to 11

Kenn = 0
Suche = Hilfsblatt.getCellByPosition(17,I+4).string
Select Case Suche

Case "V1"
Quelle = Hilfsblatt.getCellrangeByName("T3").getRangeAddress()

Case "V2"
Quelle = Hilfsblatt.getCellrangeByName("V3").getRangeAddress()

Case "V3"
Quelle = Hilfsblatt.getCellrangeByName("X3").getRangeAddress()

Case "V4"
Quelle = Hilfsblatt.getCellrangeByName("Z3").getRangeAddress()

Case "V5"
Quelle = Hilfsblatt.getCellrangeByName("AB3").getRangeAddress()

Case "V7"
Quelle = Hilfsblatt.getCellrangeByName("AF3").getRangeAddress()

Case Else
Kenn = 1
End select

If Kenn = 0 then
Monatsblatt = Doc.sheets.getByName(Monate(I))
Ziel = Monatsblatt.getCellRangeByName("C16").getCellAddress()
Monatsblatt.copyrange(Ziel, Quelle)
End if

Next I

End Sub
Ich hoffe es funktioniert in allen Fällen. Zu einem umfangreichen Test hatte ich keine Zeit mehr.

Gruß

Charly

Re: In einer Zelle verschiedene Attribute

von balu » Di, 25.11.2008 00:29

Hallo Karo,

erst mal ein Danke schön an dich :D
Karolus hat geschrieben: Das zentrale Problem ist doch, das du mitttels Formeln keine unterschiedlichen Schriftattribute in eine Zelle bekommst.
Das weiss ich doch :wink:
Ich bin jetzt mal wieder zu lange mit diesem Prob beschäftigt. Die letzten Tage krampfhaft versucht mit Code-Schnipsel, die ich hier gefunden hatte, mir etwas geeignetes aufzubauen. Ich träume schon mittlerweile davon. Und da kann es natürlich durchaus vorkommen, dass ich das nicht deutlich rübergebracht habe, dass es mir darum geht ein vorhandenes Format aus dem Quellbereich per Makro auf die zutreffende Stelle (Zielbereich) zu übertragen.
Bei meinen gestrigen recherchen bin ich da wohl schon öfters auf xray gestoßen, hatte aber keine Kraft mehr gehabt mir den englischen Text durchzulesen, und zu verstehen. Und deshalb habe ich deinen Code noch nicht testen können, weil ich xray noch net installiert habe.

Hier ist der Code, mit dem ich getestet hatte wie das in echt aussieht, wenn das Format aus dem Quellbereich übertragen wird.

Code: Alles auswählen

        Sub kopiere

    dim CellRangeAddress as New com.sun.star.table.CellRangeAddress
    dim CellAddress as New com.sun.star.table.CellAddress

    Document = ThisComponent


    Rem Anfangsaddresse des Quellbereichs

    CellRangeAddress.Sheet = 14
    CellRangeAddress.StartColumn = 21
    CellRangeAddress.StartRow = 2

    Rem Endaddresse des Quellbereichs

    CellRangeAddress.EndColumn = 21
    CellRangeAddress.EndRow = 2

    Rem Anfangsaddresse des Zielbereiches

    CellAddress.Sheet = 5
    CellAddress.Column = 1
    CellAddress.Row = 15


    Rem Arbeitsblatt auswählen

    oBlatt = Document.sheets(5)


    oBlatt.copyrange(CellAddress, CellRangeAddress)


    end Sub

Zum Testen hatte ich ihn so geändert, dass ich erst mal nur eine Formatzelle übertrage. Man kann aber, wie unschwer zu sehen ist, einen ganzen Bereich transferieren. Aber wie müsste ich ihn umbauen, dass er je nach Blatt-Nr: eine oder zwei Zellen kopiert. :roll:

Ich weiss das meine Formulierungen momentan nicht die besten sind, aber ich krieg meine gedanken nicht mehr so recht zu Papiere. Sorry dafür :oops:


Gruß
balu

Re: In einer Zelle verschiedene Attribute

von Karolus » Mo, 24.11.2008 23:32

Hallo Balu
Das zentrale Problem ist doch, das du mitttels Formeln keine unterschiedlichen Schriftattribute in eine Zelle bekommst.
per Makro hab ich zu dem Thema auch nichts gefunden - - nach 2 Stunden xray kam dann forlgendes raus:

Code: Alles auswählen

sub formatwechsel
osheet = thisComponent.sheets(0)
ocell = osheet.getcellrangebyname("B16")
ocursor = ocell.createtextcursor
xray ocursor
 ocursor.gotostart(true)
' ocursor.goright(10,true)
'ocursor.collapseToStart()
ocell.insertstring(ocursor," normal ",true)
ocursor.charcolor = rgb(255,0,0)
ocursor.charweight = 150
ocell.insertstring(ocursor," fettundrot ",false)
end sub
Den Rest erledigen wir morgen !

Gruß Karo

Re: In einer Zelle verschiedene Attribute

von balu » Mo, 24.11.2008 18:25

Hallo Leute,

ich hab mich wieder mit dieser Problematik befasst, aber ich finde keine möglichkeit mein Vorhaben zu realisieren. Ich hatte hier im Forum ein Makro gefunden das mir meine voreingestellte Formatierung überträgt, dass aber nur mit festen Adressen arbeitet. Nur ist es ja leider so, dass es im Kalender kein Festes Datum gibt da es ja immer wandert.

Ich hatte mir überlegt, wenn ich eine Liste erstelle worauf ein Makro zugreifen kann, um so leichter müsste es sein ein passendes Makro zu programmieren. Aber da habe ich mal wieder die Rechnung ohne den Wirt gemacht, sprich, mein Verstand. Ich versteh null-komma-nix :? . Ich weiss nicht wie ich das hinbekommen soll :roll: :(
Charly hat geschrieben: Ich würde einfach ein Hilfstabellenblatt anlegen.
[...]
In weiteren Zellen würde ich alle Kombinationen der möglichen Doppeltage 23/30 und 24/31 auflisten.
Das habe ich jetzt auch mittels Formeln gemacht. Dort wird automatisch pro Monat die Doppeltage-Kombinationen angezeigt. Ferner lasse ich mir dort auch noch die passende Formatvorlagennummer anzeigen. Das sieht dann z.B. so aus.

Code: Alles auswählen

Mai	1	Blatt Nr.5	23/30V5		24/31V7
-> Die Zahl neben dem Monat ist ein Hilfsindex (nur für dort zu gebrauchen)
-> Blatt Nr. ist klar, wobei da die Zählweise ab 0 beginnt.
-> Das erste Doppeldatum kommt in die Zelle B16.
-> V5 ist die Formatvorlagennummer für das erste Doppeldatum.
-> Jetzt kommt das zweite Doppeldatum, dass in die Zelle C16 kommt.
-> V7 ist die Formatvorlagennummer für das zweite Doppeldatum.

Der Inhalt dieser Zeile ist nicht immer, und auch nicht immer gleichmäßig, mit diesen Daten ausgefüllt, das ist von Jahr zu Jahr unterschiedlich. Es kann auch manchmal gar nichts drin stehen, bis auf den Monatsnamen, der steht fest verankert.

Anmerkungen:
- Die Zellen B16 und C16 stehen fest. Ein Doppeldatum kann in keine andere Zelle kommen, zumindest nicht mit der gewünschten Formatierung.
- Es stehen insgesamt 6 Formatvorlagen bereit. 4 für Feiertage, und 2 für normale Tage.


Also wie bekomme ich das hin, dass das Makro in diesem Zusatzblatt nachschaut welcher Monat welche und wieviele Doppeldatume hat, und diese anhand der Formatvorlagennummer auf dem dementsprechenden Monat überträgt?
Es können mal 2, aber auch 4 Monate sein, die solche Doppeldatume haben.

Damit ihr mich besser versteht wie das ganze in ungefähr aussieht, und aussehen soll (Tabellenblatt "Apr"), habe ich den Kalender in den Anhang getan. Er ist noch nicht fertig, und hat da auch noch kleinere Fehler die aber für das Makro uninteressant sind.


Es wäre schön wenn ihr mir helfen könnt. :)

Ich bedanke mich schon mal für eure Bemühungen. :D


Gruß
balu
Dateianhänge
Tischkalender_Baustelle.ods
(33.72 KiB) 51-mal heruntergeladen

Re: In einer Zelle verschiedene Attribute

von balu » Fr, 06.06.2008 13:55

Hallo Michael,

danke für deine erklärungen. Sie sind für mich sehr aufschlussreich. :D

Gruß
balu

Re: In einer Zelle verschiedene Attribute

von ykcim » Mi, 04.06.2008 12:15

Hallo Balu,
sheet = ThisComponent.CurrentController.ActiveSheet
Wird damit das Tabellenblatt, wo der Mauscursor ist, das Aktive Blatt?


Ja, alternativ kannst Du das Blatt auch direkt auswählen:

Code: Alles auswählen

myDoc = thisComponent
sheet = myDoc.Sheets().getByName("Tabelle2")
textcur=sheet.getcellbyposition(0,0).gettext().createtextcursor()
Aktuelles Tabellenblatt, gehe auf den Zellenanfang, schalte um auf Textcursor? (reihenfolge nicht krrekt, aber ist ja nur wegen verständnis)


Mit getsellbyposition geht man nicht auf den Zellenanfang, sondern wählt sich eine Zelle aus. In diesem Fall A1. Für B2 zum Beispiel müsste man (1,1) verwenden.
textcur.gotostart(false)

Textcursor steht am Wortanfang, bei Position 0. Wenn ich jetzt ab dem zweiten Zeichen eine Markierung beginnen will, dann müsste das textcur.gotostart(2,true) heißen. Stimmt das?


Nein, gotostart setzt den Cursor an den Anfang. Weitere Parameter gehen nicht. Wenn Du mit der Markierung ab dem zweiten Zeichen beginnen willst musst Du den Cursor vorher ohne Markierung an die zweite Stelle bewegen und dann die nächsten Zeichen markieren. Um zum Beispiel die drei Zeichen ab dem zweiten Zeichen zu markieren:

Code: Alles auswählen

textcur.goright(2,false)
textcur.goright(3,true)
textcur.goright(3,true)
Markiere mit dem Textcursor 3 Zeichen nach rechts.


Richtig
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
Schalte um auf Schriftgrad, und wähle die Bibliothek "com.sun.star.awt.FontWeight" aus. Anschließend den Schriftgrad Fett (BOLD) setzen.


com.sun.star.awt.FontWeight.BOLD ist eine Konstante und keine Bibliothek. com.sun.star.awt.FontWeight.BOLD hat den Wert 150.

Und wenn ich das richtig sehe, ist dieser Code nur für ein Tabellenblatt. Und ferner muss eine Zelle manuell mit der Maus angewählt werden. Korrekt!?
Nein die Zelle muss nicht markiert sein. Die Zelle wird mit getbyposition ausgewählt und ist unabhängig von der Maus
Wenn man die aktuelle Zelle verweden will geht das mit getCurrentSelection().

Code: Alles auswählen

zelle=oDoc.getCurrentSelection()
mfg
Michael

Re: In einer Zelle verschiedene Attribute

von balu » Di, 03.06.2008 18:09

Hallo Charly und Michael,

für die ideen erst einmal ein danke schön an euch beiden. :D

@Charly
Eine seperate Feiertagsliste hatte ich natürlich schon erstellt. Das mache ich immer so. :wink:
Die Idee, mit einem extra Bereich zum gestallten der Doppeltage, ist nicht schlecht. Und je nachdem wie ich weiter vorgehe, werde ich auch darauf zurückgreifen. Muss erst mal ein wenig Experimentieren.

@Michael
Das ist das, was ich mir in meinem geistigen Auge vorgestellt hatte :D . Ich habe das noch nicht Programmiert, da ich erst mal versucht habe das zu verstehen was da geschieht.

Zu deinem Code hätte ich noch ein paar fragen.
  • sheet = ThisComponent.CurrentController.ActiveSheet
  • Wird damit das Tabellenblatt, wo der Mauscursor ist, das Aktive Blatt?
  • textcur=sheet.getcellbyposition(0,0).gettext().createtextcursor()
  • Aktuelles Tabellenblatt, gehe auf den Zellenanfang, schalte um auf Textcursor? (reihenfolge nicht krrekt, aber ist ja nur wegen verständnis)
  • textcur.gotostart(false)
  • Textcursor steht am Wortanfang, bei Position 0. Wenn ich jetzt ab dem zweiten Zeichen eine Markierung beginnen will, dann müsste das textcur.gotostart(2,true) heißen. Stimmt das?
  • textcur.goright(3,true)
  • Markiere mit dem Textcursor 3 Zeichen nach rechts.
  • textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
  • Schalte um auf Schriftgrad, und wähle die Bibliothek "com.sun.star.awt.FontWeight" aus. Anschließend den Schriftgrad Fett (BOLD) setzen.
Und wenn ich das richtig sehe, ist dieser Code nur für ein Tabellenblatt. Und ferner muss eine Zelle manuell mit der Maus angewählt werden. Korrekt!?

Trifft meine Interpretation soweit zu?

Gruß
balu

Re: In einer Zelle verschiedene Attribute

von ykcim » Di, 03.06.2008 11:40

Hallo,

um den Text einer Zelle per Makro unterschiedlich zu formatieren muß man den Textcursor verwenden.
Um zum Beispiel die ersten drei Buchstaben einer Zelle fett zu formartieren:

sheet = ThisComponent.CurrentController.ActiveSheet
textcur=sheet.getcellbyposition(0,0).gettext().createtextcursor()
textcur.gotostart(false)
textcur.goright(3,true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD

mfg
Michael

Nach oben