Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich Wert aus Formel mit Zahl über VBA Code

Forumthread: Vergleich Wert aus Formel mit Zahl über VBA Code

Vergleich Wert aus Formel mit Zahl über VBA Code
09.12.2008 18:38:21
Maja
Hallo,
ich habe als VBA-Anfänger ein Problem, an dem ich mir die "Zähne ausbeiße".
Ich möchte die Summe aus zwei Zellen (z.B. AD7 und AE7), die jeweils eine Formel enthalten mit einer Zahl aus einer dritten Zelle (z.B. AE2) vergleichen. Ist die Summe von AD7 und AE7 nun größer als die Zahl in AE 2, sollen die beiden "Formelzellen" AD7 und AE7 rot eingefärbt werden.
Mir gelingt bis jetzt nur das Bilden der Summe in einer vierten Zelle (z.B. A1), die ich dann mit AE2 vergleiche. Allerdings finde ich das zu umständlich und das Einfärben der Zellen AD7 und AE7 ist damit leider auch noch nicht gelöst.
Darüber hinaus habe ich manchmal das Problem, dass AD7 oder AE7 leer ist, also gar keinen Wert enthält und dementsprechend bei einer Summenbildung in A1 "#Wert" angezeigt wird. Wie kann ich dieses Problem angehen?
Ich freue mich über jeden Hinweis.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich Wert aus Formel mit Zahl über VBA Code
09.12.2008 19:18:42
Larass
Hallo Maja,
soweit wie Du Dein Problem beschrieben hast würde es z.B. hierdurch gelöst:

Sub Rotfärben()
If Range("AD7").Value + Range("AE7").Value > Range("AE2").Value Then
Range("E21:E22").Interior.ColorIndex = 3
Else
Range("E21:E22").Interior.ColorIndex = 0
End If
End Sub


Ansonsten bitte genauer!
Gruß, Lars

Anzeige
AW: Vergleich Wert aus Formel mit Zahl über VBA Code
10.12.2008 10:59:00
Maja
Hallo,
danke für die Lösung! Ich habe da wohl echt den Wald nicht vor Bäumen gesehen.
Mein Problem ist jetzt noch eine Leerzelle.
Wie kann ich eine solche Leerzelle in die Addition mit einbeziehen, ohne das mir ein Laufzeitfehler angezeigt wird?
Gruß
Maja
AW: Vergleich Wert aus Formel mit Zahl über VBA Code
10.12.2008 11:04:00
Erich
Hi Maja,
vielleicht so:

Sub Rotfärben()
If Application.Sum(Range("AD7:AE7")) > Range("AE2").Value Then
Range("E21:E22").Interior.ColorIndex = 3
Else
Range("E21:E22").Interior.ColorIndex = 0
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Vergleich Wert aus Formel mit Zahl über VBA Code
10.12.2008 14:16:32
Maja
Hallo Erich,
danke für deine Lösung!
Range("E21:E22").Interior.ColorIndex = 0 hat bei mir nicht unktioniert (kam immer eine Fehlermeldung), daher habe ich dann Range("E21:E22").Interior.ColorIndex = xlColorIndexNone geschrieben, was auch funktioniert.
Ansonsten klappt alles super.
Danke! Auch für den Hinweis mit der Bedingten Formatierung. Ich hatte diesen Weg nicht gewählt, da neben der Farbmarkierung gleich eine Messagebox ausgegeben werden sollte (und meine Abfrage nach der Zellfarbe in VBA nicht lief).
Anzeige
AW: Danke für Rückmeldung!
10.12.2008 19:12:11
Erich
Hallo Maja,
sorry, das mit dem ColorIndex = 0 hatte ich nicht gesehen - hab nicht getestet.
Ich hab mich halt nur um Application.Sum(Range("AD7:AE7")) gekümmert...
Grüße von Erich aus Kamp-Lintfort
AW: Bedingte Formatierung ?
09.12.2008 19:44:58
Erich
Hallo Maja,
warum nicht einfach über bedingte Formatierung?
 ADAE
2 222
3  
4  
5  
6  
7127127

Formeln der Tabelle
ZelleFormel
AE2=111*2
AD7=123+4
AE7=123+4

Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
AD71. / Formel ist =SUMME($AD$7:$AE$7)>$AE$2Abc
AE71. / Formel ist =SUMME($AD$7:$AE$7)>$AE$2Abc

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Vergleich Wert aus Formel mit Zahl über VBA Code


Schritt-für-Schritt-Anleitung

Um die Summe aus zwei Zellen (z.B. AD7 und AE7) mit einer Zahl (z.B. AE2) zu vergleichen und die Zellen entsprechend einzufärben, kannst Du den folgenden VBA-Code verwenden:

Sub Rotfärben()
    If Application.Sum(Range("AD7:AE7")) > Range("AE2").Value Then
        Range("AD7:AE7").Interior.ColorIndex = 3
    Else
        Range("AD7:AE7").Interior.ColorIndex = xlColorIndexNone
    End If
End Sub
  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro Rotfärben aus, um die Zellfarbe zu ändern.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler bei leeren Zellen

    • Lösung: Nutze Application.Sum, um leere Zellen zu ignorieren. Der oben angegebene Code verwendet dies bereits.
  • Fehler: Farbausgabe funktioniert nicht

    • Lösung: Stelle sicher, dass Du xlColorIndexNone verwendest, um die ursprüngliche Farbe wiederherzustellen.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die bedingte Formatierung in Excel nutzen:

  1. Wähle die Zellen AD7 und AE7 aus.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle Formel zur Ermittlung der zu formatierenden Zellen verwenden.
  4. Gib die folgende Formel ein:
    =SUMME($AD$7:$AE$7)>$AE$2
  5. Wähle das gewünschte Format (z.B. Hintergrundfarbe Rot) aus und klicke auf OK.

Praktische Beispiele

Angenommen, Du hast folgende Werte:

  • AD7: 123 + 4 (Ergebnis: 127)
  • AE7: 123 + 4 (Ergebnis: 127)
  • AE2: 222

Wenn Du das Makro ausführst, wird die Summe 254 (127 + 127) mit 222 verglichen. Da 254 > 222, werden die Zellen AD7 und AE7 rot eingefärbt.


Tipps für Profis

  • Verwende den Worksheet_Change-Ereignis, um das Makro automatisch auszuführen, wenn die Werte in AD7 oder AE7 geändert werden.
  • Du kannst den Code anpassen, um eine Messagebox anzuzeigen, wenn die Bedingung erfüllt ist:
If Application.Sum(Range("AD7:AE7")) > Range("AE2").Value Then
    MsgBox "Die Summe ist größer!"
End If

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass mein Makro nur für eine bestimmte Excel-Version funktioniert?
Antwort: Du kannst die Excel-Version im VBA-Code abfragen und die Funktionalität entsprechend anpassen.

2. Frage
Was ist der Unterschied zwischen ColorIndex und Interior.Color?
Antwort: ColorIndex verwendet einen vordefinierten Farbindex, während Interior.Color eine RGB-Farbe akzeptiert, die mehr Flexibilität bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige