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

Datumsbereich mit UserForm Auswählen

Datumsbereich mit UserForm Auswählen
01.09.2020 11:58:58
Holger
Guten Morgen,
ich habe ein für mich großes Problem.
Ich möchte über eine UserForm
einen Mitarbeiter auswählen dann einen Zeitraum auswählen.
In diesem Zeitraum möchte ich an Arbeitstagen Urlaub (U) bzw. Krank (K) oder Überstunden (ÜB) abfeiern
eintragen. Es darf aber kein Sonntag und auch Feiertag genommen werden. (Ist ja eigentlich logisch)
Da wir Samstags auch arbeiten ist Samstag ein ganznormaler Arbeitstag.
Die UserForm mit den entsprechenden Felder habe ich schon erstellt, nur der Code der die eingaben ins Blatt bringt überfordert meine Kenntnisse.
Eine Beispiel Datei zum besseren verständniss habe ich hochgeladen.
https://www.herber.de/bbs/user/139966.xlsm
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsbereich mit UserForm Auswählen
01.09.2020 12:29:53
Rudi
als Ansatz:
Sub aaaa()
For dasDatum = vonDatum To bisDatum
If dasDatum Mod 7  1 Then  'kein Sonntag
If Not istFeiertag(dasDatum) Then
'eintragen
End If
End If
Next d
End Sub
Function istFeiertag(datum) As Boolean
Dim d As Integer, iJahr As Integer, OSo As Date
iJahr = Year(datum)
d = (((255 - 11 * (iJahr Mod 19)) - 21) Mod 30) + 21
OSo = DateSerial(iJahr, 3, 1) + d + (d > 48) + 6 - ((iJahr + iJahr \ 4 + d + (d > 48) + 1)  _
Mod 7)
Select Case datum
Case OSo - 2, _
OSo + 1, _
OSo + 39, _
OSo + 50, _
OSo + 60, _
DateSerial(iJahr, 1, 1), _
DateSerial(iJahr, 5, 1), _
DateSerial(iJahr, 10, 3), _
DateSerial(iJahr, 11, 1), _
DateSerial(iJahr, 12, 25), _
DateSerial(iJahr, 12, 26)
istFeiertag = True
End Select
'Karfreitag=Ostersonntag-2
'Ostermontag=Ostersonntag+1
'Chr.Himmelfahrt=Ostersonntag+39
'Pfingstmontag=Ostersonntag+50
'Fronleichnam=Ostersonntag+60
End Function

Gruß
Rudi
Anzeige
AW: Datumsbereich mit UserForm Auswählen
01.09.2020 12:37:41
Holger
Hi Rudi Maintaire
vielen dank für deine Mühe, leider weiß ich nicht wie ich den Code in meine UserForm einfügen kann.
Könntest du es mir erklären.
Vielen dank noch mal
AW: Datumsbereich mit UserForm Auswählen
01.09.2020 16:08:45
Holger
Leider bin ich noch nicht weiter gekommen,
da reichen meine Kenntnisse nicht :-)
AW: Datumsbereich mit UserForm Auswählen
01.09.2020 16:42:45
Rudi
in der UF:
Private Sub CommandButton1_Click()
Dim lngColumn As Long, lngRow As Long
lngColumn = ComboBox1.ListIndex + 25
Dim dasDatum As Date, vonDatum As Date, bisDatum As Date
lngRow = ComboBox2.ListIndex + 5
vonDatum = ComboBox2
bisDatum = ComboBox3
For dasDatum = vonDatum To bisDatum
If dasDatum Mod 7  1 Then
If Not istFeiertag(dasDatum) Then
With Sheets("schichten").Cells(lngRow, lngColumn)
Select Case ComboBox4
Case "U", "ÜB": If LCase(.Value)  "fs" Then .Value = ComboBox4
Case "K": .Value = "K"
End Select
End With
End If
End If
lngRow = lngRow + 1
Next dasDatum
End Sub

In ein Modul:
Function istFeiertag(datum) As Boolean
Dim d As Integer, iJahr As Integer, OSo As Date
iJahr = Year(datum)
d = (((255 - 11 * (iJahr Mod 19)) - 21) Mod 30) + 21
OSo = DateSerial(iJahr, 3, 1) + d + (d > 48) + 6 - ((iJahr + iJahr \ 4 + d + (d > 48) + 1)  _
Mod 7)
Select Case datum
Case OSo - 2, _
OSo + 1, _
OSo + 39, _
OSo + 50, _
OSo + 60, _
DateSerial(iJahr, 1, 1), _
DateSerial(iJahr, 5, 1), _
DateSerial(iJahr, 10, 3), _
DateSerial(iJahr, 11, 1), _
DateSerial(iJahr, 12, 25), _
DateSerial(iJahr, 12, 26)
istFeiertag = True
End Select
'Karfreitag=Ostersonntag-2
'Ostermontag=Ostersonntag+1
'Chr.Himmelfahrt=Ostersonntag+39
'Pfingstmontag=Ostersonntag+50
'Fronleichnam=Ostersonntag+60
End Function

Anzeige
AW: Datumsbereich mit UserForm Auswählen
01.09.2020 19:11:44
Holger
Hi Rudi,
es läuft super.
vielen vielen Dank für dein Mühe.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige