2015-10-16 46 views
0

我創建了一個Excel表單,其中有五個文本框。這些文本框接受任何數值。一旦輸入了五個數字,就會有第六個文本框顯示這些值的總和。這些值的總和應該始終爲100%。這裏是我的代碼:使用Excel表格添加數字

Private Sub TextBox1_Change() 

Dim Value As Single 

Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) 

TextBox6.Value = Value 

End Sub 

我對所有文本框更改事件具有相同的代碼。不幸的是,這是行不通的。當我輸入10,20,3040作爲我的輸入,而不是顯示100%它顯示10203040作爲結果。

我在做什麼錯?

+0

什麼是錯誤的是你的期望,五個值的總和應該是100%。當你將五個值相加時,你將得到這些值的總和。如果你想要一個百分比,那麼你必須將這個總和與其他值進行比較。你想得到的總和是什麼的百分比? –

+0

對不起,我應該更清楚。我總結了5個值,我正在檢查它是否爲100。如果不是,我顯示一個錯誤。我遇到的問題只是求和部分。我不認爲我使用的Val函數將文本轉換爲數字。 – Amritha

+0

你的代碼適合我。你能提供更多的細節嗎? –

回答

1

我相信你需要使用的功能是CDblCSng它可以轉換爲雙浮點數或單浮點數。它不會處理輸入的空白​​或非數字數據,因此您可能需要檢查首先輸入的無效數據。像這樣的東西應該工作:

Value = 0 
If IsNumeric(TextBox1.Value) Then Value = Value + CSng(TextBox1.Value) 
If IsNumeric(TextBox2.Value) Then Value = Value + CSng(TextBox2.Value) 
If IsNumeric(TextBox3.Value) Then Value = Value + CSng(TextBox3.Value) 
If IsNumeric(TextBox4.Value) Then Value = Value + CSng(TextBox4.Value) 
If IsNumeric(TextBox5.Value) Then Value = Value + CSng(TextBox5.Value) 

TextBox6.Value = Value 
+0

當我執行CDbl代碼時,它說類型不匹配並且不執行代碼。 – Amritha

+0

您可能需要檢查輸入的無效數據,然後將其包含在總和中。我更新了我的答案,以展示如何做到這一點。 –

+0

'IIf'不會短路:它總是會評估True和False部分。在立即窗口中? iif(true,「OK」,1/0)'給出一個「除零」的錯誤... –

相關問題