Laufzeitenfehler 13-weiß nicht mehr weiter!

Hallo liebe Experten,

habe ein rel. großes Problem und komme nicht weiter. Habe eine Excel Tabelle mit Formularen aufgebaut von den Zahlen in die entsprechenden Zellen eingefügt werden müssen. Mein Code:

Private Sub CommandButton3_Click()
Sheets(„Eingabemasken“).Activate
Cells(332, 3).NumberFormat = „#,###0.000“
Cells(333, 3).NumberFormat = „#,###0.000“
Cells(334, 3).NumberFormat = „#,###0.000“
Cells(335, 3).NumberFormat = „#,###0.000“
Cells(336, 3).NumberFormat = „#,###0.000“
Cells(337, 3).NumberFormat = „#,###0.000“
Cells(338, 3).NumberFormat = „#,###0.000“
Cells(339, 3).NumberFormat = „#,###0.000“
Cells(340, 3).NumberFormat = „#,###0.000“
Cells(341, 3).NumberFormat = „#,###0.000“
Cells(342, 3).NumberFormat = „#,###0.000“
Cells(343, 3).NumberFormat = „#,###0.000“
Cells(344, 3).NumberFormat = „#,###0.000“
Cells(345, 3).NumberFormat = „#,###0.000“
Cells(346, 3).NumberFormat = „#,###0.000“
Cells(347, 3).NumberFormat = „#,###0.000“
Cells(348, 3).NumberFormat = „#,###0.000“
Cells(349, 3).NumberFormat = „#,###0.000“
Cells(350, 3).NumberFormat = „#,###0.000“
Cells(352, 3).NumberFormat = „#,###0.000“
Cells(353, 3).NumberFormat = „#,###0.000“
Cells(355, 3).NumberFormat = „#,###0.000“
Cells(356, 3).NumberFormat = „#,###0.000“
Cells(357, 3).NumberFormat = „#,###0.000“
Cells(358, 3).NumberFormat = „#,###0.000“
Cells(360, 3).NumberFormat = „#,###0.000“
Cells(361, 3).NumberFormat = „#,###0.000“
Cells(364, 3).NumberFormat = „#,###0.000“
Cells(365, 3).NumberFormat = „#,###0.000“
Cells(367, 3).NumberFormat = „#,###0.000“
Cells(370, 3).NumberFormat = „#,###0.000“
Cells(371, 3).NumberFormat = „#,###0.000“
Cells(332, 3).Value = CDbl(TextBox1.Value)
Cells(333, 3).Value = CDbl(TextBox2.Value)
Cells(334, 3).Value = CDbl(TextBox3.Value)
Cells(335, 3).Value = CDbl(TextBox4.Value)
Cells(336, 3).Value = CDbl(TextBox5.Value)
Cells(337, 3).Value = CDbl(TextBox6.Value)
Cells(338, 3).Value = CDbl(TextBox7.Value)
Cells(339, 3).Value = CDbl(TextBox8.Value)
Cells(340, 3).Value = CDbl(TextBox9.Value)
Cells(341, 3).Value = CDbl(TextBox10.Value)
Cells(342, 3).Value = CDbl(TextBox11.Value)
Cells(343, 3).Value = CDbl(TextBox12.Value)
Cells(344, 3).Value = CDbl(TextBox13.Value)
Cells(345, 3).Value = CDbl(TextBox14.Value)
Cells(346, 3).Value = CDbl(TextBox15.Value)
Cells(347, 3).Value = CDbl(TextBox16.Value)
Cells(348, 3).Value = CDbl(TextBox17.Value)
Cells(349, 3).Value = CDbl(TextBox18.Value)
Cells(350, 3).Value = CDbl(TextBox19.Value)
Cells(352, 3).Value = CDbl(TextBox20.Value)
Cells(353, 3).Value = CDbl(TextBox21.Value)
Cells(355, 3).Value = CDbl(TextBox22.Value)
Cells(356, 3).Value = CDbl(TextBox23.Value)
Cells(357, 3).Value = CDbl(TextBox24.Value)
Cells(358, 3).Value = CDbl(TextBox25.Value)
Cells(360, 3).Value = CDbl(TextBox26.Value)
Cells(361, 3).Value = CDbl(TextBox27.Value)
Cells(364, 3).Value = CDbl(TextBox29.Value)
Cells(365, 3).Value = CDbl(TextBox30.Value)
Cells(367, 3).Value = CDbl(TextBox31.Value)
Cells(370, 3).Value = CDbl(TextBox33.Value)
Cells(371, 3).Value = CDbl(TextBox34.Value)

'Formular zurücksetzen
Dim tb As Object

With UserForm8
For Each tb In .Controls
If TypeName(tb) = „TextBox“ Then tb.Text = „“
Next tb

End With
End Sub

Beim Ausführen bekomme ich einen Laufzeitenfehler 13. Habe mit Leuten gesprochen, die haben mir gesagt, dass es an CDbl liegt und vorgeschlagen"On Error Resume Next " einzufügen. Doch das ist doch irgendwie nicht die Lösung. Ich habe CDbl mit Absicht hingetan, damit eine Zahl auch als eine Zahl und nicht als Text in Excel eingefügt wird und jetzt soll ich es umgehen? Was sagt ihr? ES ist sehr wichtig, gibt es eine Lösung die effizient und schnell ist?
Ich danke euch riesig
Gruß
Igor

