Applicationオブジェクトの持つInputBoxメソッドを使って、マクロの実行中にセルを選択してもらうコードをご紹介しています。
これに関連した
「vba application inputbox type8 選択 1セルだけ」
という検索キーワードでアクセスがありました。
マクロ実行中にセルを1つだけ選択してもらうサンプル
以下のSubプロシージャが参考になるでしょう。
Dim rng As Range
Do
On Error Resume Next
Set rng = Application.InputBox( _
Prompt:="セルを1つだけ選択してください。", _
Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
Loop Until rng.Count = 1 MsgBox rng.Address(False, False)
End Sub
上記のSubプロシージャを実行すると、セルが1つだけ選択されて[OK]ボタンがクリックされるまで、
「セルを1つだけ選択してください。」
という指示のインプットボックスが表示され続けます。
サンプルマクロで行っている処理
Application.InputBoxメソッドの、引数Typeに8を指定して、セル参照だけが可能なインプットボックスを表示し、
Set rng = Application.InputBox( _
Prompt:="セルを1つだけ選択してください。", _
Type:=8)
その戻り値を、Range型のオブジェクト変数rngに、代入しています。
Set rng = Application.InputBox( _
Prompt:="セルを1つだけ選択してください。", _
Type:=8)
インプットボックスの[キャンセル]ボタンがクリックされたときに、実行時エラーが発生するのを回避して、Subプロシージャを終了する部分は、
On Error Resume Next
Set rng = Application.InputBox( _
Prompt:="セルを1つだけ選択してください。", _
Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
Application.InputBoxメソッドを使う場合の、定番の処理です。
以上のような処理を「RangeコレクションのCountプロパティが1を返すまで」という条件の、
Do
Loop Until rng.Count = 1
Do~Loop文の中に入れています。
最終更新日時:2019-05-16 14:38
- Newer:Pythonで末尾のn文字を削除する
- Older:Pythonで先頭のn文字を削除する
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Application.InputBoxでType:=8指定時にセルを1つだけ選択してもらうには