Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CDbl - Code

Forumthread: CDbl - Code

CDbl - Code
31.07.2005 20:55:02
Alexander
Hallo,
ich möchte eine Zahl aus einer TextBox in eine Zelle auslesen. Wegen Komma und Punkt gab es Probleme mit dem korrekten Übertragen. Deshalb habe ich die CDbl-Funktion eingefügt. Das Problem mit dem Komma ist jetzt behoben. Nur muss jetzt in der TextBox immer eine Zahl stehen. Wenn nichts drin steht oder vom Benutzer ausversehen ein Buchstabe eingetragen wird, zeigt er sofort eine Laufzeitfehler an. Was kann ich tun, damit ein leeres Feld oder Buchstaben ignoriert werden?

Private Sub TextBox3_Change()
Range("E38") = CDbl (TextBox3.Value)
End Sub

Vielen Dank für die Hilfe
Alex
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CDbl - Code
31.07.2005 21:01:10
Ramses
Hallo
Das Change-Ereignis ist dazu nicht geeignet.
Verwende das Exit-Ereignis der Textbox und prüfen den Inhalt der Textbox
if Not IsNumeric(CDbl(Me.Textbox1)) Then
Msgbox "Nicht korrekter Wert
Cancel = True
End If
Gruss Rainer
AW: CDbl - Code
31.07.2005 21:22:22
Alexander
Hallo Rainer,
vilen Dank für den Tip. Ich habe jetzt folgenden Code:

Private Sub TextBox3_Exit()
If Not IsNumeric(CDbl(Me.TextBox3)) Then
MsgBox "Nicht korrekter Wert"
Cancel = True
End If
End Sub

Wenn ich aber einen Buchstaben eintippe und mit der Maus in eine andere TextBox Klicke, kommt keine Fehlermeldung. Uns was mache ich mit der Zeile:
Range("E38") = CDbl (TextBox3.Value)
Denn diese brauche ich so, denn sonst muss man in der Box ein Punkt statt Komma verwenden damit der Wert in der Zelle später stimmt.
Danke schonmal
Alex

Anzeige
AW: CDbl - Code
31.07.2005 21:30:00
Matthias
Hallo Alex,
mein Vorschlag:

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox3.Value) Then
MsgBox "Nicht korrekter Wert"
Cancel = True
Else
Range("E38") = CDbl(TextBox3)
End If
End Sub

Gruß Matthias
Anzeige
AW: CDbl - Code
31.07.2005 22:16:14
Alexander
Vielen Dank für die Hilfe.
Alex
AW: CDbl - Code
31.07.2005 21:32:50
Ramses
Hallo
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(Me.TextBox3) Then
    MsgBox "Nicht korrekter Wert"
    Cancel = True
Else
    Range("E38") = CDbl(TextBox3.Value)
End If
End Sub

und DIESEN Code übernehmen.
Das Exit-Ereignis von DIR ist falsch !!
Gruss Rainer
Anzeige
AW: CDbl - Code
31.07.2005 22:15:31
Alexander
Hallo,
ich habe noch die Textbox-Nummer in Deinem Code geändert. Jetzt geht es.

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(Me.TextBox3) Then
MsgBox "Nicht korrekter Wert"
Cancel = True
Else
Range("E38") = CDbl(TextBox3.Value)
End If
End Sub

Danke
Alex
Anzeige
;
Anzeige

Infobox / Tutorial

CDbl in VBA: Umgang mit TextBoxen und Fehlerbehebung


Schritt-für-Schritt-Anleitung

Um die CDbl-Funktion in VBA zu verwenden und sicherzustellen, dass die Eingaben in einer TextBox korrekt verarbeitet werden, kannst du folgende Schritte befolgen:

  1. Öffne den Visual Basic-Editor in Excel (ALT + F11).

  2. Füge eine UserForm hinzu und platziere eine TextBox (z.B. TextBox3) und einen Button, um die Eingabe zu verarbeiten.

  3. Verwende das Exit-Ereignis der TextBox, um sicherzustellen, dass nur numerische Werte akzeptiert werden. Hier ist ein Beispielcode:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If Not IsNumeric(Me.TextBox3.Value) Then
           MsgBox "Nicht korrekter Wert"
           Cancel = True
       Else
           Range("E38") = CDbl(TextBox3.Value)
       End If
    End Sub
  4. Test deine UserForm: Gib verschiedene Werte in die TextBox ein, um sicherzustellen, dass der Code wie gewünscht funktioniert.


Häufige Fehler und Lösungen

Ein häufiges Problem bei der Verwendung von CDbl in VBA ist der Laufzeitfehler, der auftritt, wenn die Eingabe nicht numerisch ist. Hier sind einige Lösungen:

  • Fehler bei leeren Feldern: Wenn die TextBox leer ist, kann CDbl nicht verarbeitet werden. Stelle sicher, dass du eine Überprüfung auf leere Werte einfügst:

    If Trim(Me.TextBox3.Value) = "" Then
       MsgBox "Bitte geben Sie einen Wert ein."
       Cancel = True
    End If
  • Buchstaben in der Eingabe: Wenn der Benutzer Buchstaben eingibt, wird ein Fehler generiert. Verwende IsNumeric vor CDbl, um sicherzustellen, dass nur Zahlen verarbeitet werden.


Alternative Methoden

Es gibt verschiedene Ansätze, um mit Zahlenumwandlungen in VBA umzugehen, darunter:

  • Verwendung von Val: Eine einfachere Methode, um Strings in Zahlen zu konvertieren. Val ignoriert nicht-numerische Zeichen:

    Range("E38") = Val(TextBox3.Value)
  • Fehlerbehandlung: Du kannst auch die Fehlerbehandlung in VBA verwenden, um Laufzeitfehler abzufangen:

    On Error Resume Next
    Range("E38") = CDbl(TextBox3.Value)
    If Err.Number <> 0 Then
       MsgBox "Nicht korrekter Wert"
       Err.Clear
    End If
    On Error GoTo 0

Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von CDbl:

  1. Umwandlung in eine Zelle: Der folgende Code zeigt, wie du den Wert aus einer TextBox in die Zelle E38 überträgst:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsNumeric(Me.TextBox3.Value) Then
           Range("E38") = CDbl(Me.TextBox3.Value)
       Else
           MsgBox "Bitte geben Sie eine gültige Zahl ein."
           Cancel = True
       End If
    End Sub
  2. Umgang mit Komma und Punkt: Um sicherzustellen, dass die Eingabe korrekt interpretiert wird, kannst du vor der Umwandlung die Eingabe formatieren:

    TextBox3.Value = Replace(TextBox3.Value, ",", ".")

Tipps für Profis

  • Verwende CDbl nur für Zahlen: CDbl ist am besten geeignet für die Umwandlung von Strings in Gleitkommazahlen. Stelle sicher, dass die Eingaben immer in einem geeigneten Format vorliegen.

  • Bessere Benutzerführung: Überlege, ob du eine Eingabemaske oder Formatierungen in der TextBox verwenden möchtest, um die Eingabe zu erleichtern.

  • Regelmäßige Tests: Teste deinen Code regelmäßig während der Entwicklung, um sicherzustellen, dass alles wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Was ist CDbl in VBA?
CDbl ist eine Funktion in VBA, die einen Ausdruck in einen Double-Datentyp umwandelt. Sie wird häufig verwendet, um sicherzustellen, dass numerische Werte korrekt verarbeitet werden.

2. Was passiert, wenn ich CDbl auf einen nicht-numerischen Wert anwende?
Wenn du CDbl auf einen nicht-numerischen Wert anwendest, tritt ein Laufzeitfehler auf. Daher ist es wichtig, vorher mit IsNumeric zu überprüfen, ob der Wert gültig ist.

3. Kann ich CDbl auch mit anderen Datentypen verwenden?
Ja, CDbl kann auch mit anderen Datentypen wie Strings verwendet werden, solange sie einen gültigen numerischen Wert darstellen.

4. Wie gehe ich mit Dezimalzahlen um?
Um sicherzustellen, dass Dezimalzahlen richtig interpretiert werden, solltest du die Eingabe auf das richtige Format überprüfen und gegebenenfalls Punkte und Kommas anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige