Office: (Office 2000) Monat färben mit VBA (Makro)

Helfe beim Thema Monat färben mit VBA (Makro) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bin ein Neuling in Sachen VBA und Makro, daher wende ich mich an euch mit der Bitte um Hilfe. Ich habe eine Tabelle, in der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fraesh, 23. August 2015.

  1. fraesh User

    Monat färben mit VBA (Makro)


    Hallo zusammen,

    ich bin ein Neuling in Sachen VBA und Makro, daher wende ich mich an euch mit der Bitte um Hilfe.

    Ich habe eine Tabelle, in der ich manuell in mehrere Zellen unter Spalte A ein Datum eingebe. In Spalte B gebe ich ebenfalls manuell ein Datum ein, dabei wird per bedingter Formatierung ermittelt, ob das Datum unter Spalte B über dem Datum in Spalte C liegt und wenn ja rot gefärbt. In der Spalte C wird das Datum in der selben Zeile aus Spalte A geprüft und per Makro in der selben Zeile unter Spalte C mit DateSerial 6 Monate später eingetragen.

    Beispiel:

    [table="width: 500, class: outer_border, align: left"]
    [tr]
    [td][/td]
    [td]A[/td]
    [td]B[/td]
    [td]C[/td]
    [/tr]
    [tr]
    [td]1[/td]
    [td]Beginn[/td]
    [td]Ende[/td]
    [td]späteste Ende[/td]
    [/tr]
    [tr]
    [td]2[/td]
    [td]01.01.2015[/td]
    [td]03.01.2015[/td]
    [td]30.06.2015[/td]
    [/tr]
    [tr]
    [td]3[/td]
    [td]usw.[/td]
    [td]usw.[/td]
    [td]usw.[/td]
    [/tr]
    [/table]


    Nun möchte ich die möglichen zwölf Monate aus Spalte C färben. D.h. Januar rot, Februar gelb usw. Das Jahr und der Tag sollen dabei unwichtig sein, da in jedem Jahr die Monate dieselbe Farbe haben sollen.

    Ich benutzte Excel 2000 und habe daher keine Möglichkeit die bedingte Formatierung zu nutzen.

    Vielen Dank für eure Unterstützung.

    Gruß
    fraesh
     
  2. Beverly
    Beverly Erfahrener User
    Hi,

    wenn deine Zellen bereits mit bedingter Formatierung gefärbt werden, kannst du sie nicht noch zusätzlich mit Füllfarbe formatieren, da die Färbung durch bedingte Formatierung stets Vorrang hat.

    Bis später,
    Karin
     
    Beverly, 24. August 2015
    #2
  3. fraesh User
    Das ist richtig, vielen Dank, für deine Antwort.
    Ich habe mich in dieser Hinsicht vielleicht nicht eindeutig ausgedrückt.

    Gefärbt mit bedingter Formatierung werden nur die Zellen aus Spalte B. Ich möchte per Makro die Zellen aus Spalte C formatieren.

    Es sollen alle Daten in Spalte C gefärbt werden, wobei die Färbung sich auf den Monat bezieht.

    Ist das möglich?

    Vielen Dank.
     
  4. Beverly
    Beverly Erfahrener User

    Monat färben mit VBA (Makro)

    Laufe in einer Schleife über alle Zeilen und prüfe mittels Month(Cells(laufendeZeile, 3)), welcher Monat ansteht - in einer Select Case-Anweisung kannst du dann festlegen, welche Farbe zu welcher Monatsnummer gehören soll.

    Bis später,
    Karin
     
    Beverly, 24. August 2015
    #4
  5. fraesh User
    Hallo Karin,

    so sieht mein Code:

    Application.EnableEvents = False 'XXXXXXXXXXXXXXXX
    Dim Zelle As Range
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If Not IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If
    Application.EnableEvents = True 'XXXXXXXXXXXXXXXX

    Kannst du mir bitte erklären, wie ich die Schleife einbauen kann.


    Vielen Dank

    Gruß
    Arthur
     
  6. Beverly
    Beverly Erfahrener User
    Hi Arthur,

    dein Code läuft doch bereits in einer Schleife über alle Zellen.

    Mir ist allerdings nicht klar, was dein Code tatsächlich machen soll, denn er trägt das Datum ein wenn die Zelle in Spalte C leer ist UND wenn sie nicht leer ist - wo ist denn da der Unterschied?
    Und was hat es mit Application.EnableEvents auf sich, wenn der Code ein ganz normales Makro und kein Change-Ereignis des Tabellenblattes ist - geht ja aus deinem Codeschnipsel nicht hervor. Wenn du das Worksheets_Change-Ereignis für deinen Code verwendest - weshalb wird dann jedesmal die gesamte Spalte durchlaufen und das Datum nicht nur für die Target-Zeile eingetragen?
    Wozu benötigst du die Prüfung mittels WorksheetFunction.CountA(Range("A2:A1000")) > 0 wenn du doch nur die belegten Zellen mittels SpecialCells(xlCellTypeConstants) berücksichtigst?

    Lade doch mal eine Beispielmappe hoch und erkläre ganz genau WAS du eigentlich machen willst.

    Bis später,
    Karin
     
    Beverly, 24. August 2015
    #6
  7. fraesh User
    Hallo Karin,

    den Code habe ich nicht selbst geschrieben, es ist ein Codeschnipsel, daher kann ich dir die folgenden Punkte nicht erklären:

    WorksheetFunction.CountA(Range("A2:A1000")) > 0
    SpecialCells(xlCellTypeConstants)
    Application.EnableEvents

    Bezogen auf:
    Dim Zelle As Range
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If Not IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If

    Wenn die Zelle in Spalte C leer ist, dann fülle ein Datum. Ist sie nicht leer, dann ändere das Datum auf ein neues in der Zukunft. Da in Spalte A das Datum ggf. in der selben Zelle geändert werden kann.

    Leider klappt es nicht die Datei hochzuladen, aber ich stelle dir hier den ganzen Code zur Verfügung.

    Code:
    Private Sub Zeile_Click()
    '
    ' Zeilen_einfügen Makro
    '
    
        If Selection.Areas.Count > 1 Then
            MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
            Exit Sub
        End If
        
        Application.ScreenUpdating = False
        Selection.EntireRow.Insert
        ' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
        With Selection.EntireRow
            .Offset(1, 0).Resize(1).Copy
            .PasteSpecial Paste:=xlPasteFormulas
        End With
        Application.ScreenUpdating = True
    
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Wenn mehr als eine Zelle markiert wurde dann Makro beenden
    
                        
    Application.EnableEvents = False 'XXXXXXXXXXXXXXXX
    Dim Zelle As Range
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If
    If WorksheetFunction.CountA(Range("A2:A1000")) > 0 Then
    For Each Zelle In Range("A2:A1000").SpecialCells(xlCellTypeConstants)
    If Not IsEmpty(Zelle.Offset(0, 2)) Then Zelle.Offset(0, 2) = DateSerial(Year(Zelle), Month(Zelle) + 6, Day(Zelle) - 1)
    Next Zelle
    End If
    Application.EnableEvents = True 'XXXXXXXXXXXXXXXX
    
    End Sub
    
    
    Vielen Dank.
     
  8. Beverly
    Beverly Erfahrener User

    Monat färben mit VBA (Makro)

    Hi Arthur,

    ohne hochgeladene Beispielmappe kann man nicht testen was da tatsächlich abläuft.
    Dein Code im Worksheet_Chande-Ereignis wird bei JEDER Änderung im Tabellenblatt ausgeführt - ich würde denken dann das vollkommen unnötig ist. Außerdem solltest du mal ganz genau beschreiben wie du in deiner Mappe vorgehst und was genau wann passieren soll.

    Bis später,
    Karin
     
    Beverly, 25. August 2015
    #8
  9. fraesh User
    Hallo Karin,

    tut mir leid für die späte Antwort, ich war beruflich eingespannt und muss dieses Ergebnis im Rahmen meiner Arbeit erbringen, habe aber damit hauptberuflich nichts zu tun.

    Aufgrund deiner Tipps habe ich es folgernmaßen lösen können:

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
    If Target = "" Then
    Target.Offset(0, 2).ClearContents
    ElseIf Not IsDate(Target) Then
    Target.Offset(0, 2).ClearContents
    Else:
    Target.Offset(0, 2) = DateSerial(Year(Target), Month(Target) + 6, Day(Target) - 1)
    End If

    monat1 = Month(Target.Offset(0, 2))
    If monat1 = 1 Then Target.Offset(0, 2).Interior.ColorIndex = 37
    If monat1 = 2 Then Target.Offset(0, 2).Interior.ColorIndex = 40
    If monat1 = 3 Then Target.Offset(0, 2).Interior.ColorIndex = 39
    If monat1 = 4 Then Target.Offset(0, 2).Interior.ColorIndex = 44
    If monat1 = 5 Then Target.Offset(0, 2).Interior.ColorIndex = 33
    If monat1 = 6 Then Target.Offset(0, 2).Interior.ColorIndex = 36
    If monat1 = 7 Then Target.Offset(0, 2).Interior.ColorIndex = 10
    If monat1 = 8 Then Target.Offset(0, 2).Interior.ColorIndex = 46
    If monat1 = 9 Then Target.Offset(0, 2).Interior.ColorIndex = 38
    If monat1 = 10 Then Target.Offset(0, 2).Interior.ColorIndex = 54
    If monat1 = 11 Then Target.Offset(0, 2).Interior.ColorIndex = 48
    If monat1 = 12 Then Target.Offset(0, 2).Interior.ColorIndex = 53
    End Sub

    Vielen Dank.
     
Thema:

Monat färben mit VBA (Makro)

Die Seite wird geladen...
  1. Monat färben mit VBA (Makro) - Similar Threads - Monat färben VBA

  2. Zellbezug mit MONAT(HEUTE()) Funktion

    in Microsoft Excel Hilfe
    Zellbezug mit MONAT(HEUTE()) Funktion: Hallo Forum, ich habe eine Exceltabelle, mit der ich meine Finanzen festhalte. Auf einer Übersichtsseite stehen die Einnahmen/Ausgaben für verschiedene Bereiche. In der Spalte Q möchte ich den...
  3. SUMMEWENNS mit Datumsbereich nach Monaten

    in Microsoft Excel Hilfe
    SUMMEWENNS mit Datumsbereich nach Monaten: Guten Morgen! Ich möchte Beträge für einzelne Monate aufsummieren, habe aber nur die Datumsangabe. Zusätzlich soll nach einem zweiten Kriterium gesucht werden. Ich denke, dass es mit der...
  4. TABS für jedne Tag des Monats einfügen + Tabelle mit übernehmen

    in Microsoft Excel Hilfe
    TABS für jedne Tag des Monats einfügen + Tabelle mit übernehmen: Hallo, ich muss übergangsweise monatsweise ein Kassenbuch in Excel führen. Ich habe im 1. Reiter ein Tabellenblatt. Dieses enthält Formeln sowie in Zelle B2 das aktuelle Datum. Was ich gern...
  5. Beträge in anderem Tabellenblatt anzeigen lassen mit Bezug auf einen Monat und ohne Leerzellen

    in Microsoft Excel Hilfe
    Beträge in anderem Tabellenblatt anzeigen lassen mit Bezug auf einen Monat und ohne Leerzellen: Hello, nun habe ich noch ein kleines Problem... ich habe es schon mal versucht, aber komme nicht zum richtigen Ergebnis... Jetzt soll ein Betrag in einem anderen Tabellenblatt angezeigt...
  6. Datum fortlaufend für ein Monat automatisch erstellen

    in Microsoft Excel Hilfe
    Datum fortlaufend für ein Monat automatisch erstellen: Hallo ich muss jeden Monat mehrere dieser Blätter ausfüllen und das Datum mühselig eintragen. Das Blatt ist gesperrt, nur die Zelle neben den Wochentagen kann ausgefüllt werden und der Zeitraum...
  7. Gesamtliste auf Monate/Reiter aufteilen

    in Microsoft Excel Hilfe
    Gesamtliste auf Monate/Reiter aufteilen: Hallo liebe Excel-Profis! Ich sitze jetzt schon einige Zeit an einem Problem bei dem ich aber irgendwie nicht voran komme und die Hoffnung habe, hier Hilfe zu bekommen. Ich habe eine Excelliste...
  8. Bedingtes Formatieren - Jeden zweiten Monat die gleiche Farb

    in Microsoft Excel Hilfe
    Bedingtes Formatieren - Jeden zweiten Monat die gleiche Farb: Hallo Ich habe eine Tabelle mit vielen Daten. Was für eine Formel soll ich eingeben damit jeder zweite Monat die gleiche Farbe hat? In einer anderen Tabelle benutzte ich....
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden