Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Berechnungen mit VBA

Forumthread: Berechnungen mit VBA

Berechnungen mit VBA
27.10.2005 18:18:18
Sabine
Hallo zusammen,
ich habe ein Problem mit einem Makro, den ich gerade schreibe. Dieser Makro nimmt eine Zelle und subtrahiert den Wert einer anderen Zelle. Ist die Differenz kleiner als -0,2 soll die Zelle rot gefärbt werden. Ist die Differenz &gt= -0,2~f~ aber ~f~&lt 0,2~f~ soll die Zelle gelb, und für den Fall dass die Differenz ~f~&gt= 0,2 ist soll die Zelle grün gefärbt werden.
Hier mein Problem: Die Differenz wird immer richtig berechnet. Aber die Einfärbung für den Fall dass die Differenz -0,2 beträgt ist von Fall zu Fall unterschiedlich. - Ich habe nur exakte Werte mit einer Stelle nach dem Komma benutzt und mir auch die Differenz ausgeben lassen. Sie stimmt, aber die Case Anweisung funktioniert nicht immer. Ich habe auch schon die Reihenfolge vertauscht, aber das hat auch nichts gebracht. Auch eine Multiplikation des Wertes c mit 10 brachte keine Veränderung.
Auch das Aufnehmen der Anweisung
Case -0.2
x.Interior.ColorIndex = 6 ' Gelb
x.NumberFormat = "0.0"
brachte keine Veränderung!
Ich bin für jede Hilfe dankbar!!!!
Viele Grüße
Sabine
Hier mein Makro:
For Each x In Selection
c = x - Cells(x.Row, 2)
Select Case c

Case 0.2 To 4
x.Interior.ColorIndex = 35 ' Grün
x.NumberFormat = "0.0"

Case -4 To -0.2
x.Interior.ColorIndex = 3 ' Rot
x.NumberFormat = "0.0"

Case -0.2 To 0.2
x.Interior.ColorIndex = 6 ' Gelb
x.NumberFormat = "0.0"

Case Else
x.Interior.ColorIndex = xlNone

End Select

Cells(x.Row + 20, x.Column) = c

Next x
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnungen mit VBA
ransi
hallo sabine
reihenfolge ist in der tat wichtig
versuchs mal so:
denke das prinzip ist klar geworden.
Option Explicit
Public

Sub test()
Dim farbe As Integer
Select Case Range("a1").Value
Case Is <= -0.2
farbe = 3
Case Is >= 0.2
farbe = 4
Case Is < 0.2
farbe = 5
End Select
Range("a1").Interior.ColorIndex = farbe
End Sub

ransi
Anzeige
AW: Berechnungen mit VBA
27.10.2005 18:56:54
Sabine
Hallo Ransi,
Vielen Dank für Ihren Versuch. - So hatte ich es auch schon probiert, wollte aber aus irgendeinem Grund auch nicht funktionieren.
Das Problem ist, dass dieser Makro ganz wunderbar funktioniert, wenn ich die absoluten Werte abfrage. (Das heißt ohne "c = x - Cells(x.Row,2)" und mit "Select Case x") - Stimmt die Reihenfolge muss in grün, gelb, rot geändert werden.
Aber es klappt nicht, wenn ich die Differenzbildung einbaue.
Das lustige ist auch noch, dass bei einigen Differenzen z.B. 1,8 - 2,0, die Farbe stimmt, während bei 2,8 - 3,0 die falsche Farbe (nämlich rot) oder bei 1,2 - 1,0 grün an Stelle von gelb angezeigt wird.
Vielen Dank für jede weitere Idee!!
Viele Grüße
Sabine
Anzeige
AW: Berechnungen mit VBA
28.10.2005 12:19:20
Heiner
Hallo,
wenns mit select case nicht funktioniert, dann probiers doch mal mit 'if then'

Sub test()
Dim farbe As Integer
If Range("a1").Value >= -0.2 And Range("a1").Value < 0.2 Then
farbe = 3
ElseIf Range("a1").Value < -0.2 Then
farbe = 4
ElseIf Range("a1").Value > 0.2 And Range("a1").Value < 4 Then
farbe = 5
End If
Range("a1").Interior.ColorIndex = farbe
End Sub

Gruß Heiner
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige