Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
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

Userform Zeiterfassung Werte übernehmen

Userform Zeiterfassung Werte übernehmen
06.12.2021 19:15:59
Jannik
Hallo Zusammen
Ich bin an einer Zeiterfassung dran und habe nicht wirklich viel Erfahrung im der VBA Programmierung.
Gerne würde ich die Stunden bei den jeweiligen Daten einfügen. Zudem würde ich gerne beim Datum einen Kalender haben für die Auswahl des Datum. Wie geht der Code, dass es die Stunden vom Userform direkt auf das Tabellenblatt "2021" beim richtigen Datum einsetzt? Zudem müsste ich noch haben, dass wenn jemand Krank ist, beim Datum Krank steht.
https://www.herber.de/bbs/user/149621.xlsm
Besten Dank für euer Feedback.
EInen schönen Abend wünsche ich euch.
Jannik

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Zeiterfassung Werte übernehmen
06.12.2021 20:09:53
Yal
Hallo Jannik,
90% aller Erfassung werden den Art "Anwesend" und auch nicht wenige Einträge werden auf dem heutigen Datum belegt. Ich würde diesen Feld mit diesen Wert vorbelegen. Auch die Von-Bis sind immer ähnlich.
Um den Date Time Picker Control verfügbar zu machen, musst Du zuerst in "Extras", "Verweise..." auf "Microsoft Windows Common Controls x.x" einen Haken setzen,
dann beim geöffnete Werkzeugsammlung ("Ansicht", "Werkzeugsammlung") auf "Extras", "Zusätzliche Steuerelemente..." und einen Haken auf "Microsoft Date and Time Picker Control 6.0" setzen.
Dann hast Du im Werkzeugsammlung ein zusätzliche Steuerelement, den Du einsetzen kannst.
Ich würde nicht versuchen, neue Einträge an einem reservierten Platz reinzubringen, sondern alle Einträge nacheinander. Bei doppleten Einträge müssen die neuesten mit Power Query behalten werden. Die Summen werden per Pivottabelle gemacht, nicht mit Formeln.
Aber das wäre a bissele Fortgeschrittene (Ausser Pivottabell, das ist auch Anfänger-tauglich). Da Du alle Datum ohne Lücke in einer Reihe stehen: ein Datum ist ein Zahl. Das gewählte Datum minus 1. Januar plus 1 ergibt den Versatz zwischen Zeile 9 (erste Januar) und gesuchtem Datum.
Ansonsten macht man solche Anwendung eher mit Access als Excel. Aber das wäre eine anderen Frage.
VG
Yal
Anzeige
AW: Userform Zeiterfassung Werte übernehmen
07.12.2021 11:46:35
Jannik
Hallo Yal
Dies mit dem Kalender habe ich im Excel 365 nicht gefunden. Kann dies sein, dass dies bei Excel 365 anders ist? Für die restlichen Tipps bedanke ich mich sehr. Sie haben mir sehr geholfen. Bin nun fast fertig und alles funktioniert so, wie ich mir dies vorgestellt habe.
Vielen Dank
Jannik
"müsste ich noch haben", soso
06.12.2021 20:35:52
ralf_b
Hallo Jannik,
Es ist zwar heute Nikolaustag aber große Geschenke gibt's deshalb trotzdem nicht. Ich befürchte du übernimmst dich. "Kaum Excel/VBA-Kenntnisse" sind keine gute Voraussetzung für so ein Projekt. Da hängt mehr dran als du denkst.
Es ist ok hier zu fragen. Aber mit deiner sehr mageren Vorleistung ist abzusehen das du gegebene Hilfen nicht umsetzen kannst. Das dürfte dir selbst schon klar sein. Womit sich mir der Verdacht aufdrängt das du auf fertige Lösungen spekulierst. Ich hoffe das die anderen Helfer das ähnlich sehen.
Zum Üben und als Einstieg für dich ein bisschen Code für deine Userform. Die Rowsource-Zuordnung deiner Comboboxen solltest du aber rausnehmen. Das beißt sich mit der .List Zuweisung im Initialize.

Private Sub CommandButton1_Click()
Dim rngFund As Range
With Worksheets("2021")
Set rngFund = .UsedRange.Columns(1).Find(What:=CDate(ComboBox2.Value), lookat:=xlWhole)
If Not rngFund Is Nothing Then
.Cells(rngFund.Row, 3) = TextBox4
.Cells(rngFund.Row, 4) = TextBox5
.Cells(rngFund.Row, 5) = TextBox6
.Cells(rngFund.Row, 6) = TextBox7
.Cells(rngFund.Row, 7) = TextBox8
.Cells(rngFund.Row, 8) = TextBox9
Else
MsgBox "Datum nicht gefunden"
End If
End With
End Sub
Private Sub UserForm_Initialize()
ComboBox2.List = Worksheets("2021").Range("A9:A373").Value
ComboBox2 = Date
ComboBox1.List = Array("Anwesend", "Krank", "Urlaub")
ComboBox1.ListIndex = 0
End Sub

Anzeige
AW: "müsste ich noch haben", soso
07.12.2021 11:45:02
Jannik
Hallo Ralf
Besten Dank für deinen Tipp. Dies war genau dies, was mir gefehlt hat. Nein ich wollte kein fertiges Formular haben, aber ich war schon ein Tag dran, um die Lösung zu finden. Dank dir habe ich nun die fehlende Information erhalten. Somit kann ich eigentlich alles fertig machen. Ich finde VBA sehr spannend und möchte es auch lernen. Dafür brauche ich natürlich Informationen. Kann ich die Formel von dir auch noch mit der Bedingung ergänzen, dass er dies nur machen, wenn ComboBox1="Anwesend" ist und beim Wert "Krank" einen anderen Wert?
Jannik
AW: "müsste ich noch haben", soso
07.12.2021 12:14:26
Rudi
Hallo,
so?

Private Sub CommandButton1_Click()
Dim rngFund As Range
With Worksheets("2021")
Set rngFund = .UsedRange.Columns(1).Find(What:=CDate(ComboBox2.Value), lookat:=xlWhole)
If Not rngFund Is Nothing Then
If ComboBox1 = "Anwesend" Then
.Cells(rngFund.Row, 3) = TextBox4
.Cells(rngFund.Row, 4) = TextBox5
.Cells(rngFund.Row, 5) = TextBox6
.Cells(rngFund.Row, 6) = TextBox7
.Cells(rngFund.Row, 7) = TextBox8
.Cells(rngFund.Row, 8) = TextBox9
Else
.Cells(rngFund, 3) = ComboBox1
End If
Else
MsgBox "Datum nicht gefunden"
End If
End With
End Sub
Gruß
Rudi
Anzeige
AW: "müsste ich noch haben", soso
08.12.2021 09:57:16
Jannik
Guten Tag Rudi
Besten Dank für deinen Tipp. Es hat bestens funktioniert.
Einen schönen Tag wünsche ich dir.
Jannik

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige