AW: Function Aufruf
23.01.2021 10:36:56
Peer
Vielen Dank, Sigi.21 und onur.
Entschuldigt die späte Antwort, aber seit gestern versuche ich eure Lösung einzubauen, die auch für mich plausible ausschaut. Aber jetzt, warum auch immer, scheitert es bei mir an einer anderen Stelle im Code mit der Fehlermeldung Typenkonflikt 13 bei der Eingabe der Uhrzeit in txt_ArbZ_Ende, das vorher anstandslos funktioniert hat.
Ich suche schon 4 Stunden die Lösung...
Bei der Eingabe der Zeiten habe ich dank Hilfe hier im Forum die beiden TextBoxen mit
Private Sub txt_ArbZ_Beginn_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Eingabe der korrekten Uhrzeit bei der Eingabe über das Sub uhrzeit
uhrzeit txt_ArbZ_Beginn, KeyAscii
End Sub
und
Private Sub txt_ArbZ_Ende_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Eingabe der korrekten Uhrzeit bei der Eingabe über das Sub uhrzeit
uhrzeit txt_ArbZ_Ende, KeyAscii
End Sub
gesteuert, und bei Verlassen der TextBoxen oben genanntes Sub laufen gelassen
Private Sub txt_ArbZ_Beginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
AZ_berechnung
End Sub
Private Sub txt_ArbZ_Ende_Exit(ByVal Cancel As MSForms.ReturnBoolean)
AZ_berechnung
End Sub
Zusätzlich habe ich noch Change bei txtx_ArbZ_Ende abfragen lassen
Private Sub txt_ArbZ_Ende_Change()
If txt_ArbZ_Ende.Value "" Then
AZ_berechnung
Else
Exit Sub
End If
End Sub
Für die Berechnung der Arbeitszeit habe ich das Sub (bei gelber Markierung bleibt der Debugger _
mit Tyoenfehler 13 )
Sub AZ_berechnung()
Dim Beginn As Date, ende As Date, Summe As Date
On Error GoTo Fehler
If frm_Tag.txt_ArbZ_Beginn = "" Or frm_Tag.txt_ArbZ_Ende = "" Then Exit Sub
Beginn = CDate(frm_Tag.txt_ArbZ_Beginn)
ende = CDate(frm_Tag.txt_ArbZ_Ende)
Application.EnableEvents = False
If Beginn
Hier noch das "Uhrzeit"-Sub, das bis jetzt anstandslos funktioniert hat.
Sub uhrzeit(ByRef theBox As MSForms.TextBox, ByVal KeyAscii As MSForms.ReturnInteger)
'Eingabebeschränkung Textbox_Uhrzeit mit autom. Doppelpunkt
'Format hh:mm
'by Josef Ehrensberger
'a little enhanced by Luschi
Dim ok As Boolean
Select Case Len(theBox)
Case 0
Select Case KeyAscii
Case 48 To 50
Case 51 To 57
'erste Ziffer 3 bis 9 --> 03: - 09:
theBox.Value = theBox.Value & "0" & Chr(KeyAscii) & ":"
KeyAscii = 0
Case Else
KeyAscii = 0
End Select
Case 1
ok = True
If Left(theBox, 1) = 2 Then
Select Case KeyAscii
Case 48 To 51
Case Else
ok = False
KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case 48 To 57
Case Else
ok = False
KeyAscii = 0
End Select
End If
If ok Then
'2. Ziffer korrekt, dann ':' ranhängen
theBox.Value = theBox.Value & Chr(KeyAscii) & ":"
KeyAscii = 0
End If
Case 2
Select Case KeyAscii
Case 48 To 53, 58
Case Else
KeyAscii = 0
End Select
Case 3
If Right(theBox, 1) = ":" Then
Select Case KeyAscii
Case 48 To 53
Case Else
KeyAscii = 0
End Select
End If
Case 4
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
Case Else
KeyAscii = 0
End Select
End Sub
Die Berechnung der NachtZeit
'Nachtzeiten
txt_NachtZ = Format(NachtZeit(CDate(Cells(zeile, 20)), CDate(Cells(zeile, 21))), "hh:mm")
ist davon unbeeindruckt. Selbst wenn ich sie auskommentiere, bleibt das Problem.
Ich würde gern die Datei hochladen, aber sie ist zu groß dafür (> 700kb) und nur einen Teil davon zu nehmen, würde alles aus dem Zusammenhang reißen und vieles nicht mehr funktionieren.
Ich habe noch keine Lösung gefunden, wie man "Layout" und "Daten" bei Excel-Dateien trennen kann, ähnlich wie bei Access (Frontend und Backend). Deshalb kann ich nur hoffen, durch viel Text und Codeschnipsel zu erklären, was ich habe oder nicht.
Vielleicht findet sich trotz der vielen Informationen und Texte jemand, der den Fehler (außer mich ;-)) erkennen kann.
Eine Möglichkeit wäre noch, eine txt-Datei (oder rtf) mit dem gesamten Code und eine xslm-Datei ohne Code hochzuladen, um alles zu trennen, fällt mir gerade noch ein.
Mit besten Gruß
Peer