Seite 1 von 1

Farbenzählen als Function was ist falsch?

Verfasst: Fr, 15.01.2010 22:44
von Andre01
Hallo,
ich habe mal ne fragen zum Basic / makro.
ich habe hier ein Makro gefunden mit dem man Hintergrundfarben in einer Tabelle zählen kann. Dieses Makro wollte ich gerne als Funktion um bauen aber irgendwie kommt ich damit nicht ganz zu recht. Ich wollte die Funktion in einer Zelle aufrufen in der dann das ergebnis eingetragen wird.
Aufrufen tute ich die Function durch
=farbe_zaehlen("a3";"bh33";0;0;255)
Damit sollte doch eigentlich die Hintergrundfarbe Blau gezählt werden.
Aber passieren tut da nichts.
Habe das Gefühl das die Anfang- und die Endzelle nicht richtig übergeben wird.

Code: Alles auswählen

function farbe_zaehlen(begin,ende,R,G,B)
   oDoc = thisComponent
   oSheet = oDoc.sheets(1) 'erstes Tabellenblatt
   oStart = osheet.getCellRangeByName(begin) 'zu prüfender anfang Zellbereich
   oEnde = osheet.getCellRangeByName(ende) 'zu prüfender ende Zellbereich
   x = 0
   y = 0
   'auslesen der Eckpunkte 
   iErsteSpalte = oStart.rangeAddress.startColumn
   iErsteZeile = oStart.rangeAddress.startRow
   iLetzteSpalte = oEnde.rangeAddress.EndColumn
   iLetzteZeile = oEnde.rangeAddress.EndRow
   For i = 0 to iLetzteZeile-iErsteZeile                      'Zählschleife
   For m = 0 to iLetzteSpalte-iErsteSpalte
   ostart=oCellRange.getCellByPosition(m,i)
   'msgbox ("Zellbereich: " & (m) & (i)  & CHR (13) ) 'zum debug
   if ostart.Cellbackcolor(R,G,B) = RGB (R,G,B) then ' Farbe blau
   x = x + 1
   end if

   next m
   next i 
   
End function
Hat jemand ne Lösung?

Gruß André

Re: Farbenzählen als Function was ist falsch?

Verfasst: Fr, 15.01.2010 23:51
von Karolus
Hallo
Ich hab den Rest jetzt nicht getestet, aber der "Rückgabewert" einer Function muss in der Zeile vor 'end function' an den Funktionsnamen gebunden werden:

Code: Alles auswählen

.....
farbe_zaehlen = x
end function
Gruß Karo

Re: Farbenzählen als Function was ist falsch?

Verfasst: Sa, 16.01.2010 12:37
von Andre01
Ok
danke Karo für den Hinweis. Habe ich gleich mal gemacht. Aber funktionieren tut das nicht besser.
Ich bekomme immer #Name? in der Zelle mit der Funktion angezeigt.
Da scheint noch der Wurm drin zusein....


Gruß André

Re: Farbenzählen als Function was ist falsch?

Verfasst: Sa, 16.01.2010 13:41
von turtle47
Hallo André,

bringt die Function keine Fehlermeldung bei Dir?
Wenn nicht, könnte es sein, dass Du die Makrosicherheit unter Menue > Extras > Optionen > OO.o > Sichherheit auf "Hoch" stehen hast?
Andre01 hat geschrieben:Da scheint noch der Wurm drin zusein....
Nicht nur einer. :shock:


Hier beschreibst Du die Variablen oStart und oEnde.
Andre01 hat geschrieben: oStart = osheet.getCellRangeByName(begin) 'zu prüfender anfang Zellbereich
oEnde = osheet.getCellRangeByName(ende) 'zu prüfender ende Zellbereich
Und hier beschreibst Du die Variable oStart neu!
Andre01 hat geschrieben:ostart=oCellRange.getCellByPosition(m,i)

Ausserdem ist
Andre01 hat geschrieben:ostart=oCellRange.getCellByPosition(m,i)
auch nicht definiert!

Hier mal ein funktionierender Code:

Code: Alles auswählen

function farbe_zaehlen(begin,ende,R,G,B)
	oDoc = thisComponent
	oSheet = oDoc.sheets(0) 'erstes Tabellenblatt
	oBereich = oSheet.getCellRangeByName(begin & ":" & ende)
	x = 0
	y = 0
	'auslesen der Eckpunkte 
	iErsteSpalte = oBereich.rangeAddress.startColumn
	iErsteZeile = oBereich.rangeAddress.startRow
	iLetzteSpalte = oBereich.rangeAddress.EndColumn
	iLetzteZeile = oBereich.rangeAddress.EndRow 
	For i = 0 to iLetzteZeile-iErsteZeile
	For m = 0 to iLetzteSpalte-iErsteSpalte
	ostart=oBereich.getCellByPosition(m,i)
	if ostart.Cellbackcolor(R,G,B) = RGB (R,G,B) then ' Farbe blau
	x = x + 1
	end if
	next m
	next i
	farbe_zaehlen = x
End function
Viel Erfolg.

Jürgen

Re: Farbenzählen als Function was ist falsch?

Verfasst: So, 17.01.2010 17:35
von Andre01
Danke Jürgen,
das funktioniert soweit ganz gut bekomme nicht mehr #Name? in der Zelle angezeigt.
Aber zählen tut die Funktion immer noch nicht. Ich bekomme immer von der Zählvariable (x) eine 0 zurück, bzw. den wert den ich oben bei x= eingegeben habe.
Soweit ich das beurteilen kann übergebe ich die Werte richtig in die Funktion. Aber x bleibt so wie ich sie mal mit "=" gesetzt habe und wird nicht erhöht.

Kannst Du mir das mal erklären???


Gruß Andre

Re: Farbenzählen als Function was ist falsch?

Verfasst: So, 17.01.2010 17:42
von turtle47
Hi André,
Andre01 hat geschrieben:Kannst Du mir das mal erklären???
Entweder stimmt der RGB-Wert nicht oder Du aktualisierst nicht mit Strg+Shift+F9.

Jürgen

Re: Farbenzählen als Function was ist falsch?

Verfasst: So, 17.01.2010 21:14
von Andre01
Danke Jürgen,
habe den Wald vor lauter Bäumen nicht gesehen.... In deinem Beispiel war Sheet (0) meine Tabelle war aber auf Sheet(1)...
Jetzt geht es auch :oops:
Danke noch mal ...

Gruß André