2013-02-06 58 views
0

我正在处理用户可以输入范围的Excel用户表单。例如,他们可以放入“B5”和“B20”。范围对象的Excel错误处理

我试图做错误处理,以防止用户输入错误的范围。例如,“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 

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

谢谢!

+0

也许只是使用RefEdit控件呢? –

回答

1

你必须把

On Error GoTo ErrHandler 

会抛出异常错误的行之前。

0

如果您需要从用户那里获得一个范围,我建议使用Type.In = 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