VBAを使ってマウスで任意の範囲を選択させる方法
VBAで処理させたいデータのセルの範囲を任意で選択させたいことがありませんか?
ということで任意の範囲を選択させてみようと思います。
サンプルコード
Sub selectRange() Dim cellRange As Range On Error Resume Next Set cellRange = Application.InputBox("処理範囲をドラッグして選択してください", "処理範囲の指定", Type:=8) If cellRange Is Nothing Then Exit Sub cellRange.Select End Sub
解説
Inputboxでキャンセルが押下されたときのためのおまじない。(キャンセル押下されるとFalseが返ってくるから実行時エラーになっちゃう)
On Error Resume Next
「Type:=8」でセル参照が可能になります。あとは戻り値がRangeオブジェクトなので変数に代入する際にSetを忘れずに!
Set cellRange = Application.InputBox("処理範囲をドラッグして選択してください", "処理範囲の指定", Type:=8)
キャンセル押されて4行目のおかげで実行時エラーにならずにこの処理まで抜けてきた場合にNothingが変数に格納されてるので処理終了させるためのおまじない。
If cellRange Is Nothing Then Exit Sub
コメント
質問なのですが、このコードを記載して動かすと、アクティブページは問題なくコピーできるのですが、別シートの選択はできませんでした。改善方法はありますか?
コードを実行したシート以外のシートを選択したいという意図でしょうか?
そうであれば選択した際に選択範囲に「シート名!」が付与されるため問題ないと思いますのでもしかしたら質問の意図とずれているかもですが。。。
以下のコードで「結果」シート上でコードを実行して別のシート範囲を選択した場合に、「結果」シートに別シートの範囲の値を貼り付けることが可能です。