Makro wertet Zellwerte falsch aus!
02.07.2004 10:44:44
Sabine
ich habe ein großes Problem. Ich habe einen Makro geschrieben, der die Differenz zweier Zellwerte berechnet und je nach Größe dieser Differnz die eine Zelle in einer bestimmten Farbe erscheinen lässt.
Nun ist es aber so, dass auf den Grenzen nicht immer die gleiche Entscheidung getroffen wird, obwohl meiner Meinung nach der Quelltext eindeutig ist. Ich habe mittlerweile 3 Versionen geschrieben und alle machen den gleichen Fehler.
Nämlich: Für den Wert 0,4 z.B wird die Zelle manchmal grün und manchmal hellgrün gefärbt. Was ja eigentlich nicht sein darf. Der Fehler tritt aber immer bei den gleichen Zellen auf (Jedenfalls in meinem konstruierten Beispiel).
Rundungsfehler können eigentlich auch nicht auftreten, da ich nur Werte benutzt habe die auf eine Dezimale genau sind.
Die Mappe habe ich hier hinterlegt: Wenn der Makro richtig arbeitet müssten alle Zeilen das gleiche Farbmuster aufweisen.
Die Datei https://www.herber.de/bbs/user/7987.xls wurde aus Datenschutzgründen gelöscht
Die Makros sind zwar auch in der Mappe, aber hier noch mal als Text:Statische Version:
_______________________________________________________________________________
Sub Einfärben_Original()
For i = 2 To 10 ' Zeilennummern ggf. anpassen
For j = 4 To 13 'Spaltennummern ggf. anpassen
x = Cells(i, 3) - Cells(i, j)
Select Case x
Case Is < -0.4
Cells(i, j).Interior.ColorIndex = 4
Case Is < -0.1
Cells(i, j).Interior.ColorIndex = 35
Case Is < 0.1
Cells(i, j).Interior.ColorIndex = 15
Case Is < 0.4
Cells(i, j).Interior.ColorIndex = 38
Case Is >= 0.4
Cells(i, j).Interior.ColorIndex = 3
End Select
Cells(i, j).NumberFormat = "0.0"
Next j
Next i
End Sub
_______________________________________________________________________________
Dynamische Version V1
_______________________________________________________________________________
Sub Einfärben_V1()
For Each c In Selection
x = c - Cells(c.Row, 3)
Select Case x
Case -4 To -0.4
c.Interior.ColorIndex = 3
Case -0.4 To -0.1
c.Interior.ColorIndex = 38
Case -0.1 To 0.1
c.Interior.ColorIndex = 15
Case 0.1 To 0.4
c.Interior.ColorIndex = 35
Case 0.4 To 4
c.Interior.ColorIndex = 4
End Select
c.NumberFormat = "0.0"
Next c
End Sub
_______________________________________________________________________________
Dynamische Version V2
_______________________________________________________________________________
Sub Einfärben_V2()
For Each c In Selection
x = c - Cells(c.Row, 3)
If x < -0.4 Then
c.Interior.ColorIndex = 3
NumberFormat = "0.0"
End If
If x < -0.1 And x >= -0.4 Then
c.Interior.ColorIndex = 38
NumberFormat = "0.0"
End If
If x < 0.1 And x >= -0.1 Then
c.Interior.ColorIndex = 15
NumberFormat = "0.0"
End If
If x < 0.4 And x >= 0.1 Then
c.Interior.ColorIndex = 35
NumberFormat = "0.0"
End If
If x >= 0.4 Then
c.Interior.ColorIndex = 4
NumberFormat = "0.0"
End If
Next c
End Sub
________________________________________________________________________________
Es wäre wirklich super, wenn mir jemand helfen kann. Ich verzweifle langsam aber sicher.
Ich bin mir eigentlich sicher, dass der Quelltext richtig ist, weiß aber nicht woher dieser Fehler kommen kann!
Vielen Dank für Eure Hilfe bereits im Voraus!
Viele liebe Grüße
Sabine