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

ли это в каждый checkkanged

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 в обработчик ONE. Кроме того, вам не нужно «снимать» другие RadioButtons в группе, так как это будет сделано автоматически для вас. Наконец, создайте отдельный метод, который вычисляет рейтинг и обновляет форму, а затем вызывает этот метод в нижней части обработчика.

Это может выглядеть примерно так:

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 

Обратите внимание, что все пять Radiobuttons перечислены после «Handles» ключевое слово, делая их все огонь и тот же обработчик. Вы можете сделать подобное для каждой группы RadioButtons ... просто убедитесь, что каждый набор RadioButtons находится в своем контейнере OWN, таком как GroupBox или Panel. RadioButton является взаимоисключающим со всеми другими RadioButttons в своем собственном контейнере.

+0

Я пробовал этот код, но переключатели не отменяют выбор при выборе другой кнопки. Все они остаются выбранными сразу. Функция UpdateRating() была именно тем, что мне было нужно, спасибо вам большое. – user2480367

+0

Вы уверены, что все RadioButtons находятся в ** том же ** контейнере? –

+0

Понял, понял. Большое вам спасибо за вашу помощь. – user2480367

Смежные вопросы