🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Farbe von Zellen zählen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
KB_Pößneck
Beiträge: 39
Registriert: Di 12. Feb 2013, 13:54

Re: Farbe von Zellen zählen

Beitrag von KB_Pößneck » Mi 2. Okt 2013, 11:14

Es kommt zu keiner Fehlermeldung. Die Funktion gibt einfach kein Ergebnis aus.
Ist auch nicht als Array abgeschlossen, <Strg> + <Umsch> + <F9> startet nur die Aktualisierung von Formeln.
Die Funktion steht bei MEINE MAKROS - Standard - Module1 drin.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Farbe von Zellen zählen

Beitrag von karolus » Mi 2. Okt 2013, 11:22

Hallo

Dann poste bitte deinen derzeitigen Code, nebst Syntax die du in Calc benutzt.

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Farbe von Zellen zählen

Beitrag von balu » Mi 2. Okt 2013, 11:31

Hallo KB_Pößneck,

und denk daran, dass =FARBSUMME(2:685;17)

nicht das gleiche wie =FARBSUMME(2;685;17) ist.
karolus hat geschrieben:
1. Deine Funktion benötigt 3 numerische Argumente, der Aufruf per Farbsumme(2:999;17) übergibt aber nur 2 Argumente 2:999 und 17
Tüppfählär sollte man schon vermeiden.



Gruß
balu

KB_Pößneck
Beiträge: 39
Registriert: Di 12. Feb 2013, 13:54

Re: Farbe von Zellen zählen

Beitrag von KB_Pößneck » Mi 2. Okt 2013, 12:01

Also, das ist die Funktion, ursprünglich von :
http://de.openoffice.info/viewtopic.php ... 01cb4a19f6
function FARBSUMME(vonZeile, bisZeile, oSpalte) as integer
osheet = thisComponent.CurrentController.ActiveSheet
oCol = oSpalte -1
sRow = vonZeile -1
eRow = bisZeile -1
oWert = 0
for i = sRow to eRow
' if osheet.getcellbyposition(oCol,i).CellStyle = RGB(0, 255, 255) then
if osheet.getcellbyposition(oCol,i).CellBackColor = RGB(0, 255, 255) then
oWert = oWert + 1 ' osheet.getcellbyposition(oCol,i).value
end if
next i
End function

Das ist der Aufruf :
=FARBSUMME(2;685;17)

Statt RGB(0,255,255) Helltürkis habe ich auch mal 255,255,255 weiß probiert, gibt auch nichts zurück.

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Farbe von Zellen zählen

Beitrag von balu » Mi 2. Okt 2013, 12:14

KB_Pößneck hat geschrieben: oWert = oWert + 1 ' osheet.getcellbyposition(oCol,i).value
Warum hast Du in dieser Zeile das "osheet...." auskommentiert?
Ohne Basiswissen in Basic einfach etwas zu ändern, ist nicht wirklich gut.



Gruß
balu

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Farbe von Zellen zählen

Beitrag von karolus » Mi 2. Okt 2013, 12:20

Hallo

Füge vor der Zeile end function ein:

Code: Alles auswählen

FARBSUMME = owert
@Balu:
Gut, das er das auskommentiert hat, damit ists zwar ein sinnfreier Kommentar aber wenigstens kein Syntaxfehler.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

KB_Pößneck
Beiträge: 39
Registriert: Di 12. Feb 2013, 13:54

[gelöst]: Farbe von Zellen zählen

Beitrag von KB_Pößneck » Mi 2. Okt 2013, 12:41

Hallo
Perfekt, jetzt funktioniert es.
Die Zeile ist auskommentiert, weil sie nicht die Hintergrundfarbe, sondern den Name der Zellvorlage ausliest.
Hier noch einmal die richtige Form für die nun funktionierende Funktion. Diese steht bei :
Extras - Makros - Makros verwalten - LibreOffice Basic...
Unter Standard - Module1 (im Listenfeld "Makro aus") ist dann die Funktion FARBSUMME abgelegt. Dazu im Eingabefeld "Name des Makros" den Funktionsname eintragen und auf die dann entstehende Taste <NEU> auf der rechten Seite klicken. Im LibreOfficeBasic-Editor aus dem Wort "Sub" das Wort "Function" (ohne die doppelten Hochstriche) machen und hinter End das Wort "Sub" auch durch "Function" ersetzen.
Den Inhalt zwischen Function und End einfügen und dabei nicht die Parameter für den Aufruf und die Rückgabe hinter dem Funktionsname vergessen.

function FARBSUMME(vonZeile, bisZeile, oSpalte) as integer
oWert = 0
on error goto ErrorHandler ' <--Fehlerbehandlung anmelden
osheet = thisComponent.CurrentController.ActiveSheet
oCol = oSpalte -1
sRow = vonZeile -1
eRow = bisZeile -1
for i = sRow to eRow
'Die Folgezeile liest den Name der benutzten Zellvorlage
' if osheet.getcellbyposition(oCol,i).CellStyle = ROT then
'Die Folgezeile liest die Hintergrundfarbe
if osheet.getcellbyposition(oCol,i).CellBackColor = RGB(0, 255, 255) then
oWert = oWert + 1 ' osheet.getcellbyposition(oCol,i).value
end if
next i
ErrorHandler: ' <- Sprungmarke für "on error goto ErrorHandler"
FARBSUMME = owert
End function

Aufgerufen wird diese Funktion mit : =FARBSUMME(2;ZEILE()-5;SPALTE())
Dabei sind der erste Parameter die Startzeile, der zweite die Endzeile und der dritte die Spaltennummer.
Vielen Dank für die Hilfe.
Matthias
Zuletzt geändert von KB_Pößneck am Di 15. Okt 2013, 06:39, insgesamt 8-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: [gelöst] Farbe von Zellen zählen

Beitrag von karolus » Mi 2. Okt 2013, 14:46

Code: Alles auswählen

' if osheet.getcellbyposition(oCol,i).CellStyle = RGB(0, 255, 255) then
Diese Zeile liest nicht den Cellstyle, sondern vergleicht ...CellStyle mit der Rückgabe von RGB(0,255,255) - was völliger Humbug ist - weil ersteres den Namen der benutzten Zellvorlage zurückgibt und letzteres eine Zahl.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

KB_Pößneck
Beiträge: 39
Registriert: Di 12. Feb 2013, 13:54

Re: Farbe von Zellen zählen

Beitrag von KB_Pößneck » Fr 4. Okt 2013, 06:06

Alles klar, Danke. Ich habe meine Zusammenfassung entsprechend geändert.
Aber jetzt tritt ein neues Problem auf.
Wenn ich die Tabellendatei (*.ODS) öffne, wird mir folgender Fehler angezeigt :
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden:
CurrentController.
Dabei wird in der Funktion die Zeile
osheet = thisComponent.CurrentController.ActiveSheet
markiert.
Das Problem tritt nur unmittelbar nach dem Öffnen aus, nicht beim erneuten Ausführen der Funktion.
Zuletzt geändert von KB_Pößneck am Di 8. Okt 2013, 06:23, insgesamt 1-mal geändert.

KB_Pößneck
Beiträge: 39
Registriert: Di 12. Feb 2013, 13:54

Re: Farbe von Zellen zählen

Beitrag von KB_Pößneck » Di 8. Okt 2013, 06:07

Außerdem ist noch komisch, daß die Funktion mit <Strg> + <Umsch> + <F9> nur ausgeführt wird, wenn in einer der Tabellen die Zelle mit dem Funktionsaufruf den Fokus hat.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten