Moin
durch mein makro sollen Zellen mit bestimmtem Zahlenwert bestimmte hintergrundfarben erhalten(z.B. 12,5-15 grün und 0,5-3,5 orange).
Mein Problem ist nun dass das makro die Zahlen nicht richtig erkennt (z.B. 12,69 ist orange).
Kann mir da jemand weiterhelfen? Vielen Dank schon ma im vorraus!
Basic erkennt zahlen nicht richtig
Moderator: Moderatoren
-
- ***
- Beiträge: 53
- Registriert: Do, 05.01.2006 17:40
Hey Dackel,
Gruss
Thomas
Na, dann lass mal den Code sehn. Wie anders sollen wir dir sonst helfen?Kann mir da jemand weiterhelfen?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- ***
- Beiträge: 53
- Registriert: Do, 05.01.2006 17:40
Ok hier hast du den code
Code: Alles auswählen
Sub FarbigeNoten1
dim document as object
Dim oSheets as Object
Dim oSheet as Object
Dim zelle as Object
oSheets = ThisComponent.Sheets
oSheet = oSheets.getByName("12_1")
x = 0: y = 0
For i = 2 to 17
For j = 1 to 4
zelle = oSheet.getCellByposition(i, j)
select case zelle.Value
case "0"
r = 255: g = 255: b = 255
case >= "12,5"
r = 0: g = 174: b = 0
case >= "9,5"
r = 138: g = 255: b = 0
case >= "6,5"
r = 230: g = 255: b = 0
case >= "3,5"
r = 255: g = 218: b = 0
case >= "0,5"
r = 255: g = 138: b = 0
case >= "0"
r = 255: g = 0: b = 0
End select
zelle.CellBackcolor = RGB(r,g,b)
next j
next i
end sub
Hey Dackel,
wundert mich, dass du überhaupt hier ein Ergebnis erhälst.
liefert dir immer einen numerischen Wert - der, der drin steht. Deine weiter Select-Anweisung vergleicht diesen jetzt mit einem String - das passt nie!
es müsste heissen:
Dezimalstellen werden in Basic durch einen Punkt getrennt!
So sollte es funktionieren.
Gruss
Thomas
wundert mich, dass du überhaupt hier ein Ergebnis erhälst.
Code: Alles auswählen
zelle.Value
es müsste heissen:
Code: Alles auswählen
select case zelle.Value
case 0
r = 255: g = 255: b = 255
case >= 12.5
r = 0: g = 174: b = 0
case >= 9.5
r = 138: g = 255: b = 0
case >= 6.5
r = 230: g = 255: b = 0
case >= 3.5
r = 255: g = 218: b = 0
case >= 0.5
r = 255: g = 138: b = 0
case > 0
r = 255: g = 0: b = 0
End select
So sollte es funktionieren.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- ***
- Beiträge: 53
- Registriert: Do, 05.01.2006 17:40
Hey Dackel,
Das kannst du über die Funktion getType() heraus bekommen. Liefert diese Funktion Null ("0") zurück, ist sie "leer", bei "1" enthält sie Werte (Zahlen), bei "2" Text und bei "3" eine Formel. So kannst du das auslesen:
Gruss
Thomas
Na ja, eine Leerzelle ist "leer", und wenn eine "0" oder irgendetwas anderes drin steht, ist sie eben nicht mehr leer.wie kann ich zwischen einer Leerzelle und
einer Zelle in der ein Wert von 0 bist 0,5 steht unterscheiden?
Das kannst du über die Funktion getType() heraus bekommen. Liefert diese Funktion Null ("0") zurück, ist sie "leer", bei "1" enthält sie Werte (Zahlen), bei "2" Text und bei "3" eine Formel. So kannst du das auslesen:
Code: Alles auswählen
if zelle.getType() = 0 then
'Zelle ist leer
'....
else
'Zelle ist nicht leer
'...
end if
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic