von Stephan » Fr, 08.09.2006 02:41
Nun ja, ich habe bis jetzt alles Mögliche probiert um eine Erklärung zu finden, ich habe nun auch eine gefunden.
Zunächst einmal - dieser Code funktioniert:
Code: Alles auswählen
if oSheet.getCellByposition(45,2).value = 0 then
r = 255: g = 255: b = 255
else
select case 1*oSheet.getCellByposition(1,26).value
case >= (13*oSheet.getCellByposition(45,2).value)
r = 0: g = 174: b = 0
Msgbox "Case1"
case >= (10*oSheet.getCellByposition(45,2).value)
r = 138: g = 255: b = 0
Msgbox "Case2"
case >= (7*oSheet.getCellByposition(45,2).value)
r = 230: g = 255: b = 0
Msgbox "Case3"
case >= (4*oSheet.getCellByposition(45,2).value)
r = 255: g = 218: b = 0
Msgbox "Case4"
case >= (oSheet.getCellByposition(45,2).value)
r = 255: g = 138: b = 0
Msgbox "Case5"
case >= 0
r = 255: g = 0: b = 0
Msgbox "Case6"
End select
end if
oSheet.getCellByposition(1,26).CellBackcolor = RGB(r,g,b)
Die Erklärung ergibt sich quasi aus der Erläuterung zu Select-Case aus der Hilfe von OOo, dort heißt es:
Select...Case-Anweisung [Laufzeit]
Definiert einen oder mehrere Befehlsblöcke, die in Abhängigkeit von dem Ergebnis eines bestimmten Ausdrucks stehen.
Syntax:
Select Case Bedingung Case Ausdruck Anweisungsblock[Case Ausdruck2 Anweisungsblock][Case Else] Anweisungsblock End Select
Parameter:
Bedingung: Ein beliebiger Ausdruck, der steuert, ob der auf den jeweiligen Case-Zweig folgende Anweisungsblock ausgeführt wird.
Ausdruck: Ein beliebiger Ausdruck, der mit dem Typ des Ausdrucks "Bedingung" kompatibel ist. Der auf den jeweiligen Case-Zweig folgende Anweisungsblock wird ausgeführt, wenn der Wert von Bedingung gleich dem Wert von Ausdruck ist.
somit ist es augenscheinlich so das der Ausdruck:
zum Ausdruck:
nicht "kompatibel" ist, der Ausdruck:
hingegen schon.
Nun kannst Du sicherlich so gut wie ich sehen, das man wenn man sich die Ausdrücke ansieht versteht was "kompatibel" wohl meint, mit einer Erklärung hatte ich aber zunächst Schwierigkeiten, aber es gibt eine:
ist vom Typ
Double, hingegen ist:
vom Typ
Integer, und:
ebenfalls vom Typ
Double, wobei ich mir einzig noch nicht im Klaren bin warum <Double>*<Integer>=<Double> ist.
Gruß
Stephan
Nun ja, ich habe bis jetzt alles Mögliche probiert um eine Erklärung zu finden, ich habe nun auch eine gefunden.
Zunächst einmal - dieser Code funktioniert:
[code]if oSheet.getCellByposition(45,2).value = 0 then
r = 255: g = 255: b = 255
else
select case 1*oSheet.getCellByposition(1,26).value
case >= (13*oSheet.getCellByposition(45,2).value)
r = 0: g = 174: b = 0
Msgbox "Case1"
case >= (10*oSheet.getCellByposition(45,2).value)
r = 138: g = 255: b = 0
Msgbox "Case2"
case >= (7*oSheet.getCellByposition(45,2).value)
r = 230: g = 255: b = 0
Msgbox "Case3"
case >= (4*oSheet.getCellByposition(45,2).value)
r = 255: g = 218: b = 0
Msgbox "Case4"
case >= (oSheet.getCellByposition(45,2).value)
r = 255: g = 138: b = 0
Msgbox "Case5"
case >= 0
r = 255: g = 0: b = 0
Msgbox "Case6"
End select
end if
oSheet.getCellByposition(1,26).CellBackcolor = RGB(r,g,b)[/code]
Die Erklärung ergibt sich quasi aus der Erläuterung zu Select-Case aus der Hilfe von OOo, dort heißt es:
[i]Select...Case-Anweisung [Laufzeit]
Definiert einen oder mehrere Befehlsblöcke, die in Abhängigkeit von dem Ergebnis eines bestimmten Ausdrucks stehen.
Syntax:
Select Case Bedingung Case Ausdruck Anweisungsblock[Case Ausdruck2 Anweisungsblock][Case Else] Anweisungsblock End Select
Parameter:
Bedingung: Ein beliebiger Ausdruck, der steuert, ob der auf den jeweiligen Case-Zweig folgende Anweisungsblock ausgeführt wird.
Ausdruck: [b]Ein beliebiger Ausdruck, der mit dem Typ des Ausdrucks "Bedingung" kompatibel ist.[/b] Der auf den jeweiligen Case-Zweig folgende Anweisungsblock wird ausgeführt, wenn der Wert von Bedingung gleich dem Wert von Ausdruck ist.[/i]
somit ist es augenscheinlich so das der Ausdruck:
[code]oSheet.getCellByposition(1,26).value[/code]
zum Ausdruck:
[code]13*oSheet.getCellByposition(45,2).value[/code]
nicht "kompatibel" ist, der Ausdruck:
[code]1*oSheet.getCellByposition(1,26).value[/code]
hingegen schon.
Nun kannst Du sicherlich so gut wie ich sehen, das man wenn man sich die Ausdrücke ansieht versteht was "kompatibel" wohl meint, mit einer Erklärung hatte ich aber zunächst Schwierigkeiten, aber es gibt eine:
[code]oSheet.getCellByposition(1,26).value [/code]
ist vom Typ [i]Double[/i], hingegen ist:
[code]13[/code]
vom Typ [i]Integer[/i], und:
[code]1*oSheet.getCellByposition(1,26).value [/code]
ebenfalls vom Typ [i]Double[/i], wobei ich mir einzig noch nicht im Klaren bin warum <Double>*<Integer>=<Double> ist.
Gruß
Stephan