Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fehler abfangen
#1
Hallo liebe Experten für VBA.

Wenn ich auf Abbrechen klicke, kommt es zum Fehler 13, Typen unverträglich.
Das liegt wohl daran, dass VZ aufgrund des Abbruchs keinen Wert hat.
Ich weiß nicht wie ich den Fehler beim Klick auf Abbrechen umgehen kann.

Kann mir da jemand einen Denkanstoß geben?
Vielen Dank
Gruß Achim

PHP-Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
Dim VZ As Double
Set temp 
Intersect(Range("GV"), Target)
If 
Not temp Is Nothing Then
   Cancel 
True
   
If [C3] > And [C4] > 0 Then
      VZ 
InputBox("Wert eingeben")
 
     [D13] = [C3] * VZ / ([C3] - [C4])
 
  Else
 
     Meldung MsgBox("Berechnung nicht möglich, weil C3 und C4 keine Werte enthalten")
 
  End If
End If
End Sub 
Antworten Top
#2
Hallo Achim,

mein Vorschlag:

Code:
   If [C3] > 0 And [C4] > 0 Then
       VZ = InputBox("Wert eingeben")
       If VZ <> "" Then
           [D13] = [C3] * VZ / ([C3] - [C4])
       Else
           Exit Sub
       End If
   Else
Gruß
Aloys
Win 10, Office 2016 / Office 2019
Antworten Top
#3
Aloys hat ja schon die Lösung präsentiert, allerdings wirst du VZ als String deklarieren müssen, denn eine Inputbox enthält nunmal Text.
Es sind außerdem noch folgende Punkte nicht gut umgesetzt:
- Wenn jemand einen Nicht-Zahlenwert eingibt, läufst du in eine Fehlermeldung. Das gehört ebenfalls abgefangen
- Du hast die Variable "Meldung" nicht deklariert. Würdest du mit Option Explicit arbeiten, wäre dir das sofort aufgefallen (wobei sich der Sinn der Variablen anhand des gezeigten Codes auch nicht erschließt)
- Bei gleicher Eingabe in C3 und C4 erhältst du ebenfalls eine Fehlermeldung, da Division durch Null. Wird das irgendwo vorab schon unterbunden?

Mein Vorschlag

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim VZ As String, Meldung As String
Set temp = Intersect(Range("GV"), Target)
If Not temp Is Nothing Then
   Cancel = True
   If [C3] > 0 And [C4] > 0 Then
       VZ = InputBox("Wert eingeben")
       If Not IsNumeric(VZ) Then
           MsgBox "Bitte Zahlenwert eingeben"
           Exit Sub
       Else
           [D13] = [C3] * VZ / ([C3] - [C4])
       End If
   Else
       Meldung = MsgBox("Berechnung nicht möglich, weil C3 und C4 keine Werte enthalten")
   End If
End If

End Sub
Schöne Grüße
Berni
Antworten Top
#4
Moin!
Oder man nimmt gleich statt der InputBox-Funktion die Application.InputBox-Methode.
Die hat nämlich das Argument Type:=
Setzt man ihn auf 1, werden nur Zahlen akzeptiert, hier gibt es dann auch eine eingebaute Fehlermeldung.
(VZ ist bei mir As Double mit dem Kurzkennzeichen # deklariert)

Dim VZ#

VZ = Application.InputBox("Zahl eingeben:", Type:=1)
If VZ <> 0 Then Debug.Print VZ * 3.1415

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Die Application.InputBox-Methode kannte ich
noch gar nicht. Werde ich mal ausprobieren.

Vielen Dank für die Hilfe zu meinem Anliegen.
Ich wünsche allen einen erlebnisreichen
Übergang ins nächste Jahrzehnt.

Gruß Achim
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste