Seite 2 von 2
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Mo, 02.08.2010 15:26
von Stephan
Woran liegts?
Daran das das Thiscomponent-Objekt noch ohne den richtigen (bzw. jeglichen) Inhalt ist, zu dem Zeitpunkt wo die Funktion innerhalb der Calc-Datei aufgerufen wird. Um mögliche Fehlermeldungen zu verhindern sollte deshalb die automatische Berechnung abgeschaltet sein.
Ich bin im Moment im Unklaren ob es eine sonstige allgemeine Lösung gibt.
Gruß
Stephan
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Mo, 02.08.2010 15:52
von Koala
Stephan hat geschrieben:Ich bin im Moment im Unklaren ob es eine sonstige allgemeine Lösung gibt.
Könnte man das Thiscomponent-Objekt mit einer IF-Abfrage auf dessen vorhandensein/Inhalt prüfen und dann ansteller der Fehlermeldung lieber einen Leerstring, also "", ausgeben lassen?
Werd mich mal daran versuchen.
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Mo, 02.08.2010 16:20
von bst
Auch Hallo,
mit einem M.E. 'unschönen Trick' scheint das zu funktionieren.
Weise das Makro Workbook_Open via Extras - Anpassen (!) - Ereignisse dem Ereignis Dokument Öffnen zu. Ggf. musst Du noch auf mehreren Tabellen Suchen & Ersetzen.
cu, Bernd
--
Code: Alles auswählen
REM ***** BASIC *****
Function FARBFUNKTION(Zelle As String)
on error goto ErrHandler
x1 = Thiscomponent.CurrentController.ActiveSheet
FARBFUNKTION = Hex(x1.getCellRangeByName(Zelle).CellBackColor)
exit function
ErrHandler:
FARBFUNKTION = "#N/A"
End Function
Sub Workbook_Open()
Dim Sheet As Object
Dim ReplaceDescriptor As Object
'Print "1"
Sheet = Thiscomponent.CurrentController.ActiveSheet
ReplaceDescriptor = Sheet.createReplaceDescriptor()
ReplaceDescriptor.SearchString = "="
ReplaceDescriptor.ReplaceString = "="
'Print "2"
Sheet.ReplaceAll(ReplaceDescriptor)
'Print "3"
End Sub
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Di, 03.08.2010 00:17
von Stephan
Könnte man das Thiscomponent-Objekt mit einer IF-Abfrage auf dessen vorhandensein/Inhalt prüfen und dann ansteller der Fehlermeldung lieber einen Leerstring, also "", ausgeben lassen?
Im Grundsatz so wie es Bernd beschreibt.
Gruß
Stephan
Anmerkung:
Ich schrieb nicht ohne Grund:
Ich bin im Moment im Unklaren ob es eine sonstige allgemeine Lösung gibt.
denn mir ist irgendwie so als gäbe es für das hier in Debatte stehende Problem eine Lösung (jenseits der Möglichkeit den Fehler abzufangen). Ich glaube irgendwie mich zu erinnern eine Lösung dafür schon einmal irgendwo gelesen (oder gar selbst entworfen) zu haben, ich komme nur momentan absolut nicht drauf. Aber vielleicht täusche ich mich auch nur und meine Erinnerung trügt mich.
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Di, 03.08.2010 14:14
von Koala
bst hat geschrieben:mit einem M.E. 'unschönen Trick' scheint das zu funktionieren.
Jap, funktioniert wunderbar. Besten Dank.
bst hat geschrieben:Weise das Makro Workbook_Open via Extras - Anpassen (!) - Ereignisse dem Ereignis Dokument Öffnen zu. Ggf. musst Du noch auf mehreren Tabellen Suchen & Ersetzen.
Nur der Vollständigkeit halber: <klugscheinssermodus>man kann auch über Macros verwalten - Zuordnen gehen</klugscheinssermodus>
Noch eine Verständnisfrage zu Workbook_Open.
Die Funktion ersetzt
alle '=' im aktiven Blatt oder nur innerhalb einer Funktion einer Zelle?
Und das bewirkt dadurch das ausführen weiterer Makros (hier dann die Farbfunktion)?
Ich überlege gerade, wenn das so ist, könnte man "Unbedinge Neuberechnung" [Strg+Shift+F9] nicht auch direkt (per Funktion) aufrufen ohne den Umweg über Ersetzungen zu gehen?
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Di, 03.08.2010 15:07
von bst
Hi,
Nur der Vollständigkeit halber: <klugscheinssermodus>man kann auch über Macros verwalten - Zuordnen gehen</klugscheinssermodus>
Hier mit OOo 3.2.1 geht das nicht, da sind 'bei diesem Weg' nur 'globale Makros' wählbar, nicht die Makros der aktuellen Datei.
Die Funktion ersetzt alle '=' im aktiven Blatt
Ja.
Und das bewirkt dadurch das ausführen weiterer Makros (hier dann die Farbfunktion)?
Ja, das bewirkt indirekt eine Neuberechnung aller Formeln.
Ich überlege gerade, wenn das so ist, könnte man "Unbedinge Neuberechnung" [Strg+Shift+F9] nicht auch direkt (per Funktion) aufrufen ohne den Umweg über Ersetzungen zu gehen?
Möglich. F9 hat hier denn nicht funktioniert, Strg+Shift+F9 kannte ich nicht.
cu, Bernd
Re: mittels "funktion" Zellen Farbe prüfen ?
Verfasst: Mi, 04.08.2010 10:47
von Koala
bst hat geschrieben:Hier mit OOo 3.2.1 geht das nicht, da sind 'bei diesem Weg' nur 'globale Makros' wählbar, nicht die Makros der aktuellen Datei.
Oh, tatsächlich! Das ist mir gar nicht aufgefallen.
bst hat geschrieben:Ja, das bewirkt indirekt eine Neuberechnung aller Formeln.
Habe dafür eine einfachere Lösung gefunden. Workbook_Open sieht bei mir nun so aus:
Code: Alles auswählen
Sub Workbook_Open()
If Thiscomponent.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then
Thiscomponent.calculateAll
End If
End Sub
Leider bleibt es dabei, dass man diese Funktion beim öffnen des Dokumentes mit starten muss.
Jetzt frage ich mich, da ich das als globales Macro bei mir abgelegt habe, ob man OOo so anpassen kann, dass generell diese Funktion bei jeder Datei aufgerufen wird. Mir fällt momentan kein Grund ein, wieso man das nicht machen können sollte.