0

我正在开发一个 Excel 用户表单,用户可以在其中输入一个范围。例如,他们可以输入“B5”和“B20”。

我正在尝试进行错误处理以防止用户输入不正确的范围。例如,“asdf”和“fdsa”。

以下代码失败:

Private Sub cmdSend_Click()
 Dim beginTerm As String
 Dim endTerm As String

 beginTerm = TermsBegin.Text
 endTerm = TermsEnd.Text

 If (IsError(Worksheets("Account Information").Range(beginTerm + ":" + endTerm)) = True) Then
     MsgBox "Cell Range is invalid."
     Exit Sub
 End If
 End Sub

我还尝试了以下方法:

Private Sub cmdSend_Click()
 Dim beginTerm As String
 Dim endTerm As String

 beginTerm = TermsBegin.Text
 endTerm = TermsEnd.Text
 Dim myRange As Range

 myRange = Worksheets("Account Information").Range(beginTerm + ":" + endTerm)
 On Error GoTo ErrHandler

 On Error GoTo 0

 'other code ...

 ErrHandler:
     MsgBox "Cell Range is invalid."
     Exit Sub
End Sub

我的问题是我该如何处理它失败的情况?

谢谢!

4

2 回答 2

1

你必须把

On Error GoTo ErrHandler

在可能引发错误的行之前。

于 2013-02-06T15:56:17.613 回答
0

如果您需要从用户那里获取范围,我建议使用 Type = 8 的 Application.InputBox。这允许用户从工作表中选择一个范围。

看看这个: http ://www.ozgrid.com/VBA/inputbox.htm

此外,如果您使用的是用户窗体,您还可以添加一个命令按钮,该按钮将调用 Application.InputBox 以允许用户选择一个范围。

快速示例:

Private Sub CommandButton1_Click()
    Dim r As Range

    On Error Resume Next

    Set r = Application.InputBox(Prompt:= _
                "Please select a range with your Mouse to be bolded.", _
                    Title:="SPECIFY RANGE", Type:=8)
    If Not r Is Nothing Then MsgBox r.Address

    On Error GoTo 0
End Sub
于 2013-02-06T16:00:59.523 回答