Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arbeitszeittabelle mit Userform

Arbeitszeittabelle mit Userform
06.10.2020 16:17:16
hans
Hallo,
möchte über 2 Userformen durch eine meine Startzeit und die andere meine Endzeit eintragen lassen.
Die erste Schaltfläche soll das heutige Datum in Spalte B und die Startzeit in Spalte C eintragen. Die zweite Schaltfläche in Spalte D die Endzeit.
Jedes Mal wenn ein Arbeitstag eingetragen ist soll in die nächste spalte gesprungen werden.
Meine Anfänge sehen so aus:
Sub Schaltfl?che1_Klicken()
Dim letzte As Long
With Worksheets("Tabelle1") 'Blattname anpassen
letzte = Application.Max(5, .Cells(Rows.Count, 2).End(xlUp).Rows + 1)
.Cells(letzte, 2) = Date
.Cells(letzte, 3) = Format(Time, "hh:mm:ss")
.Cells(letzte, 4).Select
End With
End Sub

Sub Schaltfl?che2_Klicken()
Dim letzte As Long
With Worksheets("Tabelle1") 'Blattname anpassen
letzte = Application.Max(5, .Cells(Rows.Count, 2).End(xlUp).Rows + 1)
.Cells(letzte, 4) = Format(Time, "hh:mm:ss")
.Cells(letzte, 5).Select
End With
End Sub

Beim Probieren des Codes springt er in Zeile 44111.
Wie muß das Script aussehen das es funktionert?
Danke Gruß Hans

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitszeittabelle mit Userform
06.10.2020 17:16:08
onur
Der Code springt immer in die erste freie Zeile.
Wenn du nicht bis Zeile 44111 Daten hast, hast du irgendwo in Spalte B (vermutlich in Zeile 44110) irgendwas in die Zelle geschrieben, vielleicht ein Leerzeichen oder so,
AW: Arbeitszeittabelle mit Userform
07.10.2020 08:58:12
Yal
es gibt eine Unterschied zwischen Row und Rows:
Row ist die Zeilnummer der ersten Zeile vom ausgewählten Bereich
Rows ist eine Auflistung (Sammel-Objekt), woraus über Count den Anzahl von Zeilen im ausgewählten Bereich zu lesen ist.
Dementsprechend sollte
.Cells(Rows.Count, 2).End(xlUp).Rows + 1
ein Fehler liefern.
Richtig:
.Cells(Rows.Count, 2).End(xlUp).Row + 1

Alternativ zu "max":
letzte = .Cells(44110, 1).End(xlUp).Row + 1
If Letzte 
Vielleicht weniger schön, erlaubt aber ein leichteres Debugging.
Viel Erfolg
Yal
Anzeige
AW: Arbeitszeittabelle mit Userform
07.10.2020 11:49:05
hans
Hallo,
hab die Tabelle mal hochgeladen. Denke die ist selbsterklärend.
Hier aber trotzdem nochmal kurz die "Soll-Funktion": Nach Eintrag von Datum und Uhrzeit früh soll für den nächsten Tag immer eine Zeile weitergesprungen werden.
Nach Eintrag der Uhrzeit abends soll in der gleichen Zeile wie früh die Uhrzeit eine Spalte weiter rechts eingetragen werden.
Habe mittlerweilen alle möglichen Varianten durch die mir einfielen. .Row uns .rows die startzeile und statt xlUp dann xltoRight. Mag alles nicht funktionieren.
hoffe ihr könnt mir helfen.
Gruß hans
https://www.herber.de/bbs/user/140715.xlsm
Anzeige
AW: Arbeitszeittabelle mit Userform
07.10.2020 12:05:37
Yal

Sub Beginn_Klicken()
Dim W As Worksheet
Dim Z
Set W = Worksheets("Tabelle1") 'Blattname anpassen
Set Z = W.Range("A10000").End(xlUp)
Z.Offset(1, 0) = "Tag " & (1 + Trim(Right(Z, 2)))
Z.Offset(1, 1) = Format(Now, "dd.mm.yyyy")
Z.Offset(1, 2) = Format(Now, "hh:mm:ss")
End Sub
Sub Ende_Klicken()
Dim W As Worksheet
Dim Z
Set W = Worksheets("Tabelle1") 'Blattname anpassen
Set Z = W.Range("A10000").End(xlUp)
Z.Offset(0, 3) = Format(Time, "hh:mm:ss")
End Sub
die bisherigen "..." müsstest Du in Spalte A vorher entfernen.
VG Yal
AW: Arbeitszeittabelle mit Userform
07.10.2020 12:23:35
Werner
Hallo,
hier deine Tabelle zurück.
Ich habe noch eine Fehlerbehandlung eingebaut, damit du dir nicht am gleichen Tag zweimal einen Arbeitsbeginn erfassen kannst.
Ebenso wird eine Fehlermeldung ausgegeben, wenn du einen Arbeitsbeginn erfassen willst, aber für den Vortag kein Arbeitsende erfasst wurde.
https://www.herber.de/bbs/user/140717.xlsm
Gruß Werner
Anzeige
AW: Arbeitszeittabelle mit Userform
07.10.2020 13:08:38
hans
Vielen Dank Werner!!!
Perfekt!!!
Gruß
Hans
Gerne u. Danke für die Rückmeldung. o.w.T.
07.10.2020 14:05:28
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
09.10.2020 10:04:39
hans
Hallo Werner,
die Tabelle funktioniert ja wie gesagt genau wie sie soll, jetzt hab ich mir überlegt für jeden Monat ein Tabellenblatt anzulegen. Dann trag ich ins Script den Monat ein und für den nächsten Monat geht logischerweise nicht mehr.
Kannst du mir da nochmal helfen bitte.
https://www.herber.de/bbs/user/140756.xlsm
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
09.10.2020 10:25:58
Werner
Hallo Hans,
dann brauchst du nur das With... End With zu entfernen und vor sämtlichen Range-Objekten den Punkt zu entfernen.
Dann bezieht sich der Code immer auf das Tabellenblatt, das aktuell aktiv ist.
Sub Schaltfläche1_Klicken()
Dim letzte As Long
letzte = Application.Max(5, Cells(Rows.Count, 2).End(xlUp).Row + 1)
If Cells(letzte - 1, 4) = "" Then
MsgBox "Fehler: Am " & Cells(letzte - 1, 2) & " ist kein Arbeitsende erfasst."
Exit Sub
End If
If Cells(5, 1) = "" Then
Cells(letzte, 1) = "Tag 1"
Else
Cells(letzte, 1) = "Tag " & CLng(Right(Cells(letzte - 1, 1), 2)) + 1
End If
Cells(letzte, 2) = Date
Cells(letzte, 3) = Format(Time, "hh:mm:ss")
Cells(letzte, 4).Select
End Sub

Sub Schaltfläche2_Klicken()
Dim letzte As Long
letzte = Application.Max(5, Cells(Rows.Count, 4).End(xlUp).Row + 1)
If Cells(letzte, 2) = "" Then
MsgBox "Fehler: Für heute " & Date & " ist kein Arbeitsbeginn erfasst"
Exit Sub
End If
Cells(letzte, 4) = Format(Time, "hh:mm:ss")
End Sub
Gruß Werner
Anzeige
Funzt Bombig... Danke!!! o.w.T.
09.10.2020 10:55:04
hans
Gerne u. Danke für die Rückmeldung. o.w.T.
09.10.2020 11:38:25
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige