← コード一覧へ戻る
実務ダイアログ

マクロ実行中にセルを選択させる

Application.InputBoxのType 8でセル範囲を選んでもらい、Rangeとして受け取ります。

実行前に確認

  • Type 8の戻り値をRangeに入れるにはSetが必要です。キャンセルのFalseをSetしようとするとエラー424になります。
  • Resume NextはInputBoxの1回の取得に限定し、すぐErrを保存して解除します。以降の処理のエラーを無視しません。
  • 選択したセルの値は変更しません。別ブックや複数領域を許可しない処理へ応用するときは、対象をさらに検証します。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub Example7026()
    Dim picked As Range
    Dim errorNumber As Long
    Dim errorText As String
    On Error Resume Next
    Set picked = Application.InputBox("対象範囲を選んでください", _
                                       "範囲選択", Type:=8)
    errorNumber = Err.Number
    errorText = Err.Description
    On Error GoTo 0
    If errorNumber = 424 Then
        MsgBox "選択をキャンセルしました"
        Exit Sub
    End If
    If errorNumber <> 0 Then
        MsgBox "選択できませんでした:" & errorText
        Exit Sub
    End If
    If picked Is Nothing Then Exit Sub
    MsgBox picked.Address(External:=True)
End Sub

図で見るマクロ実行中にセルを選択させるの流れ

イメージ図

Application.InputBoxのType 8でセル範囲を選んでもらい、Rangeとして受け取ります。

  1. 入力・開始時

    InputBox上でセル範囲を選択

  2. 実行する処理

    Type 8の戻り値をSetでRangeへ取得

  3. 結果

    ブックとシートを含む範囲アドレスを表示

キャンセル時はFalseをSetしようとして発生するエラー424を限定して扱います。範囲の値は変更しません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    デスクトップ版Excelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]を選び、空のモジュールの先頭にこの例全体を貼り付けます。

  2. 2

    選択したいシートをExcel画面で開いておきます。セルの選択だけを行い、値の入力や削除はありません。

  3. 3

    Example7026のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    範囲をドラッグしてOKを押すと、ブック名・シート名を含むアドレスが表示されます。キャンセルでは終了します。

使っている機能の公式ドキュメント(Microsoft Learn)