Excel Macro用于用户input,如果不正确,则循环返回以供用户重新input

美好的一天

我试图根据用户input和更新表单上的范围,但是我却被要求用户在input不匹配任何预定义条目时“重新input”input。

下面是我的代码

Sub testing_input_in_formula() Dim wbk1 As Workbook Dim strName As String test1 = "C:\Users\hayekn\Desktop\book1.xlsx" Set wbk1 = Workbooks.Open(test1) With wbk1.Sheets("Sheet1") On Error Resume Next Application.DisplayAlerts = True strName = InputBox(Prompt:="Enter the week you would like to update", _ Title:="Week Selection.", Default:="Week 1") If strName = "Your Name here" Or _ strName = vbNullString Then Exit Sub Else Select Case strName Case "Week 1" .Range("A10") = "Week 1" Case "Week 2" .Range("B10") = "Week 2" Case Else MsgBox "Incorrect Entry." 'I want it here to loop back to the "Select Case strName", 'where user is prompted to re-enter the text End Select End If End With End Sub 

你可以使用一些行标签和转到之间跳转,如下所示:

 Sub testing_input_in_formula() Dim wbk1 As Workbook Dim strName As String Dim test1 As String test1 = "C:\Users\hayekn\Desktop\book1.xlsx" Set wbk1 = Workbooks.Open(test1) 'On Error Resume Next <- Why do you need this? Application.DisplayAlerts = True Re-Enter: strName = InputBox(Prompt:="Enter the week you would like to update", _ Title:="Week Selection.", Default:="Week 1") If strName = "Your Name here" Or strName = vbNullString Then Goto The_End Else With wbk1.Sheets("Sheet1") Select Case strName Case "Week 1" .Range("A10") = "Week 1" Case "Week 2" .Range("B10") = "Week 2" Case Else MsgBox "Incorrect Entry." ' if you want the user to re enter the text you should loop to the InputBox Goto Re-Enter End Select End With End If The_End: Set wbk1 = Nothing End Sub 

请注意,我重新安排了一些代码,添加了test1variables并将工作表设置为Nothing。 这些都是将来需要的良好习惯:)请在这里看看,了解“无所事事”的含义,