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

VBA einfärben von Sa So falsch

Forumthread: VBA einfärben von Sa So falsch

VBA einfärben von Sa So falsch
Sa
Hallo zusammen,
ich versuche Sa und So per VBA in einem Kalender einzufärben.
Die Datümer dafür sind quasi zusammen gesetzt.
Einfärben funktioniert, allerdings nicht korrekt. Die Tage liegen daneben.
Kann jemand den Fehler korrigieren.
Der sog. Kalender soll aber nicht verändert werden

Die Datei https://www.herber.de/bbs/user/78281.xls wurde aus Datenschutzgründen gelöscht


Danke wiedereinmal
Karl
Anzeige
AW: VBA einfärben von Sa So falsch
07.01.2012 19:25:21
Sa
Hallo Karl,

If Weekday(DateSerial(Year(Cells(zz, 2)), Month(Cells(zz, 2)), zs - 2), 2) > 5 Then


AW: VBA einfärben von Sa So falsch
07.01.2012 19:28:08
Sa
Jawohl, Dankeschön Hajo
Karl
AW: VBA einfärben von Sa So falsch
07.01.2012 19:26:07
Sa
HAllo
MAch ma so:
If (Weekday(DateSerial(Year(Cells(zz, 2)), Month(Cells(zz, 2)), zs - 2), vbMonday) >= 6) Then
    Cells(zz, zs).Interior.ColorIndex = 3
Else
    Cells(zz, zs).Interior.ColorIndex = xlNone
End If

ransi
Anzeige
AW: VBA einfärben von Sa So falsch
07.01.2012 19:29:34
Sa
... und ebenfalls besten Dank an dich ransi
AW: VBA einfärben von Sa So falsch
07.01.2012 19:28:11
Sa
Hallo
Hast Du schon mal mit
Day(zs - 2))) = 6) und
Day(zs - 2))) = 7) probiert ?
Gruß Matthias
AW: VBA einfärben von Sa So falsch
07.01.2012 19:31:06
Sa
heyhey , hier wird man geholfen
Danke euch allen
Karl
PS: und wieder dazu gelernt
Anzeige
AW: VBA einfärben von Sa So falsch
07.01.2012 19:28:21
Sa

Hallo Karl,
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
  Dim intMonth As Integer, intDay As Integer
  
  Range("C6:AG17").Interior.ColorIndex = xlNone
  
  For intMonth = 1 To 12
    For intDay = 1 To Day(DateSerial(Year(Date), intMonth + 1, 0))
      If Weekday(DateSerial(Year(Date), intMonth, intDay), vbMonday) > 5 Then
        Cells(intMonth + 5, intDay + 2).Interior.Color = vbRed
      End If
    Next
  Next
  
End Sub



« Gruß Sepp »

Anzeige
AW: VBA einfärben von Sa So falsch
07.01.2012 19:35:50
Sa
Hallo Josef, wenn ich mich nicht verguckt habe ist deine Variante etwas schneller
und ich vermute dass mit
For intDay = 1 To Day(DateSerial(Year(Date), intMonth + 1, 0))

die Anzahl der Monatstage geprüft wird
Karl
AW: VBA einfärben von Sa So falsch
08.01.2012 11:44:15
Sa

Hallo Karl,
das vermutest du richtig.
Und so geht's noch einen Tick schneller.
Private Sub CommandButton1_Click()
  Dim rng As Range
  Dim intMonth As Integer, intDay As Integer
  
  On Error GoTo ErrExit
  
  Application.ScreenUpdating = False
  
  Range("C6:AG17").Interior.ColorIndex = xlNone
  
  For intMonth = 1 To 12
    For intDay = 1 To Day(DateSerial(Year(Date), intMonth + 1, 0))
      If Weekday(DateSerial(Year(Date), intMonth, intDay), vbMonday) > 5 Then
        If rng Is Nothing Then
          Set rng = Cells(intMonth + 5, intDay + 2)
        Else
          Set rng = Union(rng, Cells(intMonth + 5, intDay + 2))
        End If
      End If
    Next
  Next
  
  If Not rng Is Nothing Then rng.Interior.Color = vbRed
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "Sub 'CommandButton1_Click'" & vbLf & String(40, "=") & vbLf & vbLf & _
        IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & "Fehlernummer:" & vbTab & _
        .Number & vbLf & vbLf & "Beschreibung:" & vbTab & .Description & vbLf, vbExclamation, "Fehler in Modul - Tabelle1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  Application.ScreenUpdating = True
  
  Set rng = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: VBA einfärben von Sa So falsch
08.01.2012 12:44:19
Sa
Hallo Josef,
die erste Prozedur hab ich eingebaut,
bei dieser jetzt kann ich bestimmt zwischendurch keinen Schluck Kaffee mehr konsumieren ;-}
Gruß
Karl
AW: VBA einfärben von Sa So falsch
07.01.2012 19:44:47
Sa
Hallo Karl,
ganz kleiner Denkfehler: Day(nn), da muss nn immer ein Datum sein. zs-2 ergibt aber einfach eine Zahl.
Ändere den Code so ab:
statt Day(zs - 2) schreib einfach zs-2.
Gruß
Jochen
Anzeige
AW: VBA einfärben von Sa So falsch
07.01.2012 20:16:43
Sa
Hallo Jochen,
ich """"dachte"""" bei

DateSerial
eine richtige Datumsangabe hingehört
Darum find ich dieses Forum echt Spitze, vernünftig gefragt gibt es fast immer viele brauchbare Antworten/Tipps
Karl
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18