Seite 1 von 1

BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 12:04
von hchaieb
Libre Office 5.2.2.2
Makro in Basic

Code: Alles auswählen

public function Hintergrund_Aehnlich(RRef as Range,RT as Range) as integer
	dim c1 as long
	dim c2 as long
	
	Hintergrund_Aehnlich=0
	
	c1=RRef.CellRange.CellBackColor
	c2=RT.CellRange.CellBackColor
	
	if c1=c2 then Hintergrund_Aehnlich=1

end function
Beim Öffnen von Calc meldet LibreOffice Calc Laufzeit Fehler Variable nicht belegt für die Zeile:

Code: Alles auswählen

dim c1 as long
Ich verwende die Funktion 365 mal. Ich klicke die Fehlermeldung 365 mal weg. Dann lösche ich das "e" von Range in

Code: Alles auswählen

public function Hintergrund_Aehnlich(RRef as Range
und schreibe die "e" wieder rein
Starte die Berechnung manuell und die Funktion arbeitet einwandfrei
Kennt jemanden eine Lösung für dieses Verhalten? was mache ich falsch?

Re: BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 14:20
von karolus
Hallo

Basic kennt kein `Range` -objekt, damit der Käse überhaupt funktioniert brauchts wohl im Modul eine erste Zeile:

Code: Alles auswählen

Option VBASupport 1
und zusammengefasst:

Code: Alles auswählen

Option VBASupport 1

public function Hintergrund_Aehnlich(RRef as Range,RT as Range) as integer
   dim c1 as long
   dim c2 as long
   c1=RRef.CellRange.CellBackColor
   c2=RT.CellRange.CellBackColor
   Hintergrund_Aehnlich = IIF(c1=c2,1,0)

end function

Re: BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 15:10
von hchaieb
Vielen Dank Karolus, deine Lösung hat mein Problem gelöst.
Ich kannte die "Option VBASupport 1" nicht.

eine Frage habe ich noch:
Was wäre die alternative mit Libre Office Objekte gewesen. Ich habe "Range" durch "Variant" und ohne Objektbezeichnung ausprobiert gehabt. Trotzdem ging nichts.

Besten Dank

Re: BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 15:50
von karolus
Hallo

Es gibt keine Alternative in Basic, mit dem Aufruf aus Calc =meineFunktion(A1) ohne Anführungszeichen um A1 übergibst du Basic nur den Wert|Text aus der Zelle A1, nicht aber das vollständige Objekt mit allen Attributen wie u.a. .CellBackColor

Wenn du das vollständige Objekt auswerten möchtest, musst du bspw. den Namen der Zelle als Text übergeben:
=meineFunktion("A1")
und dich in Basic durchhangeln zum Zellobject via …sheet.getCellRangeByName( arg )
Ich kannte die "Option VBASupport 1" nicht.
Dann verstehe ich aber nicht wie du vorher angeblich sinnvolle Ergebnisse bekamst.

Ach ja, die echte Alternative ist dann ein richtige CalcAddInn in einer vernünftigen Programmiersprache
http://www.openoffice.org/api/docs/comm ... AddIn.html
http://www.biochemfusion.com/doc/Calc_addin_howto.html
https://forum.openoffice.org/en/forum/v ... 21&t=56916
http://de.openoffice.info/viewtopic.php?f=25&t=60394

Re: BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 17:48
von hchaieb
Danke! hervorragend erklärt
karolus hat geschrieben: Dann verstehe ich aber nicht wie du vorher angeblich sinnvolle Ergebnisse bekamst.
Beim Öffnen der Datei hatte ich nur Fehlermeldung. Die Funktion wurde deaktiviert. Jedoch nach dem neu berechnen der mit str+shift+F9 die Function hat das gewünschte ergebnis geliefert gehabt. Weshalb bleibt mir ebenfals ein Rätsel

Viele Grüße

Re: BASIC Laufzeit Fehler - Variable nicht belegt - (ab und zu)

Verfasst: So 30. Okt 2016, 18:09
von karolus
Hallo

Bei meinen Versuchen gabs nach dem wegdrücken der Fehlermeldungen und Neuberechnung nur falsche 0en als Ergebnis.