Hallo,

Beim Ausführen bekomme ich einen Laufzeitenfehler 13. Habe mit
Leuten gesprochen, die haben mir gesagt, dass es an CDbl liegt

die Fehlernummer sagt mir nichts, ich gehe mal davon aus, daß das so richtig ist.

und vorgeschlagen"On Error Resume Next " einzufügen.

*brrrr* schrecklich, ich gebe Dir zu 100% Recht, das tut man nicht! Wenn sich andere Fehler einschleichen bekommst Du falsche Ergebnisse.

CDbl hast Du ja vor Textfeldern stehen. Bei der Eingabe in Textfelder kannst Du prüfen, ob die Eingabe numerisch ist. Ein mal direkt bei der Eingabe hast Du das Ereignis .Change, Du kannst auch die gesamte Eingabe abwarten und das Ereignis .Validate oder .LostFocus verwenden um zu prüfen, ob der Inhalt numerisch ist.

Private Sub Text1\_Change()
 If Not IsNumeric(Text1.Text) Then
 MsgBox "Das Feld darf nur Zahlen enthalten!", vbCritical
 End If
End Sub

… oder so ähnlich könnte das aussehen.

Gruß, Rainer

d.h. dass CDbl falsch war?
Da ich, wie du an meinem einfachen Code sehen kannst, kein VBA Profi bin könntest du mir noch näher beschreiben, wo ich deinen Zusatz einsetzen muss?
Es ist aber auch so, dass ich mehrere Formulare habe und nicht alle Textfelder mussen numerisch sein, wie handle ich es dann.

P.S wenn es geht könntest du das an meinem Bsp vom Anfang vorführen. Das wäre toll!

Ich danke dir für deine Mühe, Rainer!

Gruß
Igor

Hallo Igor,

d.h. dass CDbl falsch war?

Nein!!! Das war nicht falsch. CDbl löst aber einen Fehler aus, wenn Du nicht numerische Zeichen in eine Double-Variable schreiben willst.

CDbl ist völlig korrekt, nur mußt Du vorher dafür sorgen, daß das auch geht. CDbl wandelt einen String, der nur Ziffern enthält in eine ‚richtige‘ Zahl, eine numerische Variable von Typ Double um. Das ist eine Operation, keine Prüfung.

Prüfen kannst Du mit IsNumeric(‚Ausdruck‘)

Da ich, wie du an meinem einfachen Code sehen kannst, kein VBA
Profi bin könntest du mir noch näher beschreiben, wo ich
deinen Zusatz einsetzen muss?

Da stoße ich an meine Grenzen, ich kann mit VB umgehen, kann Dir die richtigen Befehle und die Syntax dazu sagen, aber von VBA habe ich keine Ahnung, ich mag Exel nicht. :smile:

Es genügt normaler Weise, das Textfeld doppelt anzuklicken, VB öffnet das Fenster mit dem Code und schreibt Dir schon mal Anfang und Ende für das Change-Ereignis hin. Du mußt da nur noch die Prüfung hinein programmieren.

Statt ‚Txt1.Text‘ steht bei Dir ‚TextBox1.Value‘, d.h. Du arbeitest mit einem Excel, das ich nicht kenne, scheint neu zu sein und die Syntax von VB.Net zu verwenden. Du mußt also ohnehin etwas anpassen, so wie der Code bei mir in VB6 läuft, läuft er bei Dir im VBA nicht. Ich kann Deinen Code nicht testen, weil mir das passende Programm dazu fehlt.

Gruß, Rainer

Gruß, Rainer

Ich danke dir für deine Zeit. Schönn, dass es Menschen gibt die sich Zeit nehmen an deren zu helfen :wink:

Besten Gruß
Igor

Hi Igor,

hat’s geklappt? ich habe Excel gerad mal geöffnet, ein Textfeld in die Tabelle gelegt, doppelt angeklickt … geht. :smile:

Gruß, Rainer

Hi Rainer,

die Sache ist folgende, dass ich 10 Formulare habe und in jedem sind bis zu 30 Textfelder. Meine Idee war, dass ich alle Textfelder fülle und dann mit einem Knopfdruck alle Zahlen und Texte aus den gefüllten Textfeldern in die Exceltabelle einfüge, daher bastle ich noch daran.

Gruß
Igor

Hallo Igor,

die Sache ist folgende, dass ich 10 Formulare habe und in
jedem sind bis zu 30 Textfelder. Meine Idee war, dass ich alle
Textfelder fülle und dann mit einem Knopfdruck alle Zahlen und
Texte aus den gefüllten Textfeldern in die Exceltabelle
einfüge, daher bastle ich noch daran.

OK. Das dauert, das ist mir klar. Die Sicherung, daß nur numerische Werte eingegeben werden können, klappt aber?

Gruß, Rainer

Ja klar, das ist ok!

Danke dir, schönen Tag noch
Gruß
Igor