2017-10-10 15 views
0

こんにちは、私はVBAのユーザーフォームでパーセンテージスコアを与える必要があります。次のように私はコンボボックスをフォーマットした enter image description hereVBAで複数のコンボボックスでパーセンテージを計算する方法ユーザーフォーム

以下のように :

Private Sub UserForm_Initialize() 
With Cbx1_1 
.AddItem "N/A" 
.AddItem "Yes" 
.AddItem "No" 
End With 

With Cbx1_2 
.AddItem "N/A" 
.AddItem "Yes" 
.AddItem "No" 
End With 

With Cbx1_3 
.AddItem "N/A" 
.AddItem "Yes" 
.AddItem "No" 
End With 

With Cbx1_4 
.AddItem "N/A" 
.AddItem "Yes" 
.AddItem "No" 
End With 
OUTBX.Value = " " 
End Sub 

は今の質問に答えた後、問題が来る、私がもたらすであろう「計算」という名前のボタンが含まれるように探しています67%に等しい "ResultBx"のパーセンテージ。私はここにExcelのコードを含むですが、私は誰が助けることができVBA

にそれを「変換」する必要があることを知っている

ResultBx.Value=(COUNTIF(Range(Cbx1_1,Cbx1_2,Cbx1_3,Cbx1_4),"=Yes"))/ 
((COUNTA(Range(Cbx1_1,Cbx1_2,Cbx1_3,Cbx1_4)))-(COUNTIF((Range 
(Cbx1_1,Cbx1_2,Cbx1_3,Cbx1_4)),"=N/A"))) 

アイデアは、計算は次のようになりますということですか?あなたのボタンを仮定

答えて

1

CommandButton1命名されています

Private Sub CommandButton1_Click() 
Dim a As Long, b As Long 

a = IIf(cbx1_1.Value = "Yes", 1, 0) + IIf(cbx1_2.Value = "Yes", 1, 0) + IIf(cbx1_3.Value = "Yes", 1, 0) + IIf(cbx1_4.Value = "Yes", 1, 0) 
b = 4 - IIf(cbx1_1.Value = "N/A", 1, 0) - IIf(cbx1_2.Value = "N/A", 1, 0) - IIf(cbx1_3.Value = "N/A", 1, 0) - IIf(cbx1_4.Value = "N/A", 1, 0) 
OUTBX.Text = Format(a/b, "00%") 

End Sub 

それとも好む場合:

Private Sub CommandButton1_Click() 

OUTBX.Text = Format(_ 
    (_ 
    IIf(cbx1_1.Value = "Yes", 1, 0) + _ 
    IIf(cbx1_2.Value = "Yes", 1, 0) + _ 
    IIf(cbx1_3.Value = "Yes", 1, 0) + _ 
    IIf(cbx1_4.Value = "Yes", 1, 0) _ 
    )/_ 
    (4 - _ 
    IIf(cbx1_1.Value = "N/A", 1, 0) - _ 
    IIf(cbx1_2.Value = "N/A", 1, 0) - _ 
    IIf(cbx1_3.Value = "N/A", 1, 0) - _ 
    IIf(cbx1_4.Value = "N/A", 1, 0) _ 
    ), "00%") 

End Sub 
関連する問題