Excel 输入框错误处理

Excel 输入框错误处理,excel,vba,Excel,Vba,我在处理与输入框“取消”单击相关的错误时遇到问题。或者换句话说,如果输入的值为null,它将在sub中返回一个错误。我试着四处看看,但似乎还是不能完全正确。以下是我的尝试: Private Sub bttnSavingsExpected_Click() Dim expected() As String Dim nPeriods As Integer Dim counter As Integer Dim savings As Single With ActiveSheet.Range("A13"

我在处理与输入框“取消”单击相关的错误时遇到问题。或者换句话说,如果输入的值为null,它将在sub中返回一个错误。我试着四处看看,但似乎还是不能完全正确。以下是我的尝试:

Private Sub bttnSavingsExpected_Click()
Dim expected() As String
Dim nPeriods As Integer
Dim counter As Integer
Dim savings As Single

With ActiveSheet.Range("A13")
    nPeriods = Range(.Offset(1, 0), .End(xlDown)).Rows.Count
End With

ReDim expected(1 To nPeriods)

counter = 1

For counter = 1 To nPeriods
    expected(counter) = Range("A13").Offset(counter, 0).Value
Next

TryAgain:
On Error GoTo ErrH
counter = 1
For counter = 1 To nPeriods
    savings = InputBox("How much savings do you expect from " & expected(counter) & "?", "Savings?", Range("A13").Offset(counter, 1).Value)
    If savings = "" Then
        Exit Sub
    Else
    Range("A13").Offset(counter, 1).Value = savings
    End If
Next

Exit Sub
ErrH:
MsgBox "Please enter value. If the default value is desired then please click 'OK'.", vbOKOnly, "Do Not Click Cancel"
GoTo TryAgain

End Sub

通过此尝试,无论是否有输入,即使我单击“确定”,MsgBox都会在第一次单击时显示。第二次尝试单击“确定”或“取消”会导致返回到编辑器。

您将
暗显为单个
如果保存=”,则
。这总是会出错的


尝试将Dim SAVES用作变量

确保收件箱的变量设置为“”,然后测试该值是否为False。比我见过的任何东西都简单:

Sub WolfPackURL_input()
Dim TheURL As String
Dim SaveURL As Hyperlink
Set savedURL = Sheets("Data").Range("I1")

TheURL = ""
TheURL = Application.InputBox("Input the Sign-Up URL", "Wolfpack Weekly Players URL", "http://something", 1)

If TheURL = "False" Then
    Exit Sub
End If

ThisWorkbook.Worksheets("Data").Activate
Sheets("Data").Range("I1").Hyperlinks.Delete
Sheets("Data").Range("I1").ClearContents
Sheets("Data").Range("I1").Clear

ActiveSheet.Hyperlinks.Add anchor:=Sheets("Data").Range("I1"), Address:=TheURL, ScreenTip:="Open file", TextToDisplay:=TheURL

End Sub

好吧,这是一个简单的解决办法!我是新手,所以我忘记了变量是多么容易让你很快陷入困境。对于任何希望以此为框架的人来说,这只是一个额外的注意事项,
TryAgain
On Error GoTo
ErrH
部分不适用于我表达的需求。If语句起到了作用。顺便说一下,谢谢!还有一次,如果按下输入框上的“叉”或“取消”,则会出现一个
变体
。一定要抓住这些。