9

次のコードがあります。

dim selectRange as Range
Set selectRange = Application.InputBox("Select your range", "Hello", , , , , , 8)

ユーザーが InputBox プロンプトの [キャンセル] を選択すると、 が返されますerror of Object not set

Variant 変数型を使用しようとしましたが、処理できません。キャンセルのFalse場合は 、範囲選択の場合はInputBoxのRangeを返します。

このエラーを回避するにはどうすればよいですか?

4

6 に答える 6

9

これは、入力ボックスで範囲を選択するときの問題です。Excel は範囲が返される前にエラーを返し、キャンセルを押すとこのエラーが発生します。

したがって、このエラーを積極的に処理する必要があります。キャンセルを押したときに何も起こらないようにしたい場合は、次のようなコードを使用できます。

Sub SetRange()
    Dim selectRange As Range

    On Error Resume Next
        Set selectRange = Application.InputBox("Select your range", "Hello", , , , , , 8)
    Err.Clear
    On Error GoTo 0
End Sub 
于 2013-10-26T17:22:39.603 に答える
1

あなたが言及した「オブジェクトが必要です」というエラーを確認することは、キャンセルを処理する 1 つの方法であることがわかりました。

On Error Resume Next
dim selectRange as Range
' InputBox will prevent invalid ranges from being submitted when set to Type:=8.
Set selectRange = Application.InputBox("Select your range", "Hello", , , , , , 8)
' Check for cancel: "Object required".
If Err.Number = 424 Then
    ' Cancel.
    Exit Sub
End If
On Error GoTo 0
于 2015-10-14T22:26:41.810 に答える