Пользовательская форма Excel - есть ли способ заставить метку рассчитать балл на основе ответов «Да» или «Частично» 7 из выпадающих списков? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть пользовательская форма Excel, которая имеет 7 комбинированных списков с опциями N / A, Да, Нет и Частично.Я хотел бы создать общий балл на основе ответов в каждом из выпадающих списков в ярлыке на форме, который вычислялся бы по мере обновления полей или по нажатию кнопки (на самом деле не имеет значения).Да = 1 Частично = 0,5 Чтобы получить оценку, мне также нужно подсчитать результаты «Да» и «Частично», так как оценка будет суммой «Да» и «Частично / 7».

Не получается получить ярлыкобновить с любыми основными результатами.

Я попытался найти код, который уже существует, но все, что я нахожу, ссылается на фактическую рабочую таблицу / ячейки Excel, а не на непосредственные результаты в пользовательской форме, или они добавляют фактические числаи не преобразовывать текстовые результаты в вычисляемое число.

Это вложенное выражение if - это моя самая недавняя попытка заставить хотя бы один из выпадающих списков заполнить меня для ярлыка без удачи.

Private Sub Score_Change()

If CBCoverage.Value = "Yes" Then LBLCYes = 1
 Else: LBLCYes = 0
If CBCoverage.Value = "Partially" Then LBLCPartially = 0.5
 Else: LBLCPartiall = 0
End If
End If
End If
End Sub

Я не ожидаю, что вы напишите мне все это, но если бы вы только могли помочь мне увидеть, что я делаю здесь неправильно, это было бы удивительно!Мои комбо-боксы названы: CBCoverage CBInvestigation CBFinancials CBAutoPD CBEvaluation CBDocumentation CBCommunication

1 Ответ

0 голосов
/ 25 апреля 2019

Я прикрепил этот код к кнопке формы. Он перебирает все поля со списком в форме, поэтому, если есть какие-то элементы, которые вы хотите исключить, цикл необходимо изменить.

Private Sub CommandButton1_Click()

Dim c As Control, nYes As Long, nPartial 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
    End If
Next c

MsgBox "There were " & nYes & " Yes, and " & nPartial & " Partial answers."

End Sub

На основании nYes и nPartial вы можете рассчитать общую взвешенную оценку, например,

nYes + nPartial * 0.5
...