Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige