Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Arbeitsnachweis aus Vorlage

Frage Microsoft Microsoft Office

Mitglied: L0c4lh0sT

L0c4lh0sT (Level 1) - Jetzt verbinden

06.02.2009, aktualisiert 09.02.2009, 6669 Aufrufe, 6 Kommentare

Hallo,

habe mal wieder ein Problem wo ich erstmal nicht weiter komme.
Ich erstelle gerade einen Arbeitsnachweis mit Excel.

Im Moment ist es so das ich das erste Blatt kopieren muss, neues Tabellenblatt erstellen und dann wieder alles Einfügen. Nach dem einfügen muss ich dann den Monat reinschreiben und die Spalten anpassen usw. Das möchte ich gerne automatisieren. Also ich klick auf einen Button. Dieser erstellt mir dann ein neues Tabellenblatt mit dem nächsten Monat als Namen. In diesem Blatt sollte dann die Anzahl der Tage stimmen z.B. wenn es der Monat Februar 2009 ist dann sollen 28 Tage in der Tabelle stehen.
Samstage und Sonntage sollen ausgegraut werden und die Formeln in den Zeilen gelöscht.

Über bedingte Formatierung kann ich hier leider nicht gehen da ich die schon in der Tabelle verwende und ausgenutzt habe. Hier ist mal mein Anfang. Vll. findet sich ja wer der mir da helfen kann.


http://www.file-upload.net/download-1434327/muster.xls.html

Danke euch

Edit:

Hab am Wochenende mitbekommen das meine Makros garnicht mit in der Datei sind. Deshalb hier nochmal die Makros:
Wie kann ich die mit in der Datei speichern? Also so das die in der Excel Datei immer enthalten sind?

Die hier kommen in Tabelle 1
01.
Sub CommandButton1_Click() 
02.
Dim rg As Range 
03.
Set rg = Range("A6:A33").Find(What:=Date, After:=Range("A6"), LookIn:= _ 
04.
        xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:= _ 
05.
        xlNext, MatchCase:=False) 
06.
    If rg Is Nothing Then 
07.
        MsgBox "Datum " & Date & " nicht gefunden" 
08.
    Else 
09.
        rg.EntireRow.Select 
10.
        Selection.Copy 
11.
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
12.
    :=False, Transpose:=False 
13.
    End If 
14.
End Sub 
15.
 
16.
Private Sub CommandButton2_Click() 'Druckt die Datei mit PDF-Xchange 
17.
 
18.
datname = "Gleitzeit" & Str(Month(Date)) & Str(Year(Date)) 
19.
Range("A1:M40").PrintOut Copies:=1 
20.
Application.SendKeys datname, True 'Gibt den Dateinamen ein 
21.
Application.SendKeys "{ENTER}", True 'Sendet ein Enter zur Namensbestätigung 
22.
Application.SendKeys "{ENTER}", True 'Sendet ein Enter zur Pfadauswahl 
23.
Application.SendKeys "{ENTER}", True 'Sendet ein Enter falls die Datei schon exisitert 
24.
 
25.
End Sub 
26.
 
27.
Private Sub CommandButton3_Click() 
28.
Calculate 
29.
Application.OnTime Now + TimeValue("00:00:01"), "timer" 
30.
End Sub
Modul 1
01.
Sub timer() 
02.
Calculate 
03.
Application.OnTime Now + TimeValue("00:00:01"), "timer" 
04.
End Sub
Mitglied: L0c4lh0sT
09.02.2009 um 08:07 Uhr
Kann denn keiner mal was dazu sagen?
Bitte warten ..
Mitglied: petenicker
09.02.2009 um 23:34 Uhr
Zitat von L0c4lh0sT:
Kann denn keiner mal was dazu sagen?

Hallo,

Im Moment ist es so das ich das erste Blatt kopieren muss, neues Tabellenblatt erstellen und dann wieder alles Einfügen. Nach dem einfügen muss ich dann den Monat reinschreiben und die Spalten anpassen usw.

Also zumindest das Spaltenanpassen kannst du dir sparen, wenn du das Blatt kopierst in dem du mit der rechten Maustaste auf das Blatt klickst und "Verschieben/Kopieren" auswählst und noch den Haken "Kopie erstellen" aktivierst.

Das möchte ich gerne automatisieren.

Gute Idee. Muss es unbedingt eine Datei pro Monat sein? Wie bereits in einer PN an dich mitgeteilt, habe ich mich am Wochenende mal rangesetzt. Per Code wird eine Datei für das ganze Jahr erstellt.
Ich bin nur ein armer Admin und Freizeit-Coder, was Excel anbelangt. Also bitte beim Anblick des Codes nicht lachen. Konstruktive Kritik ist natürlich willkommen

01.
Dim wb As Workbook 
02.
Dim ws As Worksheet 
03.
 
04.
Sub TableData() 
05.
     
06.
' Liefert die Eckdaten fuer das neue Blatt 
07.
     
08.
' Vorarbeiten: 
09.
' Im ersten Blatt muss in der Zelle A1 das Datum des ersten Tag des Jahres eingegeben werden 
10.
' In ersten Blatt muss in der Zelle B1 der Gleitzeitwert vom Dezember des Vorjahres eingegeben werden 
11.
     
12.
    Dim currentYear 
13.
    Dim prevMonth As Range 
14.
    Dim dFirstDayOfMonth As Date 
15.
    Dim h, i As Integer 
16.
    Dim iTables As Integer 
17.
    Dim iDays As Integer 
18.
    Dim sTitle As String 
19.
     
20.
    Set wb = ActiveWorkbook 
21.
    Set ws = ActiveSheet 
22.
    ws.Name = "Setup" ' Aendert Tabellenname 
23.
    ' Bereich "Setup_Vormonat": Gleitzeit-Wert des Vorjahres 
24.
    Set prevMonth = ws.Range("B1") 
25.
    With prevMonth 
26.
        .NumberFormat = "0.00" 
27.
        .Name = "Setup_Vormonat" 
28.
    End With 
29.
     
30.
    ' Aktuelles Jahr auslesen 
31.
    currentYear = Year(ws.Cells(1, 1)) 
32.
     
33.
    ' Überzählige Tabellen löschen 
34.
    iTables = wb.Worksheets.Count 
35.
    If iTables > 1 Then 
36.
    For h = iTables To 2 Step -1 
37.
        wb.Worksheets(h).Delete 
38.
    Next h 
39.
    End If 
40.
     
41.
    ' Anhand des Monatsersten (dFirstdayOfMonth) wird der Blatttitel und die Anzahl der Tage des jeweiligen Monats ermittelt. 
42.
    ' Fuer das Februarblatt muss noch ermittelt werden, ob das Jahr ein Schaltjahr ist. 
43.
    For i = 1 To 12 
44.
        Select Case i 
45.
            Case 1 
46.
                dFirstDayOfMonth = ws.Cells(1, 1) 
47.
                sTitle = "Januar" 
48.
                iDays = 31 
49.
            Case 2 
50.
                sTitle = "Februar" 
51.
                If schaltjahr(currentYear) = True Then 
52.
                    iDays = 29 
53.
                Else 
54.
                    iDays = 28 
55.
                End If 
56.
            Case 3 
57.
                sTitle = "März" 
58.
                iDays = 31 
59.
            Case 4 
60.
                sTitle = "April" 
61.
                iDays = 30 
62.
            Case 5 
63.
                sTitle = "Mai" 
64.
                iDays = 31 
65.
            Case 6 
66.
                sTitle = "Juni" 
67.
                iDays = 30 
68.
            Case 7 
69.
                sTitle = "Juli" 
70.
                iDays = 31 
71.
            Case 8 
72.
                sTitle = "August" 
73.
                iDays = 31 
74.
            Case 9 
75.
                sTitle = "September" 
76.
                iDays = 30 
77.
            Case 10 
78.
                sTitle = "Oktober" 
79.
                iDays = 31 
80.
            Case 11 
81.
                sTitle = "November" 
82.
                iDays = 30 
