PDA

Vollständige Version anzeigen : Leere TextBox verursacht Fehler


olerostock
18.07.2014, 06:59
Hallo,

ich habe eine Userform mit 27 TextBoxen und 9 ComboBoxen. Wenn ich die Eingaben getätigt habe und die Daten speichern möchte, dann bekomme ich "Laufzeitfehler 13, Typen unverträglich". Grund scheint zu sein, dass nicht alle TextBoxen oder ComboBoxen Werte enthalten. Wie kann ich die Fehlermeldung weg bekommen ohne in allen Boxen Werte eintragen zu müssen? Hier mein Code für die UserForm: Private Sub CommandButton2_Click()

With Tabelle8
With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
.Value = TextBox1.Value
.Offset(I, 1).Value = TextBox2.Value
.Offset(I, 2).Value = TextBox2.Value
.Offset(, 3).Value = TextBox3.Value
.Offset(, 4).Value = TextBox4.Value
.Offset(, 5).Value = CDbl(TextBox5.Value)
.Offset(, 6).Value = TextBox6.Value
.Offset(, 7).Value = ComboBox1.Value
.Offset(, 8).Value = ComboBox2.Value
.Offset(, 9).Value = CDbl(TextBox7.Value)
.Offset(, 10).Value = CDbl(TextBox8.Value)
.Offset(, 11).Value = CDbl(TextBox9.Value)
.Offset(, 12).Value = ComboBox3.Value
.Offset(, 13).Value = TextBox10.Value
.Offset(, 14).Value = CDbl(TextBox11.Value)
.Offset(, 15).Value = ComboBox4.Value
.Offset(, 16).Value = ComboBox5.Value
.Offset(, 17).Value = ComboBox6.Value
.Offset(, 18).Value = ComboBox7.Value
.Offset(, 19).Value = ComboBox8.Value
.Offset(, 20).Value = TextBox12.Value
.Offset(, 21).Value = TextBox13.Value
.Offset(, 22).Value = TextBox14.Value
.Offset(, 23).Value = TextBox15.Value
.Offset(, 24).Value = TextBox16.Value
.Offset(, 25).Value = CDbl(TextBox17.Value)
.Offset(, 26).Value = TextBox18.Value
.Offset(, 27).Value = CDbl(TextBox19.Value)
.Offset(, 28).Value = CDbl(TextBox20.Value)
.Offset(, 29).Value = CDbl(TextBox21.Value)
.Offset(, 30).Value = TextBox22.Value
.Offset(, 31).Value = CDbl(TextBox23.Value)
.Offset(, 32).Value = CDbl(TextBox24.Value)
.Offset(, 33).Value = TextBox25.Value
.Offset(, 34).Value = ComboBox9.Value
.Offset(, 35).Value = CDbl(TextBox26.Value)
.Offset(, 36).Value = CDbl(TextBox27.Value)

End With
Sheets("Erfassungsliste").Activate
End With

'Dateiname basteln - Jahr Monat Tag
Dateiname = Format(Date, "yyyy-mm-dd")

'Dialog "Speichern unter" aufrufen und Dateinamen vergeben
Application.Dialogs(xlDialogSaveAs).Show

Unload Me

End Sub

Danke für Eure Hilfe!

Gruß Olerostock

Hajo_Zi
18.07.2014, 07:15
vor Cdbl() musst Du prüfen ob numerisch.

Gruß Hajo

olerostock
18.07.2014, 07:27
Hallo Hajo,

wie kann ich die Überprüfung vor Cdbl() machen? Soweit sind meine Kenntnisse noch nicht.

Gruß Olerostock

amicro2000
18.07.2014, 07:30
Hallo Olerostock,
so:

If isnumeric(TextBox5.Value) then .Offset(, 5).Value = CDbl(TextBox5.Value)

Hajo_Zi
18.07.2014, 07:30
If isnumeric(Textbox26) Then
Offset(, 35).Value = CDbl(TextBox26.Value)
Else
Offset(, 35).Value = TextBox26.Value
Endif

Gruß Hajo

olerostock
18.07.2014, 07:45
Hallo Hajo und Amicro,

Danke für die Hilfe es klappt wunderbar. Jetzt noch eine kleine Frage. Wie muss ich in dem Code oben die Änderung vornehmen, damit er mir die Daten aus der TextBox1 nicht in die erste Spalte schreibt, sondern in die dritte und die anderen eine weiter?

Gruß Olerostock

Hajo_Zi
18.07.2014, 08:02
.Offset(1, 3). für B

Gruß hajo

Hajo_Zi
18.07.2014, 08:05
das war ein Fehler
mit Offset(,1) bist Du doch schon in Spalte B

Gruß Hajo

olerostock
18.07.2014, 08:07
Danke Hajo!

Klappt wunderbar.

olerostock
18.07.2014, 08:10
Hallo Hajo,

With Tabelle7
With .Cells(.Rows.Count, 1).End(xlUp).Offset(1;3)
.Value = TextBox1.Value

so müsste doch der Wert aus der ersten Textbox in die Spaltze C geschrieben werden, oder irre ich mich da?

Olerostock

Hajo_Zi
18.07.2014, 08:13
das sollte richtig sein

Gruß Hajo

olerostock
18.07.2014, 08:20
Hallo Hajo,

war nicht richtig. So schreibt er es in die Spalte D. mit Offset(1,2) habe ich Erfolg. Danke nochmals und ich werde das Thema dann schließen.

Gruß Olerostock