Как динамически рассчитать балл на основе ответов комбоокса пользовательской формы - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть пользовательская форма с 7 выпадающими списками, которые имеют опции Yes, No, Partially и N/A.Основываясь на ответе в каждом из ящиков, у меня есть текстовое поле, которое заполняет общий балл.

Yes = 1,
Partially = 0.5,
No = 0 и
NA = 0.

У меня есть код, который вычисляет на основе ответов в выпадающем списке, и если я просто делю на общее количество полей (7), он вычисляет, однако, не все формы будут иметь 7 ответов (вариант NA есть, но тогда он в основном не 'не рассчитывать на или против них).Поэтому мне нужно выяснить, как разделить общий балл на общее количество ответов.Я уверен, что это очень просто, но я не изо всех сил пытаюсь понять это.

Это код, который у меня там есть, который не дает мне правильный%

TXTScore = Format((nYes + nPartial * 0.5) / nYes + nPartial + nNo, "Percent")
Private Sub CommandButton1_Click()

Dim c As Control, nYes As Long, nPartial As Long, nNo As Long


For Each c In Me.Controls
    If TypeName(c) = "ComboBox" Then
        If c.Value = "Yes" Then nYes = nYes + 1
        If c.Value = "Partially" Then nPartial = nPartial + 1
        If c.Value = "No" Then nNo = nNo + 1
    End If
Next c

TXTScore = Format((nYes + nPartial * 0.5) / nYes + nPartial + nNo, "Percent")
End Sub

Например - 6 Да, ответ и 1 нет = 100%, 5 Да, 1 частично и 1 нет равны 92%

1 Ответ

1 голос
/ 30 апреля 2019

Вы должны также считать NA (и, думаю, добавить несколько скобок)

Private Sub CommandButton1_Click()

Dim c As Control, nYes As Long, nPartial As Long, nNo As Long, nNA As Long
nYes = 0
nPartial = 0
nNo = 0
nNA = 0


For Each c In Me.Controls
    If TypeName(c) = "ComboBox" Then
        If c.Value = "Yes" Then nYes = nYes + 1
        If c.Value = "Partially" Then nPartial = nPartial + 1
        If c.Value = "No" Then nNo = nNo + 1
        If c.Value = "NA" Then nNA = nNA + 1
    End If
Next c

TXTScore = Format((nYes + nPartial * 0.5) / (nYes + nPartial + nNo + nNA), "Percent")
End Sub
...