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, 18:03
(Dieser Beitrag wurde zuletzt bearbeitet: 13.07.2015, 18: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
|