如何在VBA用户窗体中计算多个combobox的百分比

您好,我需要给一个VBA中的用户窗体中的多页的百分比。 如下所示 在这里输入图像说明

我已经格式化了combobox,如下所示:

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 

现在问题出现在回答问题后,我正在寻找一个名为“计算”的button,这将导致“ResultBx”中的百分比等于67%。

这个想法是计算看起来像这样:

  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"))) 

我知道我在这里包括Excel代码,但我需要“转换”到VBA

任何人都可以协助

假设您的button被命名为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