Seite 1 von 1

[gelöst] Probleme mit Funktion

Verfasst: Sa 15. Jan 2011, 14:53
von Lebewesen
Hallo erstmal,

ich habe ein Problem mit einer selbsterstellen Funktion, und zwar soll diese die Farbigen Zellen zählen. Das funktioniert auch, wenn ich die Zellen direkt angebe. Allerdings schaffe ich es nicht, dass ich der Funktion einen Bereich übergeben kann. Ich hoffe ihr könnt mir helfen.

Code: Alles auswählen

function farbezaehlen(rng As Range)
   oDoc = thisComponent
   oSheet = oDoc.sheets(0) 'erstes Tabellenblatt
   oBereich = oSheet.getCellRangeByName(rng)
	x = 0
	y = 0
	'auslesen der Eckpunkte 
	iErsteSpalte = oBereich.rangeAddress.startColumn
	iErsteZeile = oBereich.rangeAddress.startRow
	iLetzteSpalte = oBereich.rangeAddress.EndColumn
	iLetzteZeile = oBereich.rangeAddress.EndRow 
	For l = 0 to iLetzteZeile-iErsteZeile
	  For m = 0 to iLetzteSpalte-iErsteSpalte
	    oCell=oBereich.getCellByPosition(m,l)
	    if oCell.IsCellBackgroundTransparent = false then 'zählt Zellen die nicht transparent sind
	     x = x + 1
	    end if
	  next m
	next l 
	Farbenzaehlen=x
End function 

Re: Probleme mit Funktion

Verfasst: So 16. Jan 2011, 14:51
von karolus
Hallo
farbezaehlen ist ungleich farbenzaehlen
Du musst die Funktion in der Form =FARBEZAEHLEN("B4:D20") aufrufen.

Code: Alles auswählen

function farbezaehlen( rng as string )

   oDoc = thisComponent
   oSheet = oDoc.sheets(0) 'erstes Tabellenblatt
   oBereich = oSheet.getCellRangeByName(rng)
   'auslesen der Eckpunkte
   iErsteSpalte = oBereich.rangeAddress.startColumn
   iErsteZeile = oBereich.rangeAddress.startRow
   iLetzteSpalte = oBereich.rangeAddress.EndColumn
   iLetzteZeile = oBereich.rangeAddress.EndRow
   
   For irow = iErsteZeile to iletzteZeile
     For icol = iErsteSpalte to iletzteSpalte
       oCell=osheet.getCellByPosition( icol, irow )
       if not ocell.IsCellBackgroundTransparent  then 'zählt Zellen die nicht transparent sind
        x = x + 1
       end if
     next icol
   next irow
   Farbezaehlen = x
End function 
Gruß Karo

Re: Probleme mit Funktion

Verfasst: Di 18. Jan 2011, 07:10
von Lebewesen
Hallo
ich habe immer noch ein Problem. In der Zeile "oBereich = oSheet.getCellRangeByName(rng)" bekomme ich die Fehlermeldung "BASIC-Laufzeitfehler. Objektvariable nicht belegt." woran könnte das liegen?

Dieses Problem tritt sowohl in der aktuellsten LO Version auf, als auch unter OO.

Gruß
Bastian

Re: Probleme mit Funktion

Verfasst: Di 18. Jan 2011, 11:13
von karolus
Hallo
Hab ich nicht deutlich genug erwähnt, das du den Zellbereich in Anführungszeichen setzen musst ?
Du musst die Funktion in der Form =FARBEZAEHLEN("B4:D20") aufrufen.
Karo

Re: Probleme mit Funktion

Verfasst: Di 18. Jan 2011, 23:38
von Lebewesen
:oops:
Hallo Karo

DASS ist mir entgangen! Und darüber habe ich mir Stunden den Kopf zerbrochen...

Vielen Dank
Bastian
:oops: