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%")
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
Je suis confus. Pourquoi n'utilisez-vous pas une simple instruction "IF"? – FunThomas
@FunThomas; ouais la solution est simple ici. Utilisez simplement: 'SI a = 0 ou b = 0 alors Else multipage1.value ....' – Luuklag