2013-06-13 195 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