Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
764to768
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
764to768
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Zellen färben mit VBA
18.05.2006 09:54:41
Basch
Guten Morgen,
ich habe mir folgendes Makro gebastelt, welches mir die Zelle E26 bei einer Differenz zwischen Zelle E15 und E26 größer +-0,5 färbt. Letztendlich soll dieses Makro auch für die Zellen in den Spalten D26 bis Spalte AH26 funktionieren. Ich könnte jetzt einige Programmzeilen endsprechend oft kopieren und für jede Spalte abändern, aber das wäre wahrscheinlich sehr umständlich und das Makro wäre sehr lang hinterher. Kann mir einer einen Tipp geben wie man es besser macht.
Außerdem sollte eigentlich die Zelle bei kleineren Differenzen nicht weiß gefärbt sondern die "automatische Färbung" besitzen. Welche Eingabe wäre da die Richtige?
Viele Grüße von Bastian

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Nettoarbeitszeit = Range("E15").Value
SummeArbeitszeit = Range("E26").Value
Differenz = Nettoarbeitszeit - SummeArbeitszeit
If Differenz > 0.5 Or Differenz < -0.5 Then
Range("E26").Interior.Color = vbRed
Else: Range("E26").Interior.Color = vbWhite
End If
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen färben mit VBA
18.05.2006 10:15:42
serge
Hi Bastian
warum VBA?
mit bedingtem Format geht das ganz einfach!:
Formel=WENN(ODER(E26&lt$E$15*0.995;E26&gt$E$15*1.005);1;0)
Serge
AW: Zellen färben mit VBA
18.05.2006 10:52:52
Basch
Hallo Serge,
die Zellen in Zeile 26 sind bereits mit 3 bedingten Formatierungen belegt.
Troztdem Danke, Gruß, Bastian
AW: Zellen färben mit VBA
18.05.2006 10:32:23
Reinhard
Hi Bastian,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Differenz
If (Target.Row = 26 Or Target.Row = 15) And Target.Column >= 4 And Target.Column <= 34 Then
If Cells(15, Target.Column) = "" Or Cells(26, Target.Column) = "" Then Exit Sub
Differenz = Cells(26, Target.Column) - Cells(15, Target.Column)
If Differenz > 0.5 Or Differenz < -0.5 Then
Cells(26, Target.Column).Interior.Color = vbRed
Else
Cells(26, Target.Column).Interior.Color = xlNone
End If
End If
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Zellen färben mit VBA
18.05.2006 10:58:02
Basch
Hallo Reinhard,
vielen Dank für den Code. Sieht eleganter aus als bei mir, kann ich nur von lernen.
Irgend etwas geht aber noch nicht. Die Zellen werden nicht eingefärbt. Ich habe Dir mal meine Datei hochgeladen. Kannst Du Dir die bitte mal ansehen? Ich kann den Fehler nicht entdecken.
https://www.herber.de/bbs/user/33744.xls
Gruß, Bastian
AW: Zellen färben mit VBA
18.05.2006 11:20:27
Reinhard
Hi Bastian,
ich hätte nicht von dir abschreiben sollen :-)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Differenz
If (Target.Row = 26 Or Target.Row = 15) And Target.Column >= 4 And Target.Column <= 34 Then
If Cells(15, Target.Column) = "" Or Cells(26, Target.Column) = "" Then Exit Sub
Differenz = Cells(26, Target.Column) - Cells(15, Target.Column)
If Differenz > 0.5 Or Differenz < -0.5 Then
Cells(26, Target.Column).Interior.ColorIndex = 3
Else
Cells(26, Target.Column).Interior.ColorIndex = xlNone
End If
End If
End Sub

Das funktioniert mit gelöschter bedingter Formatierung.
Allerdings, wenn du da noch 3 bedingte Formatierungen für E26 hast, entscheidet excel ob es
E26 gemäß Makro Rot färbt
oder ob es
E26 gemäß der bedingten Formatierung grau färbt.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Zellen färben mit VBA
18.05.2006 11:59:41
Basch
Lieber Reinhard,
vielen Dank nochmals für die Hilfe. Schade, dass das Makro nicht bei Zellen mit der formatierten Bedingung läuft. Ich hätte das Vorhandensein der Formatierung in die Anfrage schreiben sollen.
Ich werden dann wohl in der Zeile 26 die formatierte Bedingung löschen und dort meine Fehlerabfrage einbauen.
Trotzdem nochmal vielen Dank für die kompetente und schnelle Hilfe. Ich werde mir Dein Makro auf jeden Fall noch genau ansehen wie Du das Problem gelöst hast.
Alles Gute wünscht Dir Bastian
AW: Zellen färben mit VBA
18.05.2006 12:08:26
Reinhard
Hi Bastian,
das Makro läuft, egal ob da bedingt formatiert ist oder nicht.
Aber wenn E26 gemäß Makro rot werden soll aber gleichzeitig laut bedingter Formtierung grau sein soll muss sich ja Excel für eins von beiden entscheiden, genauer gesagt es färbt die Zelle blitzschnell nacheinander erst rot, dann grau (oder umgekehrt).
Abhilfe wäre, per Makro E27 mitzuüberwachen und dann die Farbe für E26 per Makro festlegen.
Oder dass das Makro die Farbe von E26 festlegt und die bed. Formatierung das Muster von E26.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige

149 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox zum Thema

EXCEL - VBA: Zellen abhängig von Wert färben


Inhaltsverzeichnis

Problemdefinition

Ein Benutzer hat ein Makro erstellt, das die Zelle E26 einfärbt, wenn die Differenz zwischen den Zellen E15 und E26 größer als ±0,5 ist. Jetzt möchte der Benutzer das Makro so erweitern, dass es auch für die Zellen in den Spalten D26 bis AH26 funktioniert. Zusätzlich möchte der Benutzer, dass die Zelle bei kleineren Differenzen die "automatische Färbung" behält, anstatt weiß gefärbt zu werden.


Lösung des Problems mit VBA

Um das Makro auf die Zellen in den Spalten D26 bis AH26 zu erweitern, können wir eine Schleife verwenden, um durch die Spalten zu iterieren. Wir können auch die ColorIndex-Eigenschaft auf -4142 setzen, um die "automatische Färbung" beizubehalten.


Anwendungsbeispiel aus der Praxis

Hier ist ein Beispiel für das angepasste Makro:

Sub Faerben()
    Dim col As Integer
    For col = 4 To 34 'Spalten D bis AH
        With ThisWorkbook.Sheets("Tabelle1").Cells(26, col)
            If Abs(.Value - .Offset(-11, 0).Value) > 0.5 Then
                .Interior.Color = RGB(255, 0, 0) 'Rot
            Else
                .Interior.ColorIndex = -4142 'Automatische Färbung
            End If
        End With
    Next col
End Sub

In diesem Beispiel iteriert die Schleife For col = 4 To 34 durch die Spalten D bis AH. Die With-Anweisung wird verwendet, um die aktuelle Zelle in der Schleife zu referenzieren (z.B. D26, E26, etc.). Die If-Anweisung prüft, ob der Absolutwert der Differenz zwischen dem Wert der aktuellen Zelle und dem Wert der Zelle 11 Zeilen darüber größer als 0,5 ist. Wenn ja, wird die Zelle rot gefärbt. Andernfalls wird die "automatische Färbung" beibehalten.

Tipps

  • Du kannst die Farbe ändern, indem du die RGB-Funktion anpasst. Zum Beispiel, RGB(0, 255, 0) würde die Zelle grün färben.

Verwandte Funktionen

  • For...Next: Diese Schleife wird verwendet, um eine Gruppe von Anweisungen für eine bestimmte Anzahl von Malen zu wiederholen.
  • With...End With: Diese Anweisung wird verwendet, um eine Gruppe von Anweisungen auf ein bestimmtes Objekt anzuwenden.

Zusammenfassung

Mit einer For...Next-Schleife und der ColorIndex-Eigenschaft kannst du das Makro so anpassen, dass es für mehrere Zellen funktioniert und die "automatische Färbung" beibehält, wenn die Differenz kleiner oder gleich 0,5 ist.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige