如何在执行macros之前需要input到我的InputBox?

macros执行后,我的macros需要input。 但是,如果用户按下取消,则macros将在没有该信息的情况下执行,这会在数据中留下空位。 这是我最好的猜测,但它不阻止用户取消并仍然执行:

Do Until Not IsEmpty(myWknum) DoEvents myWknum = InputBox("Please enter week number") Loop 

如果当用户取消InputBox ,您希望退出子程序而不进行任何处理,请使用Exit Sub语句:

 Sub Test Dim myWkNum As String myWkNum = InputBox("Please enter week number") If myWkNum = "" Then Exit Sub '... 'other code '... End Sub 

或者通过一些有效性testing:

 Sub Test Dim myWkNum As String Do myWkNum = InputBox("Please enter week number") If myWkNum = "" Then Exit Sub ElseIf IsNumeric(myWkNum) Then If myWkNum > 0 And myWkNum < 54 And Int(myWkNum) = myWkNum Then Exit Do End If End If Loop '... 'other code '... End Sub 

这将强制一个值,而这个值必须是一个数字:

 Sub t() Dim myWknum As String Do While myWknum = "" Or Not IsNumeric(myWknum) myWknum = InputBox("Please enter week number") Loop End Sub 

而且,稍微详细一点(可能会使效率更高),将强制用户input一个从1到52的数字:

 Sub t() Dim myWknum As String Do While myWknum = "" Or Not IsNumeric(myWknum) myWknum = InputBox("Please enter week number") Loop If myWknum < 1 Or myWknum > 52 Then Do While myWknum < 1 Or myWknum > 52 myWknum = InputBox("Please use a valid week number. (>= 1 or <= 52)") Loop End If End Sub 

Loop线之前添加。

if myWknum="" then Exit Do