2014-07-17 89 views
0

好日子Excel宏用户输入,循环回用户重新输入,如果不正确

我试图把用户输入和更新范围的基础上,一个表,但被陷在询问IM用户在与任何预定义条目不匹配的情况下“重新输入”他的输入。

下面

是我的代码

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 

回答

2

你可以使用一些线标签和Goto线之间跳转如下:

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 

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

+0

真棒!像一个魅力工作:)并感谢您的改善。我是初学者,不知道如何使用最佳实践。再次感谢 !! – Nadz

+0

不用担心,社区在这里帮助:) – Noldor130884

相关问题