Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro wertet Zellwerte falsch aus!

Makro wertet Zellwerte falsch aus!
02.07.2004 10:44:44
Sabine
Hallo alle zusammen,
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

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro wertet Zellwerte falsch aus!
02.07.2004 11:06:45
Frank
Hallo Sabine,
ich hab´s nicht ausprobiert, vermute aber mal folgenden Fehler:
Select Case x
Case -4 To -0.4
c.Interior.ColorIndex = 3

Case -0.4 To -0.1
c.Interior.ColorIndex = 38

Der Grenzwert -0.4 erscheint in beiden Case-Zweigen. d.h., wenn der Wert -0.4 ist, dann wird in jedem fall der erste Zweig ausgeführt, zum zweiten Zweig gelangt man gar nicht erst. Versuche es mal so:
Select Case x
Case -4 To -0.3
c.Interior.ColorIndex = 3

Case -0.4 To -0.1
c.Interior.ColorIndex = 38

Die anderen Abfrangen auch entsprechend anpassen.
Aber wie gesagt: ich habe es nicht ausprobiert!
Gruß Frank
Anzeige
AW: Makro wertet Zellwerte falsch aus!
02.07.2004 11:12:50
Sabine
Das geht leider nicht, da (nach der Testphase) auch Werte zwischen z.B 0.3 und 0.4 auftreten werden, die dann ja nicht berücksichtigt würden.
Ich habe ja auch (ganz unten) mit einer if-Anweisung gearbeitet, die die Zugehörigkeiten eigentlich eindeutig regeln sollte, aber die macht genau den gleichen Fehler, wie die Intervall-Variante ...
Bin verzweifelt :-(
Bitte helft mir!
Viele liebe Grüße
Sabine
AW: Makro wertet Zellwerte falsch aus!
02.07.2004 12:36:26
Frank
Hallo Sabine,
guck mal, ob das jetzt so ist, wie Du Dir das vorstellst. Habe den Code in Modul 2 untergebracht.
Viele Grüße, Frank

Die Datei https://www.herber.de/bbs/user/7994.xls wurde aus Datenschutzgründen gelöscht

Anzeige
AW: Makro wertet Zellwerte falsch aus!
02.07.2004 12:49:56
Sabine
Funktioniert schon super, da ist nur noch ein kleines Problem. Eigentlich muss es zum Schluss so aussehen:
Userbild

D.h. die Grenzen müssten anders zugeordnet werden. Wie kann ich das denn noch lösen?
Vielen Dank schon mal für die Hilfe!
Aber woran lag das denn? Waren die anderen Quelltexte falsch???
Viele liebe Grüße
Sabine
Thema ist noch offen!!!
02.07.2004 12:51:44
Sabine
Hab das Thema nur versehentlich geschlossen!
AW: Thema ist noch offen!!!
02.07.2004 12:53:38
P@ulchen
jetzt auch als offen angezeigt..
AW: Thema ist noch offen!!!
02.07.2004 13:12:53
P@ulchen
Hi Sabine,
vielleicht so :


Sub NochEinVersuch()
    Dim As Integer
    Dim As Integer
    Dim As Single
    
    For i = 2 To 10
        For j = 4 To 13
        Cells(i, j).Select
            x = Cells(i, 3) - Cells(i, j)            
            Select Case x    
                Case Is <= -0.4
                    Cells(i, j).Interior.ColorIndex = 4
                Case -0.39999 To -0.10001
                    Cells(i, j).Interior.ColorIndex = 35                
                Case -0.1 To 0.1
                    Cells(i, j).Interior.ColorIndex = 15                    
                Case 0.10001 To 0.39999
                    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

     Code eingefügt mit Syntaxhighlighter 2.5

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
Nur noch zwei kleinen Fragen!
02.07.2004 13:21:42
Sabine
Ja, so funktioniert das super! - Nur noch zwei kleine Fragen:
Funktioniert das immer? - Mit dem Makro sollen nämlich Zahlen bearbeitet werden, die auf bis zu 10 Stellen nach dem Komma genau sind ... Und: Kann ich das benutzen um das mit Selection zu bearbeiten? (Wie die dynamischen Fälle?)
Vielen lieben Dank für Deine Hilfe!
Viele Grüße
Sabine
AW: Nur noch zwei kleinen Fragen!
02.07.2004 14:00:25
P@ulchen
Hi Sabine,
ich hoffe, dass ich Dich richtig verstanden habe. Das Makro läuft automatisch, sobald eine Zelländerung vorgenommen wird und es werden 10 Stellen nach dem Komma berücksichtigt. Teste aber mal bitte noch alle möglichen Zahlen.
https://www.herber.de/bbs/user/7999.xls
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
Nicht ganz!
02.07.2004 14:06:41
Sabine
Hi Paulchen,
bei meinem Problem kommt es schon mal vor, dass es sich nicht um 9 Zeilen und 10 Spalten handelt. Damit das also immer klappt, wäre es doch sehr komfortabel, wenn ich den zu bearbeitenden Bereich markieren könnte und dieser dann mit dem Makro eingefärbt wird.
Kann ich dann mit
For Each c in Selection
x = ...
Select x
Case ...

arbeiten? Oder macht das alles wieder kaputt?
Viele liebe Grüße!
Sabine
AW: Nicht ganz!
02.07.2004 14:51:18
P@ulchen
Hi Sabine,
dann schau mal, ob Dir das so besser gefällt:

Die Datei https://www.herber.de/bbs/user/8003.xls wurde aus Datenschutzgründen gelöscht

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
Anfang ist super!
02.07.2004 14:57:50
Sabine
Hi Paulchen,
der Anfang ist ja super-geil! - Nur leider kommt jetzt immer eine Fehlermeldung, wenn ich den Makro ausführen will :
1004 Die ColorIndex Eigenschaft des Interior Objekts kann nicht festgelegt werden.
Ist doch aber der gleiche Befehl wir vorhin! Mache ich was falsch?!?
Es ist übrigens ganz lieb, wie Du Dich um mein Problemchen kümmerst! :-)
Viele liebe Grüße
Sabine
AW: Anfang ist super!
02.07.2004 15:00:22
P@ulchen
Bei mir läuft der Code ohne Probleme...in welcher Zeile kommt denn die Fehlermeldung ?
Gruß aus Leipzig
P@ulchen
Anzeige
AW: Anfang ist super!
02.07.2004 15:04:38
Sabine
Kommt immer in der Zeile wo die Zelle dann tatsächlich eingefärbt werden soll:
Cells(i, j).Interior.ColorIndex =
Komisch, oder? - Ich habe es mit verschiedenen Werten für x ausprobiert. Passiert in jedem der Intervalle ...
AW: Anfang ist super!
02.07.2004 15:06:55
P@ulchen
Arbeitest Du mit der Datei, die ich hochgeladen habe ? Hast Du vielleicht einen Blattschutz drin ?
Gruß aus Leipzig
P@ulchen
AW: Anfang ist super!
02.07.2004 15:10:30
Sabine
Ja, ich habe Deine Datei einfach bei mir auf der Festplatte gespeichert und dann auf Start geklickt. Dann habe ich mit der Mouse den Bereich formatiert und dann auf OK geklickt. Und dann kam auch schon der Fehler.
Ich habe keinen Blattschutz aktiviert (Habe nachgesehen und hat mir kein "Blattschutz aufheben" angeboten ...)
Ist doch irgendwie komisch!
Anzeige
AW: Anfang ist super!
02.07.2004 15:13:12
P@ulchen
Probier mal bitte diese hier aus: https://www.herber.de/bbs/user/8007.xls
Ich habe hier noch 2 Codezeilen eingefügt (Zelle selektieren und Zellfarbe löschen). Da kann man besser sehen, wo der Code stehen bleibt.
Gruß aus Leipzig
P@ulchen
AW: Anfang ist super!
02.07.2004 15:40:38
Sabine
Hallo Paulchen!
Ich weiß zwar nicht, was Du gemacht hast, aber jetzt klappt es! Wahnsinn!
Ich danke Dir vielmals für Deine Hilfe!
Ich wünsche Dir ein wunderschönes Wochenende!
Viele liebe Grüße!
Anzeige
Danke für die Rückmeldung...
02.07.2004 15:42:24
P@ulchen
...und auch Dir ein schönes WE !
Gruß aus Leipzig
P@ulchen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige