Vba 我的msgbox中的循环-错误
我对以下代码有问题:Vba 我的msgbox中的循环-错误,vba,excel,Vba,Excel,我对以下代码有问题: Sub Option_choice() Dim Choice_box As String Do Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _ vbCrLf & "Entrez la valeur 1, 2 ou 3" & _ vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
Sub Option_choice()
Dim Choice_box As String
Do
Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _
vbCrLf & "Entrez la valeur 1, 2 ou 3" & _
vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
vbCrLf & vbTab & "2 - Compte de résultat" & _
vbCrLf & vbTab & "3 - Hors bilan", vbQuestion, "Entrez la valeur 1, 2 ou 3")
Select Case Choice_box
Case "1"
MsgBox ("Bilan")
Case "2"
MsgBox ("Compte de résultat")
Case "3"
MsgBox ("Hors bilan")
Case Else
MsgBox "Vous devez sélectionner une valeur égale à 1, 2 ou 3" & _
vbCrLf & vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur"
If vbYes Then
Loop
ElseIf vbNo Then
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Else
'rien
End If
End Select
End Sub
当以下问题的答案为“否”时,我想从头开始重复MsgBox
:
MsgBox "Vous devez sélectionner une valeur égale à 1, 2 ou 3" & _
vbCrLf & vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur"
它说:
“没有Do的错误循环”
你能帮忙吗
谢谢
Jean您希望启动一个循环,该循环仅在满足条件后结束 请尝试以下方法:
Sub Option_choice()
Dim Choice_box As String
Do
Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _
vbCrLf & "Entrez la valeur 1, 2 ou 3" & _
vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
vbCrLf & vbTab & "2 - Compte de résultat" & _
vbCrLf & vbTab & "3 - Hors bilan", vbQuestion, "Entrez la valeur 1, 2 ou 3")
Select Case Choice_box
Case "1"
MsgBox ("Bilan")
Exit Do
Case "2"
MsgBox ("Compte de résultat")
Exit Do
Case "3"
MsgBox ("Hors bilan")
Exit Do
Case Else
If MsgBox("Vous devez sélectionner une valeur égale à 1, 2 ou 3" & vbCrLf & vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur") = vbYes Then
'Nothing, it will loop anyway
ElseIf vbNo Then
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Exit Sub
End If
End Select
Loop
End Sub
谢谢大家的帮助,这是我为需要帮助的人编写的最后代码
Sub Option_choice()
Dim Choice_box, File_Choice As String
Dim Rep_Choice As Integer
Do
Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _
vbCrLf & "Entrez la valeur 1, 2 ou 3" & _
vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
vbCrLf & vbTab & "2 - Compte de résultat" & _
vbCrLf & vbTab & "3 - Hors bilan", vbQuestion, "Entrez la valeur 1, 2 ou 3")
Select Case Choice_box
Case "" 'if cancelled
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Exit Sub
Case "1"
MsgBox ("Bilan")
File_Choice = "Bilan"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case "2"
MsgBox ("Compte de résultat")
File_Choice = "Compte de résultat"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case "3"
MsgBox ("Hors bilan")
File_Choice = "Hors bilan"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case Else
Rep_Choice = MsgBox("Vous devez sélectionner une valeur égale à 1, 2 ou 3" & _
vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur")
If Rep_Choice = vbNo Then
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Exit Do
Else
'loop
End If
End Select
Loop
End Sub
Jeanvba中不能有交错块。您的
循环
必须在结束选择
之后,如果需要,您可以使用vbNo
分支中的退出Do
来退出循环。请注意,如果。。。ElseIf句子。@VincentG我已经更新了我的代码,并为我的答案设置了一个变量(VbYesNo)。现在的问题是,当我在第一个输入框上单击“取消”时,它不会退出。。。我不知道如何逃避它。我添加了一个案例“If vbcancel then Exit Do”(如果vbcancel,则退出Do),但它不起作用您的版本不会出现,并且vbYesNo是vba中的常量,您不应该使用is作为变量的名称。仅作为一个小问题,在1、2或3为selected@tompreston原始代码也没有退出循环,我也不知道需要什么,可能用户希望按顺序被询问。ComboBox未定义,并且在Do While中不受影响。。。循环
,因此是无用的。A做。。。Loop
without condition也有同样的作用。@VincentG“无用”一词在这种情况下并不合适,它的作用相当明显,但我承认,在这里做得更好。
Sub Option_choice()
Dim Choice_box, File_Choice As String
Dim Rep_Choice As Integer
Do
Choice_box = InputBox("Quel état souhaitez-vous restituer ?" & _
vbCrLf & "Entrez la valeur 1, 2 ou 3" & _
vbCrLf & vbCrLf & vbTab & "1 - Bilan" & _
vbCrLf & vbTab & "2 - Compte de résultat" & _
vbCrLf & vbTab & "3 - Hors bilan", vbQuestion, "Entrez la valeur 1, 2 ou 3")
Select Case Choice_box
Case "" 'if cancelled
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Exit Sub
Case "1"
MsgBox ("Bilan")
File_Choice = "Bilan"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case "2"
MsgBox ("Compte de résultat")
File_Choice = "Compte de résultat"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case "3"
MsgBox ("Hors bilan")
File_Choice = "Hors bilan"
MsgBox ("Filechoice = " & File_Choice)
Exit Do
Case Else
Rep_Choice = MsgBox("Vous devez sélectionner une valeur égale à 1, 2 ou 3" & _
vbCrLf & "Désirez-vous continuer ?", vbYesNo + vbExclamation, "Erreur")
If Rep_Choice = vbNo Then
MsgBox "Fin de l'opération, aucun état n'a été généré", vbInformation, "Fin du programme"
Exit Do
Else
'loop
End If
End Select
Loop
End Sub