Clever-Excel-Forum

Normale Version: Eingaben werden nicht addiert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo!

Ich habe folgendes Problem, dass ich in 2 Inputboxen jeweils einen Wert eingebe. Nun möchte ich aber, dass diese 2 Werte addiert werden, damit ich damit weiter arbeiten kann.
Leider funktioniert das aber nicht. Wenn ich z.B. bei der 1. Inputbox 5 eingeben und bei der 2. auch 5 eingebe, wird dann nachher in eine Zelle 55 geschrieben. Ich will aber, dass er die Summe aus den beiden macht, somit sollte 10 in die bestimmte Zelle geschrieben werden.

Anbei mein aktueller Code. Ich hoffe, dass mir jemand helfen kann.


Code:
Dim wert, wert1, wert2    As Variant

wert1 = InputBox("Bitte neuen 1. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)
       
        wert2 = InputBox("Bitte neuen 2. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)

wert = wert1 + wert2

.Range("E3").Value = CDbl(wert)

LG
Thomas
Hallo,

in VBA ist das Zeichen für das Concatinieren von Strings das "&", aber es geht auch das "+" wie in anderen Sprachen. Dein Code verbindet damit zwei Strings, die nachher nicht mehr automatisch in Zahlen gewandelt werden können.

Es sollte helfen ein "Val(input....) zu schreiben.

mfg

PS Der Ansatz erscheint etwas merkwürdig
Hallo!

Danke für deine rasche Antwort. Leider sagt mir das aber nichts. Wie müsste ich den Code nun umändern?

Danke und

LG
Thomas
Moin,
deine Werte werden als String genommen.
probier  mal

Dim wert, wert1, wert2 As Long
Hallo DIZA!

Danke sehr, du hast mir sehr geholfen. Es funktioniert nun.

LG
Thomas

Hallo!

Leider muss ich nun im Praxistest mitteilen, dass es doch nicht ganz korrekt arbeitet.
Wenn ich die Werte 5,01 und 5,01 eingebe, wird dann als Ergebnis 10,01 in die Zelle E3 geschrieben, statt 10,02.

Ich hoffe, dass mir nochmals wer helfen kann.

Anbei nochmals mein aktueller Code:

Code:
Dim wert, wert1, wert2 As Long

Do
       
        wert1 = InputBox("Bitte neuen 1. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)
       
        If wert1 = "" Then Exit Sub
       
        wert2 = InputBox("Bitte neuen 2. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)
       
        wert = wert1 + wert2
       
        If CStr(wert) > CStr(Range("E3")) * 5 Then '
            MsgBox ("Dein von dir eingegebener Wert ist um " & Format((wert / Range("E3")) * 100, "#,##0") & " % größer als der alte Wert.")
       
        End If
   
    Loop Until (wert / Range("E3")) * 100 < 500
       
        .Range("E3").Value = CDbl(wert)


LG
Thomas

Nachtrag:
 
Ich bin gerade draufgekommen, dass er mir beim 2. Wert die Kommazahlen nicht nimmt, beim 1. Wert aber schon.
Hallo Thomas,

wert2 ist ja auch als Long deklariert (also ohne Nachkomma), während wert1 als Variant (nicht) deklariert ist, was dann alles annehmen kann.

Gruß, Uwe
Hallo Kuwer!

Das ist nicht korrekt, es ist alles als Long deklariert, siehe oberer Beitrag.
Hallo Tommy,

Zitat:Dim wert, wert1, wert2 As Long

nur Wert2 ist long, alles andere Variant.
Hallo!

Danke für den Hinweis. Ich dachte, dass alle in der Zeile long sind, weil sie ja mit "," getrennt sind.
Was müsste ich nun tun, dass es nun trotzdem funktioniert?

Ich will einfach, dass ich beim 1. u. 2. Wert jeweils eine Zahl mit Kommastellen eingeben kann und das er dann auch damit richtig eine Summe von den beiden mit Kommastellen bilden kann.
Hallo Thomas,

Du hattest es doch schon drin in Deinem Code:

Code:
  Dim wert1, wert2

  wert1 = InputBox("Bitte neuen 1. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)
  wert2 = InputBox("Bitte neuen 2. Wert eingeben: " & String(2, vbNewLine) & _
        "alter Wert: € " & alterWert & " vom " & alterWertDatum)
  If IsNumeric(wert1) And IsNumeric(wert2) Then
    .Range("E3").Value = CDbl(wert1) + CDbl(wert2)
  End If

Gruß, Uwe
Seiten: 1 2