Zelle per Makro Farbe aus RGB-Werten zuweisen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Sa, 25.11.2017 16:20

Äh... Mein Fehler! Ich meinte natürlich mttels eines Makros, quasi "Kopiere das Format der Zelle X und erstelle daraus eine FV mit dem Namen des Zellinhaltes"
Liebe Grüße, Marcel

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Sa, 25.11.2017 16:36

Warum werden die Formate nicht in die neu erstellte FV übernommen?
Dateianhänge
calc error 03 - werte nicht korrekt übernommen.JPG
calc error 03 - werte nicht korrekt übernommen.JPG (122.44 KiB) 2195 mal betrachtet
Liebe Grüße, Marcel

Benutzeravatar
balu
********
Beiträge: 3643
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von balu » Sa, 25.11.2017 17:01

Hallo,

mich würde mal interessieren ob dein gezeigter Code von dir persönlich stammt, oder ob Du irgendwo etwas abgekupfert hast.

Code: Alles auswählen

Dim Wert1   As Integer
Dim Wert2   As Integer
Dim Wert3   As Integer
Warum werden Variablen deklariert, wenn sie in der dementsprechenden Sub nicht angewendet werden?

Code: Alles auswählen

myDoc = thisComponent
mySheet = myDoc.sheets(6)
mycell = thisComponent.sheets(6).getcellbyposition(0,0)

for zaehler=7 to 87 'Zeilen 8 bis 87

'Werte für die Hintergrundfarbe auslesen    	
	mycell = ThisComponent.Sheets().getByName("Sheet7").getcellbyposition(188+1, Zaehler) 'Spalte 188 (GF)
myDoc wird hier definiert, aber nicht deklariert, und nur ein einziges mal in der folgezeile angewendet.
mySheet wird hier definiert, aber nicht deklariert, und ferner wird diese Variable überhaup nicht benutzt.
mycell wird hier definiert, aber nicht deklariert, und ein paar Zeilen später wird sie wieder anders defeniert.

Das ist schon reichlich Chaotisch, und vor allem kann das unvorhergesehene Probleme aufrufen, wenn Variablen nicht Ordnungsgemäß deklariert und definiert werden.

Dazu kann ich nur eins sagen: Lösch die 3 Müllzeilen.

Code: Alles auswählen

.getcellbyposition(188+1, Zaehler) 'Spalte 188 (GF)
FALSCH!!!
Wenn Du mit getcellbyposition arbeitest, dann hat die spalte GF nicht den Indexwert 188, sondern 187. Denn wenn nix anderes vorgegeben wird, dann fängt die Zählung bei 0 an. Also Spalte A ist gleich 0, Spalte G ist gleich 6 etc.

Und außerdem verschiebst Du den Indexwert von 188 auf 189 (188+1), und landest dadurch dann bei der Spalte GH.

Das gleiche gilt auch für die Zeilen.
Du siehst im Tabellenblatt die Zeile 1, und so identifizierst Du sie auch, als die 1. Zeile. Aber in getcellbyposition ist die Zeile 1 (die Du siehst) die Zeile 0.

Nicht nur bei getcellbyposition ist dies die Nullbasierende Zählung die fest vorgegeben ist. Es gibt aber auch ausnahmen, und eine zeige ich gleich.


Aber warum machst du dir das denn überhaupt so unnötig unbequem?
Das geht doch auch einfacher, und vor allem übersichtlicher.

Code: Alles auswählen

.getCellRangeByName("GF" & Zaehler)
Du brauchst also dir nicht extra als Kommentar hinschreiben das es sich um die Spalte GF handelt, sondern siehst gleich in getCellRangeByName den realen Spaltennamen.

Bei getCellRangeByName ist jetzt aber die Zählung nicht mehr Nullbasierend, sondern beginnend mit 1.
Kleines Beispiel um den unterschied zwischen den beiden "Positionsangaben" zu verdeutlichen.

Code: Alles auswählen

1)
.getCellByPosition(1,1)

2)
.getCellRangeByName("B" & 1)
1)
Es wird die Zelle B2 angesprochen.

2)
Es wird die Zelle B1 angesprochen.



Und nun ein weiteres Thema, was dir einiges erleichtert und auch für mehr Ordnung sorgt.

Code: Alles auswählen

	mycell = ThisComponent.Sheets().getByName("Sheet7").getcellbyposition(188+1, Zaehler) 'Spalte 188 (GF)
    BGWert1 = myCell.Value

   	mycell = ThisComponent.Sheets().getByName("Sheet7").getcellbyposition(188+2, Zaehler) 'Spalte 189 (GG)
    BGWert2 = myCell.Value
Hier von interessieren uns jetzt nur die Zeilen die mit mycell beginnen. Auffalend ist, das sich das hier

Code: Alles auswählen

ThisComponent.Sheets().getByName("Sheet7")
immer wieder wiederholt, und das nicht nur in den beiden gezeigten Zeilen.
Das geht einfacher, verständlicher und übersichtlicher.

Als erstes die Variabeln deklaration.

Code: Alles auswählen

Dim oDok as Object
Dim oBlatt7 as Object
Nun die Variablen definition.

Code: Alles auswählen

	oDok = thisComponent
	oBlatt7 = oDok.sheets.getByName("Sheet7")
So, und nun kombinieren wir das ganze jetzt noch mit der Zelladressierung, und schon haben wir einen etwas sauberen, verständlichern Code. 8)

Code: Alles auswählen

	mycell = oBlatt7.getCellRangeByName("GF" & Zaehler)
    BGWert1 = myCell.Value

   	mycell = oBlatt7.getCellRangeByName("GG" & Zaehler)
    BGWert2 = myCell.Value

Deine Hausaufgaben sind jetzt: ;-)
- Beachte und bedenke meine Hinweise zu der Zählweise (Nullbasierend/normale Zählung)
- Überprüfe ob Du wirklich die richtigen Zellen aufrufst, beziehungsweise ansprichst
- Räume deinen Code auf, rausschmeissen was nicht gebraucht wird
- Setze meine Änderungsvorschläge in die Tat um
- Probier das geänderte Makro aus, und teile uns das Ergebnis mit.

Ich weiß nicht ob Du dir durch die falsche Zelladressierung einen fetten Fehler eingebaut hast, weil Du falsch gedacht hast und dadurch dein Makro nicht so läuft wie es soll, aber wenn schon mal diese Fehlerquelle ausgemerzt ist, dann sind wir schon mal einen Schritt weiter.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Sa, 25.11.2017 18:13

Holla, ob ich die Antwort noch bis zum Feierabend schaffe...?

Also, die unterschiedlichen "Wert"-Variablennamen kommen aus einer nachträglichen Umbenennung, als ich die Wertvariablen für die Schriftfarbe hinzugefügt hatte. Inwieweit dieses Ge -Dim-me einen Unterschied macht, konnte ich noch nicht feststellen - in manchen Code-Beispielen im Netz ist was geDimmt, in anderen nicht.

Und warum nicht geDimmte Variablen trotzdem funktionieren, verstehe ich auch nicht...

Grundsätzlich hast du schon recht: Der Großteil des Codes stammt von einem ziemlich schlauen Menschen hier im Forum, dessen Namen ich jetzt jedoch aufgrund der Threadstruktur nicht ad hoc zur Hand habe.

Definieren und deklarieren ist für mich als Einsteiger eigentlich das selbe; scheint aber nen Unterschied zu geben...(?)
Das ist schon reichlich Chaotisch, und vor allem kann das unvorhergesehene Probleme aufrufen, wenn Variablen nicht Ordnungsgemäß deklariert und definiert werden.
Ja, da hast du wohl recht, darum habe ich das ganze so gut ich konnte für meine Begriffe übersichtlicher gemacht, indem ich diese Vorabzusammenfassungen - xyz = riesenlangeObjektKategorieKette - aufgelöst und in jeder Zeile exakt unter einander geschrieben habe. Wie gesagt, ich persönlich empfinde dies als übersichtlicher, da ich nicht immer gucken muss "Wenn das dies ist, dann heißt das, jenes ist dieses, also müsste dann..." Du weißt was ich meine...
FALSCH!!!
Wenn Du mit getcellbyposition arbeitest, dann hat die spalte GF nicht den Indexwert 188, sondern 187. Denn wenn nix anderes vorgegeben wird, dann fängt die Zählung bei 0 an. Also Spalte A ist gleich 0, Spalte G ist gleich 6 etc.
Diese Differenz war mir noch von früher bewusst. Die Kommentare wurden nicht aktualisiert, ansonsten werden die richtigen Spalten und Zeilen vom Makro angesprochen. Das sehe ich daran, dass zum einen die in der SVERWEIS-Tabelle visualisierten Zellen korrekt ausgelesen (Name der FV) und eingefärbt werden.
Aber warum machst du dir das denn überhaupt so unnötig unbequem?
Das geht doch auch einfacher, und vor allem übersichtlicher.
CODE: ALLES AUSWÄHLEN
.getCellRangeByName("GF" & Zaehler)
Du brauchst also dir nicht extra als Kommentar hinschreiben das es sich um die Spalte GF handelt, sondern siehst gleich in getCellRangeByName den realen Spaltennamen.
DAS wiederum kannte ich bisher noch nicht. Werde den Code dahingehend erstmal ändern, sobald ich das Hauptproblem gefunden und gelöst bekommen habe...
Und nun ein weiteres Thema, was dir einiges erleichtert und auch für mehr Ordnung sorgt.
CODE: ALLES AUSWÄHLEN
mycell = ThisComponent.Sheets().getByName("Sheet7").getcellbyposition(188+1, Zaehler) 'Spalte 188 (GF)
BGWert1 = myCell.Value

mycell = ThisComponent.Sheets().getByName("Sheet7").getcellbyposition(188+2, Zaehler) 'Spalte 189 (GG)
BGWert2 = myCell.Value
Hier von interessieren uns jetzt nur die Zeilen die mit mycell beginnen. Auffalend ist, das sich das hier
CODE: ALLES AUSWÄHLEN
ThisComponent.Sheets().getByName("Sheet7")
immer wieder wiederholt, und das nicht nur in den beiden gezeigten Zeilen.
Das geht einfacher, verständlicher und übersichtlicher.
Ja, ich weiß. Das war auch vom Helferlein ursprünglich auch genau so wie du es vorgeschlagen hast, aber da das hinten u vorn nicht funktioniert hat und ich bei diesem dasistdasunddasistdas nicht durchgesehen habe, habe ich es mir sozusagen aufgelöst. länger zwar, aber für den anfänger übersichtlicher.

so feierabend jetzt, bis montag! jetzt ist erstmal wochendeeeeeeeendeeeee

LG Masl
Liebe Grüße, Marcel

Toxitom
********
Beiträge: 3483
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Toxitom » Sa, 25.11.2017 20:34

Hallo Marcel,

mach es nicht zu kompliziert und bringe den Code erst mal zum Laufen. Der Fehler ist leicht identifiziert:

Anders als in Writer sind die Cellforamte in Calc etwas komplizierter.

Das Objekt "neuerZellstyle" wird zwar korrekt erzeugt, ist aber völlig leer und kann so keine Eigenschaften aufnehmen.

Das weist du nun zunächst dem Container zu - dadurch "erbt" es alle Standardeinstellungen.

Dann änderst Du die gewünschten Eigenschaften:

Code: Alles auswählen

 ...
 neuerZellstyle = thisComponent.createInstance("com.sun.star.style.CellStyle")
 cs = thisComponent.styleFamilies.getByName("CellStyles")
 cs.insertbyname("test",neuerZellstyle)  'hinzugefügt mit Namen "test"
 REM Jetzt den neuen Stil bearbeiten
 st = cs.getByName("test")
 With st
   .CellBackColor = rgb(122,23,45)
   .charheight = 6
   .charColor = rgb(y,x,z)  'musste natürlich Werte einfügen!
 End with
 ...
 


