美好的一天
我试图在一张纸上进行用户输入和更新范围,但是我仍然坚持要求用户重新输入"他的输入,以防它与任何预定义的条目都不匹配。
下面是我的代码
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
答案 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;