2017-10-20 5 views
0

私は現在、はい、いいえまたはN/Aのオプションを持つコンボボックスの束を持っています 次に計算を実行し、次のページに移動するコマンドボタンがありますVBA USER FORMエラー6回避する

私が持つことを知っている

Private Sub CommandButton2_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) 
OUTBX1.Text = Format(a/b, "00.00%") 
MultiPage1.Value = 1 
End Sub 

今、私が今経験しています唯一の問題は、すべてのボックスが、その後、「N/A」としてチェックされている場合、私は0/0問題(オーバーフローエラー6)を得ることですExcel私はこれを解決するためにERRORIF式を使用していました。

=ERRORIF (b=0) then MultiPage1.Value = 1 else 
    OUTBX1.Text = Format(a/b, "00.00%") 
+0

あなたが使用して試すことができます[Application.WorksheetFunction私があればというVBAを伝えることができる方法はあります.IfError()](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheetfunction-iferror-method-excel)または何らかの[エラー処理](http://www.cpearson .com/excel/errorhandling.htm) – danieltakeshi

+0

私は混乱しています。なぜ単純なIF文を使わないのですか? @FunThomas; – FunThomas

+0

;ここの解決策は簡単です。 'IF a = 0またはb = 0、else multipage1.value .... ' – Luuklag

答えて

0

は、あなたがこれに対する最終的な答えは次のようにコーディングされて助けるためにすべての人に感謝:

Private Sub CommandButton2_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) 

If b = 0 Then 
MultiPage1.Value = 1 

Else 
OUTBX1.Text = Format(a/b, "00.00%") 
MultiPage1.Value = 1 
End If 
End Sub 
関連する問題