Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ja, das hat Stefan in der Änderung seiner Antwort (zeitlich nach Deiner Frage) geschrieben.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 25.06.2015
Version(en): Office365
Jut, jut... Dann schau ich mir das morgen weiter an.
Registriert seit: 25.06.2015
Version(en): Office365
Das mit dem Datum klappt... Danke dafür. Code: .Cells(letzte_Zeile, 13) = CDate(TextBox13.Text)
Registriert seit: 25.06.2015
Version(en): Office365
13.07.2015, 19:03
(Dieser Beitrag wurde zuletzt bearbeitet: 13.07.2015, 19:09 von sandormiles.)
...vor dem Fehler ist nach dem Fehler oder so  ... "Fremdsprachen" sind ein Graus für mich  ... Code: Private Sub CommandButton3_Click() 'Variable deklarieren Dim letzte_Zeile As String Dim Ende As String Dim ctrElement As Control
With Worksheets("Daten_WS")
'Die letzte beschrieben Zeile in Spalte A ermitteln letzte_Zeile = .Range("A65536").End(xlUp).Offset(1, 0).Row 'Eintrag aus TextBox1 (W-Listen-Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 1) = TextBox1.Text 'Eintrag aus TextBox2 (Aktenzeichen) in erste frei Zeile übertragen .Cells(letzte_Zeile, 2) = TextBox2.Text 'Eintrag aus TextBox3 (Name) in erste frei Zeile übertragen .Cells(letzte_Zeile, 3) = TextBox3.Text 'Eintrag aus TextBox4 (Vorname) in erste freie Zelle übertragen .Cells(letzte_Zeile, 4) = TextBox4.Text 'Eintrag aus TextBox5 (Wohn A/B/C) in erste freie Zelle übertragen .Cells(letzte_Zeile, 5) = TextBox5.Text 'Eintrag aus TextBox6 (Bescheid vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 6) = TextBox6.Text 'Eintrag aus TextBox7 (Bescheid Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 7) = TextBox7.Text 'Eintrag aus TextBox8 (Widerspruchsrate) in erste freie Zelle übertragen .Cells(letzte_Zeile, 8) = TextBox8.Text 'Eintrag aus TextBox9 (Rückforderung) in erste freie Zelle übertragen .Cells(letzte_Zeile, 9) = TextBox9.Text 'Eintrag aus TextBox10 (Widerspruch vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 10) = TextBox10.Text 'Eintrag aus TextBox11(Eingang 1. Instanz) in erste freie Zelle übertragen .Cells(letzte_Zeile, 11) = CDate(TextBox11.Text) 'Eintrag aus TextBox12 (Eingang 2. Instanz) in erste freie Zelle übertragen .Cells(letzte_Zeile, 12) = CDate(TextBox12.Text) 'Eintrag aus TextBox13 (Erledigt am) in erste freie Zelle übertragen .Cells(letzte_Zeile, 13) = CDate(TextBox13.Text) 'Eintrag aus TextBox14 (Erledigungsart) in erste freie Zelle übertragen .Cells(letzte_Zeile, 14) = CDbl(TextBox14.Text) 'Eintrag aus TextBox15 (Standort) in erste freie Zelle übertragen .Cells(letzte_Zeile, 15) = TextBox15.Text 'Eintrag aus TextBox16 (Vermerk) in erste freie Zelle übertragen .Cells(letzte_Zeile, 16) = TextBox16.Text
End With
'Formular Löschen For Each ctrElement In Controls Select Case TypeName(ctrElement) Case "TextBox": ctrElement = "" End Select Next 'Listbox löschen ListBox1.Clear
'Sichtbarkeit Button Me.CommandButton3.Enabled = False CommandButton3.Visible = False CommandButton10.Visible = True
End Sub
Lasse ich TextBox 12, 13 oder 14 leer, dann kommt "Laufzeitfehler '13' Typen Unverträglichkeit." Ick versteh det nich  ... EDIT: Soll es so "einfach" sein? Habe noch folgendes eingefügt: Code: Private Sub CommandButton3_Click() On Error GoTo EERR
Exit Sub EERR: End Sub
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, einen Leerstring (oder Text) kann CDate nicht in ein Datum umwandeln. Versuche es mal so Code: If IsNumeric(TextBox11.Text) Then .Cells(letzte_Zeile, 11) = CDate(TextBox11.Text)
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• sandormiles
Registriert seit: 25.06.2015
Version(en): Office365
Hallo Stefan... So soll es dann wohl aussehen. Code: 'Eintrag aus TextBox11(Eingang 1. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox11.Text) Then .Cells(letzte_Zeile, 11) = CDate(TextBox11.Text) 'Eintrag aus TextBox12 (Eingang 2. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox12.Text) Then .Cells(letzte_Zeile, 12) = CDate(TextBox12.Text) 'Eintrag aus TextBox13 (Erledigt am) in erste freie Zelle übertragen If IsNumeric(TextBox13.Text) Then .Cells(letzte_Zeile, 13) = CDate(TextBox13.Text) 'Eintrag aus TextBox14 (Erledigungsart) in erste freie Zelle übertragen If IsNumeric(TextBox14.Text) Then .Cells(letzte_Zeile, 14) = CDbl(TextBox14.Text) 'Eintrag aus TextBox15 (Standort) in erste freie Zelle übertragen
und zur Sicherheit gleich gefragt. Mit TextBox14 (eine einfache Zahl zwischen 0 und 9) geht das so in Ordnung?
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
da wäre CInt bzw CLng besser geeignet denn Du brauchst hier ganze Zahlen und keine Fließkommazahlen.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 25.06.2015
Version(en): Office365
Danke Stefan!
Hab alles eingearbeitet und funktioniert.
Schönen Abend! Grüße
Sandor
Registriert seit: 25.06.2015
Version(en): Office365
Neue Frage neues Glück... Mit nachfolgendem Code soll die Userform geschlossen werden. Das klappt soweit, aber die Frage nach Speichern mit "nein" wird zweimal gestellt. Bei "ja" läuft das Script richtig durch. Code: Private Sub CommandButton13_Click() 'Änderungen an Daten speichern
Dim letzte_Zeile As Integer Dim ctrElement As Control
If TextBox1.Text = "" Then 'UserForm schließen Unload Me Exit Sub
Else
If MsgBox("Den angezeigten Datensatz speichern ?", 36, "Sicherheitsabfrage") = vbYes Then
' ' ändern '
If TextBox2.Text = "" Then MsgBox "Sie müssen ein Aktenzeichen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox2.SetFocus Exit Sub End If If TextBox3.Text = "" Then MsgBox "Sie müssen einen Namen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox3.SetFocus Exit Sub End If If TextBox4.Text = "" Then MsgBox "Sie müssen einen Vornamen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox4.SetFocus Exit Sub End If ' ' die Daten sind geprüft und können in die Tabelle eingetragen werden ' Application.ScreenUpdating = True
With Worksheets("Daten_WS") 'Die letzte beschrieben Zeile in Spalte A ermitteln letzte_Zeile = .Range("A65536").End(xlUp).Offset(1, 0).Row 'Eintrag aus TextBox1 (W-Listen-Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 1) = TextBox1.Text 'Eintrag aus TextBox2 (Aktenzeichen) in erste frei Zeile übertragen .Cells(letzte_Zeile, 2) = TextBox2.Text 'Eintrag aus TextBox3 (Name) in erste frei Zeile übertragen .Cells(letzte_Zeile, 3) = TextBox3.Text 'Eintrag aus TextBox4 (Vorname) in erste freie Zelle übertragen .Cells(letzte_Zeile, 4) = TextBox4.Text 'Eintrag aus TextBox5 (Wohn A/B/C) in erste freie Zelle übertragen .Cells(letzte_Zeile, 5) = TextBox5.Text 'Eintrag aus TextBox6 (Bescheid vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 6) = TextBox6.Text 'Eintrag aus TextBox7 (Bescheid Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 7) = TextBox7.Text 'Eintrag aus TextBox8 (Widerspruchsrate) in erste freie Zelle übertragen .Cells(letzte_Zeile, 8) = TextBox8.Text 'Eintrag aus TextBox9 (Rückforderung) in erste freie Zelle übertragen .Cells(letzte_Zeile, 9) = TextBox9.Text 'Eintrag aus TextBox10 (Widerspruch vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 10) = TextBox10.Text 'Eintrag aus TextBox11(Eingang 1. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox11.Text) Then .Cells(letzte_Zeile, 11) = CDate(TextBox11.Text) 'Eintrag aus TextBox12 (Eingang 2. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox12.Text) Then .Cells(letzte_Zeile, 12) = CDate(TextBox12.Text) 'Eintrag aus TextBox13 (Erledigt am) in erste freie Zelle übertragen If IsNumeric(TextBox13.Text) Then .Cells(letzte_Zeile, 13) = CDate(TextBox13.Text) 'Eintrag aus TextBox14 (Erledigungsart) in erste freie Zelle übertragen If IsNumeric(TextBox14.Text) Then .Cells(letzte_Zeile, 14) = CDbl(TextBox14.Text) 'Eintrag aus TextBox15 (Standort) in erste freie Zelle übertragen .Cells(letzte_Zeile, 15) = TextBox15.Text 'Eintrag aus TextBox16 (Vermerk) in erste freie Zelle übertragen .Cells(letzte_Zeile, 16) = TextBox16.Text End With 'Formular Löschen For Each ctrElement In Controls Select Case TypeName(ctrElement) Case "TextBox": ctrElement = "" End Select Next 'Listbox löschen ListBox1.Clear
Unload Me
Else
If MsgBox("Den angezeigten Datensatz speichern ?", 36, "Sicherheitsabfrage") = vbNo Then
Unload Me
End If End If End If
End Sub
Registriert seit: 25.06.2015
Version(en): Office365
Neue Frage neues Glück... Mit nachfolgendem Code soll die Userform geschlossen werden. Das klappt soweit, aber die Frage nach Speichern mit "nein" wird zweimal gestellt. Bei "ja" läuft das Script richtig durch. Code: Private Sub CommandButton13_Click() 'Änderungen an Daten speichern
Dim letzte_Zeile As Integer Dim ctrElement As Control
If TextBox1.Text = "" Then 'UserForm schließen Unload Me Exit Sub
Else
If MsgBox("Den angezeigten Datensatz speichern ?", 36, "Sicherheitsabfrage") = vbYes Then
' ' ändern '
If TextBox2.Text = "" Then MsgBox "Sie müssen ein Aktenzeichen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox2.SetFocus Exit Sub End If If TextBox3.Text = "" Then MsgBox "Sie müssen einen Namen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox3.SetFocus Exit Sub End If If TextBox4.Text = "" Then MsgBox "Sie müssen einen Vornamen eingeben - Danke.", _ 48, " Hinweis für " & Application.UserName TextBox4.SetFocus Exit Sub End If ' ' die Daten sind geprüft und können in die Tabelle eingetragen werden ' Application.ScreenUpdating = True
With Worksheets("Daten_WS") 'Die letzte beschrieben Zeile in Spalte A ermitteln letzte_Zeile = .Range("A65536").End(xlUp).Offset(1, 0).Row 'Eintrag aus TextBox1 (W-Listen-Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 1) = TextBox1.Text 'Eintrag aus TextBox2 (Aktenzeichen) in erste frei Zeile übertragen .Cells(letzte_Zeile, 2) = TextBox2.Text 'Eintrag aus TextBox3 (Name) in erste frei Zeile übertragen .Cells(letzte_Zeile, 3) = TextBox3.Text 'Eintrag aus TextBox4 (Vorname) in erste freie Zelle übertragen .Cells(letzte_Zeile, 4) = TextBox4.Text 'Eintrag aus TextBox5 (Wohn A/B/C) in erste freie Zelle übertragen .Cells(letzte_Zeile, 5) = TextBox5.Text 'Eintrag aus TextBox6 (Bescheid vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 6) = TextBox6.Text 'Eintrag aus TextBox7 (Bescheid Nr.) in erste freie Zelle übertragen .Cells(letzte_Zeile, 7) = TextBox7.Text 'Eintrag aus TextBox8 (Widerspruchsrate) in erste freie Zelle übertragen .Cells(letzte_Zeile, 8) = TextBox8.Text 'Eintrag aus TextBox9 (Rückforderung) in erste freie Zelle übertragen .Cells(letzte_Zeile, 9) = TextBox9.Text 'Eintrag aus TextBox10 (Widerspruch vom) in erste freie Zelle übertragen .Cells(letzte_Zeile, 10) = TextBox10.Text 'Eintrag aus TextBox11(Eingang 1. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox11.Text) Then .Cells(letzte_Zeile, 11) = CDate(TextBox11.Text) 'Eintrag aus TextBox12 (Eingang 2. Instanz) in erste freie Zelle übertragen If IsNumeric(TextBox12.Text) Then .Cells(letzte_Zeile, 12) = CDate(TextBox12.Text) 'Eintrag aus TextBox13 (Erledigt am) in erste freie Zelle übertragen If IsNumeric(TextBox13.Text) Then .Cells(letzte_Zeile, 13) = CDate(TextBox13.Text) 'Eintrag aus TextBox14 (Erledigungsart) in erste freie Zelle übertragen If IsNumeric(TextBox14.Text) Then .Cells(letzte_Zeile, 14) = CDbl(TextBox14.Text) 'Eintrag aus TextBox15 (Standort) in erste freie Zelle übertragen .Cells(letzte_Zeile, 15) = TextBox15.Text 'Eintrag aus TextBox16 (Vermerk) in erste freie Zelle übertragen .Cells(letzte_Zeile, 16) = TextBox16.Text End With 'Formular Löschen For Each ctrElement In Controls Select Case TypeName(ctrElement) Case "TextBox": ctrElement = "" End Select Next 'Listbox löschen ListBox1.Clear
Unload Me
Else
If MsgBox("Den angezeigten Datensatz speichern ?", 36, "Sicherheitsabfrage") = vbNo Then
Unload Me
End If End If End If
End Sub
|