2013-06-13 168 views
0

我基本上想要一個調查文檔,其中用戶選擇評分,如「總是」和「從不」。他們通過點擊單選按鈕來選擇評分。評分被加權並被平均爲總分,如GPA,即總是值3,有點值2,每個問題應該被添加,然後取平均值。下面是我的一個問題的代碼的一部分。VBA返回一個值從一個子

如何在選擇按鈕後將結果的值取平均,並將所有問題的平均值?

Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged 

    If RadioButton1.Checked = True Then 

     RadioButton3.Checked = False 
     RadioButton2.Checked = False 
     RadioButton4.Checked = False 
     RadioButton5.Checked = False 
     num1 = 2 
    End If 

End Sub 

Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged 
    If RadioButton2.Checked = True Then 

     RadioButton3.Checked = False 
     RadioButton1.Checked = False 
     RadioButton4.Checked = False 
     RadioButton5.Checked = False 
     num1 = 3 
    End If 
End Sub 

Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged 
    If RadioButton3.Checked = True Then 

     RadioButton1.Checked = False 
     RadioButton2.Checked = False 
     RadioButton4.Checked = False 
     RadioButton5.Checked = False 
     num1 = 1 
    End If 
End Sub 

Private Sub RadioButton4_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton4.CheckedChanged 
    If RadioButton4.Checked = True Then 

     RadioButton3.Checked = False 
     RadioButton2.Checked = False 
     RadioButton1.Checked = False 
     RadioButton5.Checked = False 
     num1 = 0 
    End If 
End Sub 

Private Sub RadioButton5_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton5.CheckedChanged 


    If RadioButton5.Checked = True Then 

     RadioButton3.Checked = False 
     RadioButton2.Checked = False 
     RadioButton4.Checked = False 
     RadioButton1.Checked = False 
     num1 = 0 
    End If 
End Sub 
+0

會更好.. :) – matzone

+0

對不起,新來這個地方 – user2480367

回答

0

我不太確定你的情況..但你可以試試這個

聲明你的變種,將統計所有結果..

Dim num1 as Integer 
Dim num2 as Integer '--> for other group radiobuttons 
Dim num3 as Integer '--> for other group radiobuttons 

Dim nTotal as Integer 
Dim nAvg as Integer 

每個做到這一點checkchanged

Private Sub RadioButton_CheckedChanged(..) Handles RadioButton1_CheckedChanged, RadioButton2_CheckedChanged, ..... 

    'codes 
    countit() 

End Sub 

Sub CountIt() 
    nTotal = num1 + num2 + num3 
    nAvg = (num1 + num2 + num3)/3 
End Sub 
+0

謝謝你這麼多 – user2480367

1

首先,您可以合併所有這些R adioButton事件處理程序轉換爲一個處理程序。此外,您不必「取消」組中的其他RadioButton,因爲這將自動爲您完成。最後,創建一個計算評級並更新表單的單獨方法,然後在處理程序底部調用該方法。

這可能是這個樣子:即所有五個單選按鈕都在「手柄」關鍵字把他們都火了相同的處理後上市

Private num1 As Integer 

Private Sub set1_CheckedChanged(sender As Object, e As EventArgs) Handles _ 
     RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, _ 
     RadioButton4.CheckedChanged, RadioButton5.CheckedChanged 

    If RadioButton1.Checked Then 
     num1 = 2 
    ElseIf RadioButton2.Checked Then 
     num1 = 3 
    ElseIf RadioButton3.Checked Then 
     num1 = 1 
    ElseIf RadioButton4.Checked Then 
     num1 = 0 
    ElseIf RadioButton5.Checked Then 
     num1 = 0 
    End If 

    UpdateRating() 
End Sub 

Private Sub UpdateRating() 
    ' ... compute the rating using "num1", "num2", "num3", etc ... 
    ' ... then update the GUI with the new value ... 
End Sub 

注意。您可以爲每組RadioButton做類似的事情......只要確保每個RadioButton集合都在GroupBox或Panel等容器的OWN容器中。 RadioButton與所有其他RadioButtton在其自己的容器中互斥。如果投別人的答案

+0

我想這個代碼,但在選擇不同的按鈕單選按鈕不會取消。他們都保持一次選擇。 UpdateRating()函數正是我所需要的,但非常感謝你。 – user2480367

+0

你確定所有的RadioButton都在** ** **容器中嗎? –

+0

明白了。非常感謝你的幫助。 – user2480367