Monatskalender
Uwe
einmal mehr eine sicher kleinere Hürde, die ich zur Zeit nicht zu "nehmen" vermag. Nun denn. Für ein Tabellenblatt ("Zeitdaten") einer Arbeitsmappe habe ich ein, für meine Erwartungen, schlicht funktionierendes Modul, das ich über Worksheet_change anspreche:
Option Explicit
Public Sub TageImMonat()
Dim Anz_Tage As Integer
Dim Anz_Eintrag As Integer
Dim Datum As Date
Dim wks As Worksheet, w As Worksheet
Dim i As Integer, run As Integer
Dim rng As Range
On Error GoTo ERRHANDLER
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Sheets("Zeitdaten").Activate
If IsDate([A1]) Then
Datum = DateSerial(Year([A1]), Month([A1]), 1)
End If
Anz_Tage = Day(DateSerial(Year(Datum), Month(Datum) + 1, 0))
For Each wks In ThisWorkbook.Worksheets
If wks Is tb31100000 Then
With wks
.Range("A6:C36").ClearContents
For Anz_Eintrag = 0 To Anz_Tage - 1
.Cells(Anz_Eintrag + 6, 2).Value = Datum + Anz_Eintrag
.Cells(Anz_Eintrag + 6, 3).Value = Format(Datum + Anz_Eintrag, "ddd")
Next Anz_Eintrag
End With
End If
For Each rng In Range("C6:C36")
Select Case rng.Text
Case "Sa", "So"
rng.Offset(, -1).Resize(, 25).Interior.ColorIndex = 40
Case Else
rng.Offset(, -2).Resize(, 26).Interior.ColorIndex = xlNone
End Select
Next
Next wks
ERRHANDLER:
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Sheets("Zeitdaten").Select
End Sub
Nun denn... Jetzt ist es so, das ich dieses Modul ergänzen muß. Für das Arbeitsblatt "31100000" (dieses kommt in insgesamt 22 Arbeitsmappen unverändert vor) ist die Prozedur perfekt. Nicht aber für die weiteren Arbeitsblätter (zwischen 23 und 44) dieser Arbeitsmappen. Hier sind z.B. Zellen A5:B35 anzusprechen. Lange Rede, kurzer Sinn...Wie bekomme ich`s hin, das eine Prozedur (kleinere Änderungen müßte ich im o.g. Code dazu dann vornehmen) zwar für alle anderen Blätter (zwischen 23 und 44) nicht aber für das Blatt "Zeitdaten" (31100000) (Hierfür soll die o.g. Prozedur gelten) gilt?
Na, meine Vermutung ist ja zur Zeit die, das die Anweisung "For Each wks In ThisWorkbook.Worksheets" noch irgendwie falsch steht.
Zudem habe ich in den zur Zeit 22 Arbeitsmappen die einzelnen Blätter immer nach System benannt. Das Blatt "Zeitdaten" ist z.B. hierbei stets 31100000, alle weiteren Blätter z.B. 31100010 bis 31100230. So ich diese Bezeichnungen in Codes ansprechen kann, wäre mir seeehr geholfen, da eben diese Bezeichnungen in allen 22 Arbeitsmappen identisch sind. Nur wie das...?
Besten Dank für Eure (Nach)Hilfe.
Uwe