So sollte das furzen...

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Benutzeravatar
balu
********
Beiträge: 3643
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von balu » Sa, 25.11.2017 23:06

Hallo Marcel,

Ja jetzt wird einiges klarer. Typische Testdatei. Da wird hier was probiert und dort was umgeschrieben, und schwupp-di-wupp hat man den Salat. Ist voll verständlich, und passiert jedem mal.

Inwieweit dieses Ge -Dim-me einen Unterschied macht, konnte ich noch nicht feststellen - in manchen Code-Beispielen im Netz ist was geDimmt, in anderen nicht.
Tja, das Thema Variablen deklaration und definition ist so eine Sache für sich selbst. Mal ist es dringend empfohlen, mal kann man es ein bischen lockerer angehen.

Und warum nicht geDimmte Variablen trotzdem funktionieren, verstehe ich auch nicht...
Hängt von der Variablen selbst ab.
Wenn der Basic-Interpreter erkennt, das die Variable nur Text aufnimmt, und nur in der einen Sub verarbeitet wird, dann ... mal ganz salopp gesagt ... wird schon mal eine Auge zugedrückt.

Definieren und deklarieren ist für mich als Einsteiger eigentlich das selbe; scheint aber nen Unterschied zu geben...(?)
Der Unterschied ist der, das mit der deklaration gesagt wird was die Variable beinhalten darf, und mit der definition wird die Variable dementsprechend gefüttert, aber auch nur mit dem was sie beinhalten darf.

Mal ein einfaches Beispiel.

Code: Alles auswählen

Dim iZahl as Integer
Klare Sache, es wird eine Variable auf Ganze Zahlen vorbereitet.

Code: Alles auswählen

iZahl = 1.123456
Wohl bemerkt, der Punkt (.) ist das Dezimaltrennzeichen in Basic. Wir würden aber von Hand 1,23456 schreiben.

Bis hier hin kein Drama. Doch das kommt jetzt.

Code: Alles auswählen

Print iZahl *3
Und Du wirst feststellen, das dir auf dem Bildschirm einfach eine 3 ausgegeben wird.
Der Grund ist ganz einfach.
Durch die deklaration wird der Variablen Typ auf Integer (Ganze Zahl) gesetzt. Zahlen mit Nachkommastellen werden gerundet abgeschnitten.

Du siehst, was für dich das selbe ist (war), sind zwei verschiedene Dinge.


So viel dazu.

Kommen wir zur Lösung deines Problems.

Nach dem ich deinen Code erstmal so aufgeräumt und umgeschrieben habe wie ich es dir empfohlen und ich es mir vorgestellt hatte, ging es auf die "Fehlersuche". Eigentlich ist das ja nicht ganz korrekt, da ja keine Fehlermeldung ausgegeben wurde. Aber anderseits war es doch eine Fehlersuche, wie ich feststellen musste.

Eigentlich hatte dir Stephan ja schon am Mittwoch die Lösung gezeigt, und Du hattest sie auch schon richtig angewendet, aber dann nahm das Chaos seinen Lauf. Da Du Probleme mit den Vorlagennamen hattest, hast Du was schon korrekt war wieder durcheinander geschmissen, und dadurch wieder Stolpersteine eingebaut. Und das nur wegen den Vorlagennamen.

Bevor ich es vergesse: Ohne die Vorarbeit von Stephan wäre ich wahrscheinlich noch immer auf der "Fehlersuche". Danke dafür 8) .


Zur Verdeutlichung.
Das hier war dein letzter gezeigte Code, genauer gesagt die Function. Aber nicht der der im Screenshot zu sehen ist.

Code: Alles auswählen

Function neuer_style(s_name As String, BGWert1 As Integer, BGWert2 As Integer, BGWert3 As Integer, _
FCWert1 as Integer, FCWert2 as Integer, FCWert3 as Integer)
	cs = ThisComponent.StyleFamilies.getByName("CellStyles")
	Dim neuerZellstyle
	neuerZellstyle = ThisComponent.CreateInstance("com.sun.star.style.CellStyle")
	neuerZellstyle.setName(s_name)
	with neuerZellstyle
		.CellBackColor = RGB(BGWert1, BGWert2, BGWert3)
		.CharColor = RGB(FCWert1, FCWert2, FCWert3)
		.CharHeight = "6"
	end with
	cs.insertByName(s_name, neuerZellstyle)
End Function

Und hier die funktionierende Function.

Code: Alles auswählen

Function neuer_style(s_name As String, BGWert1 As Integer, BGWert2 As Integer, BGWert3 As Integer, _
FCWert1 as Integer, FCWert2 as Integer, FCWert3 as Integer)
	cs = ThisComponent.StyleFamilies.getByName("CellStyles")
	neuerZellstyle = ThisComponent.CreateInstance("com.sun.star.style.CellStyle")
	neuerZellstyle.setName(s_name)
	cs.insertByName(s_name, neuerZellstyle)	
	
	With cs.getByName(s_name)
		.CellBackColor = RGB(BGWert1, BGWert2, BGWert3)
		.CharColor = RGB(FCWert1, FCWert2, FCWert3)
		.CharHeight = "6"
	end with
End Function
Und jetzt mal eine Erklärung von einem "Fortgeschrittenen Anfänger" zu einem "totalen Anfänger". Es sind also meine vereinfachten Worte.

Es gibt Objekte da müssen erst alle Parameter eingestellt werden, und erst dann kann das Objekt erzeugt und eingefügt (insertByName) werden.

Dann gibt es aber andere Objekte wo dies erst erzeugt und eingefügt wird, und erst danach werden die Parameter übergeben. Und das ist das, was Stephan gezeigt hatte und was ich jetzt eben gezeigt habe.
Warum werden die Formate nicht in die neu erstellte FV übernommen?
Damit dürfte die Frage ja jetzt erledigt sein.


Im Anhang ist eine Beispieldatei die sich an deine Vorgaben hält, aber halt aufgeräumt und ein wenig angepasst. Brauchte keine zich Zeilen, sondern nur 5 Beispielzeilen.

Es gibt da auch 2 Buttons.
"Erstellen" = Die Formatvorlagen werden erstellt.
"Löschen" = Die Formatvorlagen werden gelöscht.

Erstellt mit OO.o 3.2.1, gegengetestet mit LO 5.1.5.2. Und in beiden Versionen funktioniert alles so wie es soll. Falls ich jetzt nicht etwas übersehen habe.


@Tom
Ich habe in der Datei eine Vorlagen Lösch-Sub von dir eingebaut, die ich etwas "eingedeutsch" und ergänzt habe. Für diese einfache Aufgabe reichte sie mir vollends. Wollte dir nur mal Feedbäck geben. ;-)


So, und nun habe ich Feierabend.



Gruß
balu
Dateianhänge
Zellvorlagen_3.2.ods
(10.99 KiB) 25-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D

Benutzeravatar
balu
********
Beiträge: 3643
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von balu » So, 26.11.2017 02:01

Son Mist verdammter! :evil:
Da lies mir eine Sache keine Ruh, und musste das jetzt doch noch unbedingt ändern.

Also, das mit den Formatvorlagen extra löschen gefiel mir überhaupt nicht. Warum nicht einfach die schon gesetzten Eigenschaften der schon eingetragenen Formatvorlagennamen ändern? So das nur noch im Tabellenblatt eventuell andere Werte eingetragen werden, und beim erneuten Aufruf des Makros (durch Button "Erstellen") werden die neuen Werte einfach eingetragen.

Das geht, und ist eigentlich relativ unkompliziert. Dazu muss nur die Function etwas umgeschrieben werden, und zwar wie folgt.

Code: Alles auswählen


Function neuer_style(s_name As String, BGWert1 As Integer, BGWert2 As Integer, BGWert3 As Integer, _
FCWert1 as Integer, FCWert2 as Integer, FCWert3 as Integer)

	cs = ThisComponent.StyleFamilies.getByName("CellStyles")
	neuerZellstyle = ThisComponent.CreateInstance("com.sun.star.style.CellStyle")
	neuerZellstyle.setName(s_name)
'------------------------------------------------------------------------------- noch nicht vorhanden?
	if not cs.hasByName(s_name) then
		cs.insertByName(s_name, neuerZellstyle)
			With cs.getByName(s_name)
				.CellBackColor = RGB(BGWert1, BGWert2, BGWert3)
				.CharColor = RGB(FCWert1, FCWert2, FCWert3)
				.CharHeight = "16"
			end with
'------------------------------------------------------------------------------- schon vorhanden!
	else
		 st = cs.getByName(s_name)
		 With st
			.CellBackColor = RGB(BGWert1, BGWert2, BGWert3)
			.CharColor = RGB(FCWert1, FCWert2, FCWert3)
			.CharHeight = "6"
		 End with
	end if
'-------------------------------------------------------------------------------
End Function
Der Ablauf ist jetzt wie folgt.

Wenn die Formatvorlage noch nicht vorhanden ist, dann wird sie einfach erstellt.
Wenn die Formatvorlage schon vorhanden ist, dann werden die schon existierenden Einstellungen überschrieben.

Ist doch eigentlich soooooo einfach, besonders dann, wenn andere schon die Vorarbeit geleistet haben :lol:



Bin jetzt im Bett
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D

Toxitom
********
Beiträge: 3483
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Toxitom » So, 26.11.2017 08:45

Leute... nochmal:

Arbeitet in kleinen Schritten, überprüft Ergebnisse ud Zeilen mit Tools wie xray oder MRI, und seid Euch im klaren, war ihr da wirklich tut.

Helft auch in kleinen Schritten - besser als Megathreads.

Code: Alles auswählen

neuerZellstyle = ThisComponent.CreateInstance("com.sun.star.style.CellStyle")
Erzeugt eine Instanz des Services "com.sun.star.style.CellStyle" - ein zunächst abstraktes Objekt. An dem könnt ihr gar nichts ändern!

Code: Alles auswählen

neuerZellstyle.setName(s_name)
Diese Zeile ist völlig unsinnig - wie auch schon am Anfang dieses Threads geschrieben! Dennoch tragt ihr sie weiter und weiter...
Schaut Euch doch mal die Ergebnisse dieser Zeile in einem Objektinspektor an!

Die Methode "cs.insertByName(s_name, neuerZellstyle)" übernimmt die Erzeugung eines neuer neuen Zellvorlage. Dieser Methode muss ein eindeutiger Name übergeben werden - der der Vorlage zugeordent wird. Die Methode selbst gibt dann dem Objekt alle benötigten Eigenschaften - und erst dann ist das Objekt nutzbar ud veränderbar! Dann liesse sich auch der Name ändern.

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Mo, 27.11.2017 08:59

wieso funktioniert das bei dir und nicht bei mir?!

Ich hab der Einfachheit halber deinen Code 1:1 reinkopiert und es gibt diese vermaledeite Fehlermeldung "Message: ."! Was ist das für eine nichtssagende "Meldung"? *grummel*

LG, Masl
Dateianhänge
calc error 04 RunTimeException - Message Punkt.JPG
calc error 04 RunTimeException - Message Punkt.JPG (146.87 KiB) 2052 mal betrachtet
Liebe Grüße, Marcel

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Mo, 27.11.2017 09:00

Wieso das bei dir funktioniert und bei mir nicht, weißt du auch nicht, oder? Siehe Screenshot...
Dateianhänge
calc error 04 RunTimeException - Message Punkt.JPG
calc error 04 RunTimeException - Message Punkt.JPG (146.87 KiB) 2052 mal betrachtet
Liebe Grüße, Marcel

Stephan
********
Beiträge: 10547
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Stephan » Mo, 27.11.2017 09:20

die Screenshots helfen überhaupt weiter, dazu brauchte es die konkrete Datei.

möglicherweise ist dort z.B. ein Schutz der Tabelle aktiv, der Probleme machen könnte wenn die Vorlage dort verwendet wird.


Gruß
Stephan

Benutzeravatar
balu
********
Beiträge: 3643
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von balu » Mo, 27.11.2017 11:23

Moin Tom,

ja ja! Ich gebs ja zu das ich nicht aufgepasst habe.
Jedoch kann zumindest ich eine Entschuldigung aufbringen: "Bin grad dabei mich von einer üblen Magen-Darm Geschichte zu erholen." :-x

Ich habe aber jetzt hier in meiner Datei die überflüssige Zeile gelöscht. Und es funktioniert hier bei mir noch immer alles bestens.

Ach noch etwas. Natürlich habe ich mir das mal mit XRAY angeschaut, aber nur kurz, Grund siehe oben.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D

Gast

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Gast » Mo, 27.11.2017 11:29

Toxitom hat geschrieben:
So, 26.11.2017 08:45
Leute... nochmal:

Arbeitet in kleinen Schritten, überprüft Ergebnisse ud Zeilen mit Tools wie xray oder MRI, und seid Euch im klaren, war ihr da wirklich tut.

Helft auch in kleinen Schritten - besser als Megathreads.

Code: Alles auswählen

neuerZellstyle = ThisComponent.CreateInstance("com.sun.star.style.CellStyle")
Erzeugt eine Instanz des Services "com.sun.star.style.CellStyle" - ein zunächst abstraktes Objekt. An dem könnt ihr gar nichts ändern!

Code: Alles auswählen

neuerZellstyle.setName(s_name)
Diese Zeile ist völlig unsinnig - wie auch schon am Anfang dieses Threads geschrieben! Dennoch tragt ihr sie weiter und weiter...
Schaut Euch doch mal die Ergebnisse dieser Zeile in einem Objektinspektor an!

Die Methode "cs.insertByName(s_name, neuerZellstyle)" übernimmt die Erzeugung eines neuer neuen Zellvorlage. Dieser Methode muss ein eindeutiger Name übergeben werden - der der Vorlage zugeordent wird. Die Methode selbst gibt dann dem Objekt alle benötigten Eigenschaften - und erst dann ist das Objekt nutzbar ud veränderbar! Dann liesse sich auch der Name ändern.

VG
Tom

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Mo, 27.11.2017 11:31

Das sollte eigentlich so aussehen... Super mit der Zeitüberschreitung hier beim Antworten! wenn man nach der Anmeldung wenigstens wieder beim aktuellen Thread landen würde, aber nein, den darf man sich nach antirobotergeklicke wieder neu raussuchen... <- An die Admins!

---
Toxitom hat geschrieben:
So, 26.11.2017 08:45
Schaut Euch doch mal die Ergebnisse dieser Zeile in einem Objektinspektor an!
Hallo Tom,

die Eigenschaften der Variablen namens neuerZellstyle laut Objektüberwachung passen in ihrer Anzahl kaum auf den Bildschirm. Zum größten Teil steht gar kein Wert oder "" oder Null.

Welche Eigenschaft der Variablen müsste denn konkret welchen Wert haben, sodass man weiß, dass das Makro seinen Job gemacht hat?

LG, Masl
Liebe Grüße, Marcel

Masl75
***
Beiträge: 77
Registriert: So, 24.02.2013 11:45

Re: Zelle per Makro Farbe aus RGB-Werten zuweisen

Beitrag von Masl75 » Mo, 27.11.2017 12:08

Stephan hat geschrieben:
Mo, 27.11.2017 09:20
die Screenshots helfen überhaupt weiter, dazu brauchte es die konkrete Datei.
Die Datei oder den Code...?
möglicherweise ist dort z.B. ein Schutz der Tabelle aktiv, der Probleme machen könnte wenn die Vorlage dort verwendet wird.
Da kann ich dich beruhigen, da ist nichts geschützt in diesem Blatt - und auch nicht in der gesamten Datei, höchstens auf anderen, nicht mit diesem im Zusammenhang stehenden Blättern...
Liebe Grüße, Marcel

Antworten