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

Forumthread: VBA code kombinieren & Änderungen farbig markieren

VBA code kombinieren & Änderungen farbig markieren
23.01.2015 15:01:54
Werner
Guten Tag, hat jemand eine gute Idee?
Wie kombiniere ich diese Codes? Zellen code farbig und Änderungen nachverfolgen von Piet siehe _
unten?

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errExit
'Für den Bereich A1 bis D20. Ansonsten kann dieser in der Folgezeile angepasst werden.
If Intersect(Target, ActiveSheet.Range("A1:BF385")) Is Nothing Then Exit Sub 'Bitte den Bereich  _
_
_
_
_
anpassen
Select Case Target.Value
Case "S": Target.Interior.ColorIndex = 23 '

>> UND DAS VON PIET ÄNDERUNGEN MARKIEREN UND NACHVERFOLGEN? Option Explicit
'Code in das entsprechende Tabellenblatt!
Public AlterWert As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AlterWert = Target
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target AlterWert Then Target.Interior.ColorIndex = 3
End Sub

GRÜSSE WERNER

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA code kombinieren & Änderungen farbig markieren
24.01.2015 14:18:20
fcs
Hallo Werner,
ich hab dir mal was gebastelt.
Kombinieren kann man das nur in soweit, dass man vor dem Erfassen/Markieren von Änderungen die schon vorhandenen Markierungen löscht, d.h. durch die den Zellinhalten entsprechenden Farben ersetzt.
Die Case-Zeilen kann vereinfachen. Alle Werte, die die gleiche Zellfarbe liefern sollen, kann man in einer Case-Anweisung angeben.
Gruß
Franz

'Code unter das entsprechende Tabellenblatt!
Private AlterWert As Variant
Private Const strBereich As String = "A1:BF385" 'auf Änderungen zu überwachender Bereich, ggf.  _
apassen
Private Const lngMarkerFarbe As Long = 4 'hellgrün - ColorIndex der Farbe von Änderungen ggf. _
anpassen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AlterWert = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errExit
If Intersect(Target, ActiveSheet.Range(strBereich)) Is Nothing Then Exit Sub
If Target  AlterWert Then
Target.Interior.ColorIndex = lngMarkerFarbe 'hellgrün
End If
errExit:
End Sub
Sub AenderungsMarkierungenLoeschen()
Application.ScreenUpdating = False
Call prcZelleColorieren(Bereich:=Me.Range(strBereich))
Application.ScreenUpdating = True
End Sub
'Makro-Code in einem allgemeinen Modul einfügen, wenn er für mehrere Tabellenblätter gemeinsam  _
_
genutzt werden soll
Sub prcZelleColorieren(Bereich As Range)
Dim Zelle As Range
For Each Zelle In Bereich
With Zelle.Interior
Select Case Zelle.Value
Case "S": .ColorIndex = 23          'dunkel-blau
Case "Zu", "ZU": .ColorIndex = 6    'gelb
Case "SU", "Su": .ColorIndex = 6    'gelb
Case "xF", "XF": .ColorIndex = 46   'orange
Case "K", "k": .ColorIndex = 3      'rot
Case "Ko", "ko": .ColorIndex = 54   'dunkel-violett
Case "N", "n": .ColorIndex = 32     'blau
Case "N1", "n1": .ColorIndex = 11   'sehr-dunkel-blau
Case "F1", "F2", "F3", "F4": .ColorIndex = 37 'hell-blau
Case "D": .ColorIndex = 43          'oliv
Case "S1", "S2": .ColorIndex = 38   'hell-violett
Case "FTN": .ColorIndex = 26        'magenta
Case "U", "u": .ColorIndex = 6      'gelb
Case "SN", "SN1": .ColorIndex = 12  'braun-gelb/dunkel-Oliv
' Auf Wunsch hier die Reihe fortsetzen
Case Else
.ColorIndex = xlColorIndexNone
End Select
End With
Next
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA-Code kombinieren und Änderungen farblich markieren


Schritt-für-Schritt-Anleitung

