用于用户输入的Excel宏,如果不正确则循环返回以供用户重新输入

时间:2014-07-17 06:16:50

标签: excel excel-vba loops user-input vba

美好的一天

我试图在一张纸上进行用户输入和更新范围,但是我仍然坚持要求用户重新输入"他的输入,以防它与任何预定义的条目都不匹配。

下面是我的代码

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

1 个答案:

答案 0 :(得分: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以了解&#34;无所事事的含义&#34;