2017-11-04 2 views
0

Ich wollte eine Summe von zwei Werten aus zwei verschiedenen Textfeldern in einer Form machen, damit ich die Codes korrekt wie gezeigt eingegeben hatte:Wie SUMME zwei Werte von zwei verschiedenen Textfeld in VBA?

Private Sub btnResult_Click() 

Dim answer As Integer 
answer = txtNum1 + txtNum2 
txtAns.Value = answer 

End Sub 

Diesen Code ausgeben sollte in dem Feld, das txtAns die Summe von txtNum1 + txtNum2 benannt wenn ich auf die Schaltfläche btnResult, aber anstatt sie geben die beiden Werte nebeneinander ohne Berechnung, wie in diesem Bild gezeigt:

Click here to open the picture!

Aber, wenn ich einen anderen Operator wie verwenden (/ oder * oder -) die Berechnung erfolgt korrekt!

Also, was ist los?

+0

Wild erraten, aber ich vermute, es ist die Behandlung der Daten als String und verketten, während die anderen Operatoren ganzzahl annehmen. – Robbie

+0

Probieren Sie 'cdbl (txtnum1) + cdbl (txtnum2)' oder 'cint' –

Antwort

1

In dem folgenden Beispiel:

Dim answer As Integer 
answer = "1" + "2" 
Debug.Print answer 

der ganzzahlige Wert 12 gedruckt wird. Was passiert, ist, dass zuerst der Textausdruck "1" + "2" ausgewertet wird, der die Zeichenfolge "12" ergibt, die in den Ganzzahlwert 12 konvertiert wird.

Wenn Sie stattdessen tun würde:

answer = Int("1") + Int("2") 

der Wert 3 gedruckt wird.

In Ihrem Skript können Sie tun:

answer = Int(txtNum1.Value) + Int(txtNum2.Value) 

Die .Value Qualifier wahrscheinlich nicht notwendig ist, da es das Standardattribut ist.

+0

Vielen Dank für Ihre detaillierte Lösung, es funktioniert! –

Verwandte Themen