2017-10-20 8 views
0

J'ai actuellement un tas de zones de liste déroulante qui a une option pour Oui, Non ou N/A Ensuite, j'ai un bouton de commande qui exécute un calcul passe ensuite à la page suivanteVBA USER FORM erreur 6 contourner

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 

maintenant, le seul problème que je fais l'expérience est maintenant que si toutes les cases sont vérifier que « N/A » je reçois le problème 0/0 (erreur 6: débordement)

Je sais que, avec Excel J'aurais utilisé une formule ERRORIF pour résoudre ce problème. Est-il possible que je peux dire que si VBA:

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

Vous pouvez essayer d'utiliser [Application.WorksheetFunction .IfError()] (https://msdn.microsoft.com/fr-fr/vba/excel-vba/articles/worksheetfunction-iferror-method-excel) ou certains [Error Handling] (http: //www.cpearson .com/excel/errorhandling.htm) – danieltakeshi

+0

Je suis confus. Pourquoi n'utilisez-vous pas une simple instruction "IF"? – FunThomas

+0

@FunThomas; ouais la solution est simple ici. Utilisez simplement: 'SI a = 0 ou b = 0 alors Else multipage1.value ....' – Luuklag

Répondre

0

Merci à tous pour vous aider à la réponse finale à c'est codé comme suit:

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