83.
            Case 12 
84.
                sTitle = "Dezember" 
85.
                iDays = 31 
86.
        End Select 
87.
         
88.
        ' Tabelle erstellen 
89.
        Call CreateTable(sTitle) 
90.
        Call TableHeader(sTitle) 
91.
        Call createWorkingtime(iDays, dFirstDayOfMonth) 
92.
    Next i 
93.
            
94.
End Sub
01.
Sub CreateTable(sTitle As String) 
02.
 
03.
' Erstellt ein neues Blatt 
04.
     
05.
    Set wb = ActiveWorkbook 
06.
    Set ws = wb.Sheets.Add(, wb.Sheets(wb.Sheets.Count)) 
07.
    ws.Name = sTitle 
08.
End Sub
01.
Sub TableHeader(sMonth As String) 
02.
     
03.
' Generiert den Blattkopf und passt Spaltenbreiten und Zeilenhoehen an. 
04.
     
05.
    Dim i As Integer 
06.
    Set ws = ActiveSheet 
07.
         
08.
    ' Zeilenhoehen festlegen 
09.
    For i = 1 To 3 
10.
        ws.Rows(i).RowHeight = 12.75 
11.
    Next i 
12.
    ws.Rows(4).RowHeight = 13.5 
13.
    ws.Rows(5).RowHeight = 39.75 
14.
     
15.
    ' Spaltenbreiten festlegen 
16.
    ws.Columns("A").ColumnWidth = 14.71 
17.
    ws.Columns("B").ColumnWidth = 12.86 
18.
    ws.Columns("C").ColumnWidth = 12.43 
19.
    ws.Columns("D").ColumnWidth = 10.57 
20.
    ws.Columns("E").ColumnWidth = 11.71 
21.
    ws.Columns("F").ColumnWidth = 7.14 
22.
    ws.Columns("G").ColumnWidth = 10.71 
23.
    ws.Columns("H").ColumnWidth = 11.29 
24.
    ws.Columns("I").ColumnWidth = 12# 
25.
    ws.Columns("J").ColumnWidth = 10.71 
26.
    ws.Columns("K").ColumnWidth = 6.14 
27.
    ws.Columns("L").ColumnWidth = 10.71 
28.
     
29.
    ' Aktuelles Datum in Zelle A1 
30.
    With ws.Cells(1, 1) 
31.
        .HorizontalAlignment = xlCenter 
32.
        .VerticalAlignment = xlBottom 
33.
        .Value = "=Today()" 
34.
    End With 
35.
     
36.
    ' Blattueberschrift 
37.
    With ws.Range("A2:C2") 
38.
        .VerticalAlignment = xlBottom 
39.
        .BorderAround xlContinuous, xlThin 
40.
        .Font.Bold = True 
41.
        .Cells(1, 1).Value = "Gleitzeittabelle" 
42.
        .Cells(1, 2).Value = "für den Monat" 
43.
        .Cells(1, 3).Value = sMonth 
44.
    End With 
45.
     
46.
    ' Uebertrag vom Vormonat 
47.
    With ws.Range("J4") 
48.
        .HorizontalAlignment = xlCenter 
49.
        .Formula = "=" & wb.Worksheets((ws.Index) - 1).Name & "!" & wb.Worksheets((ws.Index) - 1).Name & "_Vormonat" 
50.
        .NumberFormat = "0.00" 
51.
    End With 
52.
     
53.
    ' Kopfzeile der Zeiterfassung 
54.
    With ws.Range("A5:L5") 
55.
        .VerticalAlignment = xlBottom 
56.
        .HorizontalAlignment = xlCenter 
57.
        .BorderAround xlContinuous, xlThick 
58.
        .Borders(xlInsideVertical).Weight = xlThin 
59.
        .Cells.WrapText = True 
60.
        .Cells(1, 1).Value = "Datum" 
61.
        .Cells(1, 2).Value = "Wochentag" 
62.
        .Cells(1, 3).Value = "Startzeit" 
63.
        .Cells(1, 4).Value = "Uhrzeit" 
64.
        .Cells(1, 5).Value = "Gearbeitet" 
65.
        .Cells(1, 6).Value = "Soll" 
66.
        .Cells(1, 7).Value = "Feierabend ohne Mehrarbeit" 
67.
        .Cells(1, 8).Value = "Arbeit %" 
68.
        .Cells(1, 9).Value = "Mehrarbeit Stunde" 
69.
        .Cells(1, 10).Value = "Gleitzeit" 
70.
        .Cells(1, 11).Value = "Fertig" 
71.
        .Cells(1, 12).Value = "Urlaub / Schule / Feiertag" 
72.
    End With 
73.
End Sub
01.
Sub createWorkingtime(iDays As Integer, dFirstDayOfMonth As Date) 
02.
     
03.
' Generiert die eigentliche Arbeitszeiterfassung 
04.
' Legt die benutzerdefinierten Uhrzeitformate fest 
05.
  
06.
    Dim i As Integer 
07.
    Dim totRange As Range 
08.
    Dim rowRange As Range 
09.
    Dim prevMonth As Range 
10.
    Dim x, y, z As Integer 
11.
    Set ws = ActiveSheet 
12.
     
13.
    x = 12  ' Spaltenindex 
14.
    y = 6   ' Zeilenindex 
15.
    z = 6   ' Zähler 
16.
     
17.
    ' Formate festlegen 
18.
    datFormat = "[$-407]DD/ MM;@"   ' Datumformat 
19.
    wtFormat = "DDDD"               ' Wochentagformat 
20.
    startFormat = "h:mm;@"          ' Startzeitformat 
21.
    clockFormat = "hh:mm:ss;@"      ' Uhrzeitformat 
22.
    workedFormat = "hh:mm:ss;@"     ' "Gearbeitet"-Format 
23.
    fomFormat = "h:mm;@"            ' "Feierabend ohne Mehrarbeit"-Format 
24.
    workFormat = "0.00%"            ' "Arbeit in Prozent"-Format 
25.
    otFormat = "0.00"               ' "Mehrarbeit"-Format 
26.
    flextimeFormat = "0.00"         ' Gleitzeit-Format 
27.
     
28.
    ' Arbeitszeitbereich definieren 
29.
    Set totRange = ws.Range(Cells(y, 1), Cells(y + iDays - 1, x)) 
30.
    With totRange 
31.
        .Cells.RowHeight = 13.5 
32.
        .Borders(xlEdgeLeft).Weight = xlThick 
33.
        .Borders(xlEdgeRight).Weight = xlThick 
34.
        .Borders(xlEdgeBottom).Weight = xlThick 
35.
        .Borders(xlInsideHorizontal).Weight = xlThin 
36.
        .Borders(xlInsideVertical).Weight = xlThin 
37.
        .Borders(xlEdgeTop).Weight = xlThick 
38.
        .Columns(1).HorizontalAlignment = xlRight 
39.
        .Columns(1).NumberFormat = datFormat 
40.
        .Columns(2).HorizontalAlignment = xlLeft 
41.
        .Columns(2).NumberFormat = wtFormat 
42.
        .Columns(3).HorizontalAlignment = xlCenter 
43.
        .Columns(3).NumberFormat = startFormat 
44.
        .Columns(4).HorizontalAlignment = xlCenter 
45.
        .Columns(4).NumberFormat = clockFormat 
46.
        .Columns(5).HorizontalAlignment = xlRight 
47.
        .Columns(5).NumberFormat = workedFormat 
48.
        .Columns(6).HorizontalAlignment = xlCenter 
49.
        .Columns(7).HorizontalAlignment = xlCenter 
50.
        .Columns(7).NumberFormat = fomFormat 
51.
        .Columns(8).Font.Bold = True 
52.
        .Columns(8).HorizontalAlignment = xlRight 
53.
        .Columns(8).NumberFormat = workFormat 
54.
        .Columns(8).Interior.Pattern = xlSolid 
55.
        .Columns(8).Interior.ColorIndex = 1 
56.
        .Columns(8).FormatConditions.Delete 
57.
        .Columns(8).FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="=0,25").Font.ColorIndex = 3 
58.
        .Columns(8).FormatConditions.Add(Type:=xlCellValue, Operator:=xlBetween, Formula1:="=0,25", Formula2:="=1").Font.ColorIndex = 6 
59.
        .Columns(8).FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="=1").Font.ColorIndex = 4 
60.
        .Columns(9).HorizontalAlignment = xlCenter 
61.
        .Columns(9).NumberFormat = otFormat 
62.
        .Columns(10).HorizontalAlignment = xlCenter 
63.
        .Columns(10).NumberFormat = flextimeFormat 
64.
        .Columns(11).HorizontalAlignment = xlCenter 
65.
        .Columns(12).HorizontalAlignment = xlLeft 
66.
    End With 
67.
     
68.
     
69.
    For i = 1 To iDays 
70.
        Set rowRange = ws.Range(Cells(y - 1 + i, 1), Cells(y - 1 + i, x)) 
71.
        With rowRange 
72.
            ' Datum 
73.
            If freeDays(dFirstDayOfMonth) = True Then 
74.
                .Interior.ColorIndex = 15 
75.
            ElseIf weekend(dFirstDayOfMonth) = True Then 
76.
                .Interior.ColorIndex = 16 
77.
            End If 
78.
            .Cells(1, 1).Value = dFirstDayOfMonth 
79.
            ' Wochentag 
80.
            .Cells(1, 2).Formula = "=A" & z 
81.
            ' Startzeit 
82.
            ' Uhrzeit 
83.
            .Cells(1, 4).Formula = "=IF(K" & z & "=""X"","""",Now())" 
84.
            ' Gearbeitet 
85.
            .Cells(1, 5).Formula = "=IF(L" & z & "<>"""",""07:45"",IF(D" & z & "="""",,D" & z & "-C" & z & "))" 
86.
            ' Soll 
87.
            .Cells(1, 6).Formula = "=""07:45""" 
88.
            ' Feierabend ohne Mehrarbeit 
89.
            .Cells(1, 7).Formula = "=IF(C" & z & "="""",,C" & z & "+D" & z & ")" 
90.
            ' Arbeit % 
91.
            .Cells(1, 8).Formula = "=TEXT(E" & z & ",""hh:mm"")/(TEXT(F" & z & ",""hh:mm"")/100)/100" 
92.
            ' Mehrarbeit Stunde 
93.
            .Cells(1, 9).Formula = "=IF(TEXT(E" & z & ",""hh:mm"")<=TEXT(F" & z & ",""hh:mm""),0,(TEXT(E" & z & "-F" & z & ",""hh:mm""))*24)" 
94.
            ' Gleitzeit 
95.
            If z = 6 Then 
96.
                .Cells(1, 10).Formula = "=J" & (z - 2) & "+I" & z 
97.
            Else 
98.
                .Cells(1, 10).Formula = "=J" & (z - 1) & "+I" & z 
99.
            End If 
100.
            ' Fertig 
101.
            .Cells(1, 11).Formula = "=IF(TEXT(A" & z & ",""TT.MM.JJJ"")=TEXT($A$1,""TT.MM.JJJJ""),"""",""X"")" 
102.
        End With 
103.
        dFirstDayOfMonth = DateAdd("d", 1, dFirstDayOfMonth) 
104.
        z = z + 1 
105.
    Next i 
106.
     
107.
    ' Bereich erstellen fuer Uebertrag in naechsten Monat 
108.
    Set prevMonth = ws.Range("J" & z) 
109.
    With prevMonth 
110.
        .Formula = "=J" & z - 1 
111.
        .NumberFormat = "0.00" 
112.
        .HorizontalAlignment = xlCenter 
113.
        .Name = ws.Name & "_Vormonat" 
114.
    End With 
115.
End Sub
01.
Function schaltjahr(Jahr) 
02.
     
03.
' Schaltjahrberechnung 
04.
     
05.
    If (Jahr Mod 4) = 0 And (Jahr Mod 100) <> 0 Or _ 
