Hallo,
ich bin absoluter Neuling in VBA und möchte mir in Excel ein UserForm erstellen in das in 29 Feldern werte eingetrage werden, die dann beim Klick auf einen Speichern Button automatisch an die letzte, freie Stelle einer definierten Zeile meiner Tabelle übertragen wird.
Mit folgendem Code funktioniert das auch:
Private Sub CommandButton1_Click()
Dim Einsatzmenge As Double
Einsatzmenge = Me.TextBox1.Value
Range("C12").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Einsatzmenge
Dim Ausbeute As Double
Ausbeute = Me.TextBox2.Value
Range("C13").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Ausbeute
' usw.......'
Dim Bemerkungen As String
Bemerkungen = Me.TextBox29.Value
Range("C52").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Bemerkungen
Me.Hide
End Sub
Gebe ich nun aber in eines der 29 Felder nichts ein, dann bekomme ich einen Fehler. Wie kann ich das Problem lösen. Es müsse nicht immer in allen 29 Feldern eingaben getätigt werden.
Ich habe es so versuch, bekomme aber immer den oben beschriebenen Laufzeitfehler:
Private Sub CommandButton1_Click()
If TextBox1 <> "" Then TextBox2.SetFocus
Dim Einsatzmenge As Double
Einsatzmenge = Me.TextBox1.Value
Range("C12").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Einsatzmenge
If TextBox2 <> "" Then TextBox3.SetFocus
Dim Ausbeute As Double
Ausbeute = Me.TextBox2.Value
Range("C13").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Ausbeute
'usw.......'
Dim Bemerkungen As String
Bemerkungen = Me.TextBox29.Value
Range("C52").Activate
Do Until ActiveCell.Value = ""
ActiveCell.Offset(0, 1).Activate
Loop
ActiveCell.Value = Bemerkungen
Me.Hide
End Sub
Danke und LG
|