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 に答える