06.
     ((Jahr Mod 400) = 0) Then 
07.
        schaltjahr = True 
08.
    Else 
09.
        schaltjahr = False 
10.
    End If 
11.
End Function
01.
Function weekend(dFirstDayOfMonth) As Boolean 
02.
 
03.
' Berechnet die Wochenenden 
04.
 
05.
weekend = False 
06.
Select Case Weekday(dFirstDayOfMonth) 
07.
    Case vbSaturday 
08.
        weekend = True 
09.
    Case vbSunday 
10.
        weekend = True 
11.
    End Select 
12.
     
13.
End Function
01.
Function freeDays(dFirstDayOfMonth) As Boolean 
02.
 
03.
' Berechnet die Feiertage des Jahres 
04.
' Je nach Bundesland muss bei dem entsprechenden Feiertag der Rückgabewert auf True bzw. False gesetzt werden. 
05.
 
06.
Dim curYear As Integer 
07.
Dim Neujahr, H3K, Karfreitag, Ostermontag, TagderArbeit, ChristiHimmelfahrt, Pfingstmontag, Fronleichnam, MariaeHimmelfahrt, TagderDtEinheit, Reformationstag, Allerheiligen, BussBetTag, Advent4, HeiligAbend, ErsterWeihnachtsfeiertag, ZweiterWeihnachtsfeiertag, Silvester As Date 
08.
 
09.
freeDays = False 
10.
curYear = Year(dFirstDayOfMonth) 
11.
curDate = Format(dFirstDayOfMonth, "DD.MM.") 
12.
 
13.
Advent4 = advent(curYear) ' Wird fuer die Berechnung des Buss- und Bettags benoetigt. 
14.
 
15.
Neujahr = DateSerial(curYear, 1, 1) 
16.
H3K = DateSerial(curYear, 1, 6) 
17.
Karfreitag = Ostern(curYear) - 2 
18.
Ostermontag = Ostern(curYear) + 1 
19.
TagderArbeit = DateSerial(curYear, 5, 1) 
20.
ChristiHimmelfahrt = Ostern(curYear) + 39 
21.
Pfingstmontag = Ostern(curYear) + 50 
22.
Fronleichnam = Ostern(curYear) + 60 
23.
MariaeHimmelfahrt = DateSerial(curYear, 8, 15) 
24.
TagderDtEinheit = DateSerial(curYear, 10, 3) 
25.
Reformationstag = DateSerial(curYear, 10, 31) 
26.
Allerheiligen = DateSerial(curYear, 11, 1) 
27.
BussBetTag = Advent4 - 32 
28.
HeiligAbend = DateSerial(curYear, 12, 24) 
29.
ErsterWeihnachtsfeiertag = DateSerial(curYear, 12, 25) 
30.
ZweiterWeihnachtsfeiertag = DateSerial(curYear, 12, 26) 
31.
Silvester = DateSerial(curYear, 12, 31) 
32.
 
33.
 
34.
Select Case dFirstDayOfMonth 
35.
    Case Neujahr 
36.
        freeDays = True 
37.
    Case H3K 
38.
        freeDays = True 
39.
    Case Karfreitag 
40.
        freeDays = True 
41.
    Case Ostermontag 
42.
        freeDays = True 
43.
    Case TagderArbeit 
44.
        freeDays = True 
45.
    Case ChristiHimmelfahrt 
46.
        freeDays = True 
47.
    Case Pfingstmontag 
48.
        freeDays = True 
49.
    Case Fronleichnam 
50.
        freeDays = True 
51.
    Case MariaeHimmelfahrt 
52.
        freeDays = False 
53.
    Case TagderDtEinheit 
54.
        freeDays = True 
55.
    Case Reformationstag 
56.
        freeDays = False 
57.
    Case Allerheiligen 
58.
        freeDays = True 
59.
    Case BussBetTag 
60.
        freeDays = False 
61.
    Case HeiligAbend 
62.
        freeDays = True 
63.
    Case ErsterWeihnachtsfeiertag 
64.
        freeDays = True 
65.
    Case ZweiterWeihnachtsfeiertag 
66.
        freeDays = True 
67.
    Case Silvester 
68.
        freeDays = True 
69.
End Select 
70.
     
71.
End Function
01.
Function Ostern(Yr As Integer) As Date 
02.
 
03.
' Berechnet den Ostersonntag als Ausgangspunkt für kirchliche Feiertage 
04.
 
05.
   Dim d As Integer 
06.
   d = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21 
07.
   Ostern = DateSerial(Yr, 3, 1) + d + (d > 48) + 6 - _ 
08.
    ((Yr + Yr \ 4 + d + (d > 48) + 1) Mod 7) 
09.
End Function
01.
Function advent(Yr As Integer) As Date 
02.
 
03.
' Berechnet den 4. Advent des Jahres 
04.
 
05.
d = DateSerial(Yr, 12, 24) 
06.
While Weekday(d) <> vbSunday 
07.
    d = d - 1 
08.
Wend 
09.
advent = d 
10.
 
11.
End Function
Ist alles etwas chaotisch, aber vielleicht findest du die eine oder andere Anregung.

Gruß
petenicker
Bitte warten ..
Mitglied: L0c4lh0sT
10.02.2009 um 07:15 Uhr
Das nennst du Friezeit Coder?
Da haste aber untertrieben!
Das ist der Wahnsinn! Hätte ich niemals hingekriegt!

Danke dir vielmals ich werds mal versuchen!

Klappt besser als erwartet. Musste ein bisschen Anpassen weil mein Layout sich geringfügig geändert hatte baer wie gesagt nichts schlimmes. Konntest du ja nicht wissen^^

Hab da nur eine Frage. Wie mach ich das jetzt das meine Buttons auf jedes der Tabellenblätter kommen.
Weil vom Setup Blatt werden die nicht mitkopiert. Wie kann ich das erreichen? Hab ja drei Buttons. "Feierabend machen", "Drucken" und "Aktualisieren".

Ich möchte diese jetzt gerne auf jedem Tabellenblatt einmal vorfinden.

Vll. haste ja noch ne idee. Großartig bis jetzt!

Dankeschön!

Mit freundlichen Grüßen
Alex
Bitte warten ..
Mitglied: petenicker
11.02.2009 um 07:55 Uhr
Zitat von L0c4lh0sT:
Das nennst du Friezeit Coder?
Da haste aber untertrieben!
Das ist der Wahnsinn! Hätte ich niemals hingekriegt!

Naja, würde sich ein Entwickler den Code anschauen, müsste er wahrscheinlich 2 Wochen unters Sauerstoffzelt.
Danke dir vielmals ich werds mal versuchen!

Gern geschehen.

Hab da nur eine Frage. Wie mach ich das jetzt das meine Buttons auf
jedes der Tabellenblätter kommen.
Weil vom Setup Blatt werden die nicht mitkopiert. Wie kann ich das
erreichen? Hab ja drei Buttons. "Feierabend machen",
"Drucken" und "Aktualisieren".

Gestern bin ich nicht mehr dazu gekommen, vielleicht schaffe ich es heute Abend.
Ich möchte diese jetzt gerne auf jedem Tabellenblatt einmal
vorfinden.

Vll. haste ja noch ne idee. Großartig bis jetzt!

Mir schwebt da was vor. Wie wäre es, wenn sich die drei Buttons anstatt auf jedem Blatt in einem UserForm abgebildet würden? Bei einem Doppelklick auf das Blatt öffnet sich das Formular und du hast deine Buttons zur Verfügung. Wäre das eine Option? Denn ehrlich gesagt finde ich die Vorstellung von insgesamt 36 Buttons nicht sonderlich prickelnd.

Das einzige Problem ist, dass ich noch nicht weiß, wie ich Klassenmodule während der Laufzeit generiere. Zur Not müsste das eben von Hand erfolgen. Aber ich werde mich mal schlau machen.

Gruß
petenicker
Bitte warten ..
Mitglied: L0c4lh0sT
11.02.2009 um 08:43 Uhr
Würde auch gehen. Die dürften aber nur auf dem jeweils aktiven Blatt ihre funktion ausüben!

Und noch ne kleine Idee die mir gestern kam: Wäre es möglich den Feiertagsnamen in die Tabelle zu schreiben wenn dieser ist? Und eventuell das SETUP Blatt mit als Informations Blatt nutzen. Also verbleibende Urlaubstage, eine Tabelle wann Urlaub eingetragen ist Geburtstage, Feiertage gleich mit vorne drauf anzeigen?

Achja und wie kann ich ändern das auf dem Setup Blatt die Daten nicht mehr in A1 und B1 stehen sondern z.B. in A2 und B2. Also das mit dem B2 hab ich schon. Nur mit dem A2 komme ich nicht klar. Die einteilung ist da auch sehr komisch von wegen Cells(1,1) hab das auf 2,1 geändert hat auch erst funktioniert aber nur solange wie dann in A1 nichts stand. Wenn ich da was reingeschrieben hatte kam immer ne meldung Falscher Datentyp oder sowas.

Sorry wenn das zuviel ist aber irgendwie blick ich da nicht ganz durch.....
Bitte warten ..
Mitglied: petenicker
11.02.2009 um 10:47 Uhr
Zitat von L0c4lh0sT:
Würde auch gehen. Die dürften aber nur auf dem jeweils
aktiven Blatt ihre funktion ausüben!

Da der Doppelklick auf dem aktiven Blatt erfolgt, ist das kein Problem.

Und noch ne kleine Idee die mir gestern kam: Wäre es
möglich den Feiertagsnamen in die Tabelle zu schreiben wenn
dieser ist? Und eventuell das SETUP Blatt mit als Informations Blatt
nutzen. Also verbleibende Urlaubstage, eine Tabelle wann Urlaub
eingetragen ist Geburtstage, Feiertage gleich mit vorne drauf
anzeigen?

Den Namen der Feiertage in die Tabellen zu schreiben, bekomme ich hin. Beim Resturlaub mache ich mir auch wenig Sorgen. Musst mir halt mitteilen, wieviel Urlaubstage du hast.

Wie stellst du dir das mit den Geburtstagen vor? Hast du eine zusätzliche Spalte, in der dann der Name des Geburtstagskindes stehen soll?
Achja und wie kann ich ändern das auf dem Setup Blatt die Daten
nicht mehr in A1 und B1 stehen sondern z.B. in A2 und B2. Also das mit
dem B2 hab ich schon. Nur mit dem A2 komme ich nicht klar. Die
einteilung ist da auch sehr komisch von wegen Cells(1,1) hab das auf
2,1 geändert hat auch erst funktioniert aber nur solange wie dann
in A1 nichts stand. Wenn ich da was reingeschrieben hatte kam immer ne
meldung Falscher Datentyp oder sowas.

Hast du die Änderung sowohl in Zeile 31 als auch in Zeile 46 der Prozedur TableData durchgeführt. Die Meldung mit dem falschen Datentyp kommt daher, dass er falls die Zelle gefüllt ist von einem Datum ausgeht. Schreibst du normalen Text rein, kommt es zu dem Fehler. Das meinte ich übrigens mit Freizeit-Coder. Normalerweise gehört ein ordentlicher Error-Handler dazu

Generell: Bist du abends per ICQ oder Skype erreichbar? Dann bitte per PN mitteilen. Ist vielleicht einfacher und schneller als über das Forum.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Gruppenrichtlinien-Vorlage Office 2013 auf einem DC 2003 (5)

Frage von bluepython zum Thema Windows Server ...

Microsoft Office
gelöst Makro wird beim öffnen Vorlage nicht ausgeführt (8)

Frage von Sunny89 zum Thema Microsoft Office ...

Windows Server
gelöst Vorlage für virtuelle Desktops auswählen auf Windows 2012R2 (2)

Frage von M.Marz zum Thema Windows Server ...

Microsoft Office
gelöst Word 2010 Vorlage (6)

Frage von sascha382 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...