マクロ実行中にセルを選択させる
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として受け取ります。
入力・開始時
InputBox上でセル範囲を選択
実行する処理
Type 8の戻り値をSetでRangeへ取得
結果
ブックとシートを含む範囲アドレスを表示
キャンセル時はFalseをSetしようとして発生するエラー424を限定して扱います。範囲の値は変更しません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
デスクトップ版Excelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]を選び、空のモジュールの先頭にこの例全体を貼り付けます。
- 2
選択したいシートをExcel画面で開いておきます。セルの選択だけを行い、値の入力や削除はありません。
- 3
Example7026のSub内にカーソルを置き、F5キーで実行します。
- 4
範囲をドラッグしてOKを押すと、ブック名・シート名を含むアドレスが表示されます。キャンセルでは終了します。