如何在执行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