Um den VBA-Code zu kombinieren und Änderungen farblich zu markieren, folge diesen Schritten:

  1. Öffne die Excel-Datei und gehe zu dem Arbeitsblatt, in dem Du die Änderungen verfolgen möchtest.

  2. Öffne den VBA-Editor mit Alt + F11.

  3. Füge ein neues Modul hinzu oder wähle das entsprechende Arbeitsblatt aus, in das Du den Code einfügen möchtest.

  4. Kopiere und füge den folgenden Code ein:

    Private AlterWert As Variant
    Private Const strBereich As String = "A1:BF385" ' Bereich anpassen
    Private Const lngMarkerFarbe As Long = 4 ' hellgrün
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       AlterWert = Target
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
       On Error GoTo errExit
       If Intersect(Target, ActiveSheet.Range(strBereich)) Is Nothing Then Exit Sub
       If Target <> AlterWert Then
           Target.Interior.ColorIndex = lngMarkerFarbe ' hellgrün
       End If
    errExit:
    End Sub
  5. Füge den folgenden Code in ein allgemeines Modul ein, wenn Du die Markierungen für mehrere Tabellenblätter nutzen möchtest:

    Sub AenderungsMarkierungenLoeschen()
       Application.ScreenUpdating = False
       Call prcZelleColorieren(Bereich:=Me.Range(strBereich))
       Application.ScreenUpdating = True
    End Sub
    
    Sub prcZelleColorieren(Bereich As Range)
       Dim Zelle As Range
       For Each Zelle In Bereich
           With Zelle.Interior
               Select Case Zelle.Value
                   Case "S": .ColorIndex = 23 ' dunkel-blau
                   Case "Zu", "ZU": .ColorIndex = 6 ' gelb
                   ' Weitere Case-Anweisungen hier...
                   Case Else
                       .ColorIndex = xlColorIndexNone
               End Select
           End With
       Next
    End Sub
  6. Schließe den VBA-Editor und teste den Code, indem Du Werte in den definierten Bereich eingibst. Änderungen sollten nun entsprechend farblich markiert werden.


Häufige Fehler und Lösungen

1. Fehler: Änderungen werden nicht farblich markiert.
Lösung: Stelle sicher, dass der Bereich in strBereich korrekt definiert ist und dass Du den Code im richtigen Arbeitsblatt eingefügt hast.

2. Fehler: Der Code wird nicht ausgeführt.
Lösung: Überprüfe, ob die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheit > Makroeinstellungen und aktiviere die Makros.

3. Fehler: Die Farben stimmen nicht überein.
Lösung: Prüfe die ColorIndex-Werte in den Case-Anweisungen und passe sie nach Deinen Wünschen an.


Alternative Methoden

Eine alternative Methode, um Änderungen farblich zu markieren, ist die Verwendung von bedingten Formatierungen. Du kannst Regeln erstellen, die basierend auf bestimmten Bedingungen die Farbe von Zellen ändern. Hier ist, wie Du es machst:

  1. Markiere den gewünschten Bereich.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle "Zellen formatieren, die enthalten" und definiere Deine Bedingungen.
  4. Wähle die gewünschte Formatierung, um die Zellen farblich zu markieren.

Praktische Beispiele

Hier sind einige Beispiele, wie Du den VBA-Code anpassen kannst:

  • Um Zellen gelb zu markieren, wenn der Wert "Zu" oder "ZU" eingegeben wird, kannst Du folgende Zeile in den Case-Block einfügen:

    Case "Zu", "ZU": .ColorIndex = 6 ' gelb
  • Für eine PDF-Exportfunktion, die die Änderungen farbig markiert, kannst Du eine zusätzliche Sub-Routine erstellen, die die farblich markierten Zellen in eine PDF-Datei exportiert.


Tipps für Profis

  • Nutze die Application.ScreenUpdating = False-Anweisung, um die Geschwindigkeit des Codes zu erhöhen, während Du Zellen aktualisierst.
  • Füge zusätzliche Case-Anweisungen hinzu, um verschiedene Werte mit unterschiedlichen Farben zu verknüpfen, um die Übersichtlichkeit zu verbessern.
  • Dokumentiere den Code sorgfältig, um zukünftigen Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Bereich anpassen, den der VBA-Code überwacht?
Antwort: Ändere einfach die strBereich-Konstante im Code, um den gewünschten Zellbereich zu definieren.

2. Frage
Kann ich mehrere Farben für verschiedene Werte verwenden?
Antwort: Ja, indem Du weitere Case-Anweisungen im Select Case-Block hinzufügst, kannst Du verschiedene Farben für unterschiedliche Zellwerte festlegen.

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