Datum als TT an bestimmter Stelle (VBA)
#11
Wenn du es einfach für Andere machen möchtest ,dann erstelle eine Userform oder ein Formular und vermeide die direkte Eingabe in überladenen, unübersichtlichen Tabellen.
Antworten Top
#12
Hallo

wenn ihr mit VBA spielen wollt, im Modul 2 ist eine Makro Recorder Aufzeichnung und ein Demo Makro mit For Next Schleife zum Datum einsetzen.
Ich habe mir erlaubt die Leerzeilen zu löschen und Januar ganz nach oben gesetzt. Obwohl das Makor simpel ist braucht man seine Zeit es zu verstehen.
Zu beachten ist, das nicht jeder Monat mit Montag beginnt!  Im Februar steht deshalb der 31.1.2022 zum Autoausfüllen, sonst klappt das Makro nicht!

mfg Gast 123


Angehängte Dateien
.xlsm   Test1 Datum als TT an bestimmter Stelle (VBA).xlsm (Größe: 51,93 KB / Downloads: 8)
Antworten Top
#13
Guten Abend an die Runde





 
Hallo Gast 123

dein Beispiel Trift den Nagel genau auf den Kopf, 18 Angel
so einen Hinweis hatte ich gesucht damit kann ich arbeiten, lernen und was anfangen. Idea 05
Ich sage danke und werde euch natürlich mein Ergebnis mitteilen. 19
Antworten Top
#14
Brick 
Ein Hallo
so jetzt haben wir zu zweit daran gesessen und sind schon weiter gekommen.
jetzt will er aber irgendwie nicht durchzählen.
vieleicht habt Ihr ja eine Idee wo der Fehler sitzt?? Huh

Sub wrapper_make_time()
    Call make_time(Sheets("Start").Range("G4").Text)
End Sub

Sub make_time(year As String)
    Dim month, bebefore, before, curr_date, week_day As String
    Dim curr As Range
    month = ActiveSheet.Range("I8").Text
    curr_date = Format("01." & month & "." & year, "dd.mm.yyyy")
    For i = 18 To 59
        bebefore = ActiveSheet.Cells(i - 2, 2).Text
        before = ActiveSheet.Cells(i - 1, 2).Text
        Set curr = ActiveSheet.Cells(i, 2)
        week_day = ActiveSheet.Cells(i, 3).Text
        If before = "" Or before = "1" Then
            If Len(before) = 2 And Len(week_day) > 1 Then
                curr_date = Int(before) + 1 & Right(curr_date, 8)
                If test_end_date(curr_date) Then
                    Exit Sub
                End If
                curr = Format(curr_date, "dd")
            ElseIf Len(bebefore) = 2 And Len(week_day) > 1 Then
                curr_date = Int(bebefore) + 1 & Right(curr_date, 8)
                If test_end_date(curr_date) Then
                    Exit Sub
                End If
                curr = Format(curr_date, "dd")
            ElseIf week_day = Format(curr_date, "ddd") Then
                curr = Format(curr_date, "dd")
            End If
        End If
    Next i
   
End Sub

Function test_end_date(ByVal curr_date As String) As Integer
    Dim my_test As Date
    Dim Res As Integer
    Res = 0
   
    On Error GoTo err_month:
    my_test = Format(curr_date, "dd.mm.yyyy")
    If Day(my - test) > Day(Application.WorksheetFunction.EoMonth(my_test, 0)) Then
        Res = 1
    End If
    test_end_date = Res
    Exit Function
err_month:
    test_end_date = 1
End Function


Im Anhang wieder meine Test datei zum Probieren. 17


Angehängte Dateien
.xlsm   Test1.xlsm (Größe: 90,77 KB / Downloads: 3)
Antworten Top
#15
Hallo,

diese Klimmzüge könntest du dir alle ersparen, wenn du die Zeiten auf einem Blatt mit einer fortlaufenden Liste einträgst. Die kannst du dann nach jedem gewünschten Monat filtern, geht ganz einfach!

Übrigens: Arbeitszeiten über zehn Stunden sind nicht zulässig. Die durchschnittliche Arbeitszeit pro Tag darf, über einen beliebigen Zeitraum von zwei Wochen, acht Stunden nicht überschreiten.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#16
Hello

mit der Arbeitszeit gebe ich dir teilweise recht.
da gibt es noch den Passus Schichtarbeit. Ja auch dort wieder einige Regeln
Mal schaun wie ich das dann noch Programmiere. Aber da bin ich noch nicht.

Ja ich hätte das auch einfacher machen können, aber ich bin noch nie den einfachen Weg gegangen.
Mit der einfachen Version hatte ich aber angefangen. 19

Haben sie schon den fehler in der Quelle gefunden ??
ich hab da irgenwie den dreher drin 15
Antworten Top
#17
Moin,

dazu braucht es kein VBA.

Wie Klaus-Dieter schreibt, alles in eine fortlaufende Liste.

Und Ahnenforschung macht man mit Reunion.

Gruß
Roger


Angehängte Dateien Thumbnail(s)
               
Antworten Top
#18
Warum nicht auch mal anders an ein Problem gehen ?
gut es ist ja nicht gleich ein Problem !!!
Eher eine Spielerei .
Und mit Excel ist doch noch so viel mehr möglich als nur Zahlen in eine Tabelle tippen.
Ich find Excel wegen seiner Komplexheit halt interessant.

darum gehe ich DIESEN Weg um in Tabellen Zahlen zu bekommen.

Und ich hatte gehoft das mir der eine oder andere in VBA helfen kann oder mir ein rat
gibt für meinen Quellcode.

Nur so kann ich lernen. gerade in VBA
Antworten Top
#19
Hallo Hundefreund,

es ist durchaus anerkennenswert, wenn du dich mit VBA beschäftigen möchtest. Das ändert aber nichts daran, dass man bewährte Arbeitsweisen in Excel anwenden sollte. Makros werden deutlich komplexer, wenn der Datenbestand nicht in Form einer Liste gehalten wird. Das gilt im Übrigen nicht nur für Makros, auch Zellformeln können auf der Basis einer ordentlichen Liste deutlich effektiver arbeiten. Viele Funktionen sind darauf geradezu angewiesen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste