Registriert seit: 18.04.2014
Version(en): Office 2010
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 Range, Cancel As Boolean)
Dim VZ As Double
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")
[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
Registriert seit: 12.04.2014
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
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
29.12.2019, 16:22
(Dieser Beitrag wurde zuletzt bearbeitet: 29.12.2019, 16:23 von MisterBurns.)
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
29.12.2019, 16:37
(Dieser Beitrag wurde zuletzt bearbeitet: 29.12.2019, 16:37 von RPP63.)
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)
Registriert seit: 18.04.2014
Version(en): Office 2010
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