- ベストアンサー
マクロが実行されるセル範囲の変更を簡素化したい
excel 2016を使っています。 例えば、ボタンを押すと指定したセルA1~A10までに入力されている数値を昇順に並べ替えるマクロがあるとします。 この数値が入力されているセルA1~A10の範囲をドラックして、D1~D10の位置に移動すると、マクロが実行される範囲を新たにD1~D10に指定しないとならないのですが、マクロが実行される範囲をA1~A10の範囲に固定して、別の場所に移動してもマクロを修正しなくても良い方法はありますか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
セルA1:A10に名前定義を行い、マクロもその名前定義を使用して作成しては? セル範囲の移動、切り取り・貼り付けなら名前定義は付いていきます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
問題を質問に模擬実例でも挙げて、さらに文章で説明しないと、回答を出せない。 ーーー プログラムでも一般化・変更や移動フリーで組むのはプロでも難しく、VBAをマクロといっているとか、カンタンにできると思っていること、また質問文の書き振りから推測して、まだ力不足の状態と思う。 やや変更しやすいやり方でも質問するにとどめるべきだ。 端的には、まくろの記録でよく出てくるSelectionを使う方法だが。
お礼
名前定義で解決しました。ありがとうございました。
- tsubu-yuki
- ベストアンサー率46% (179/386)
お望みの件、若干の矛盾を感じるのですが・・ イメージは「ワークシート関数式を移動したときのように」でしょうか。 > マクロが実行される範囲をA1~A10の範囲に固定して、 > 別の場所に移動してもマクロを修正しなくても良い方法 マクロ(VBA文)の中でA1~A10を指定しているのに、 D1~D10に対して処理が走ったら気持ち悪いですよね。 むしろ、人為的にそのミスが起こらないように 定型的に処理させるのが「マクロ」です。 なので普通に考えると、無いです。 ごくありきたりに「マクロを修正しないで済む」手法を考えるなら、 対象範囲を可変として、ワークシート上で選択している範囲 Selection.動作 あるいは、インプットボックスなどを使って範囲指定させる、 Set Target = Application.InputBox("コメント", Type:=8) Terget.動作 あとは考えようですが フォーカスがある列内の、決まった行範囲について Range(Cells(1, Selection.column), Cells(10, Selection.Column)).動作 などについて処理をするマクロでも作るかぁ、 という辺りに落ち着くような気がします。 なお、世の中にはマクロを書き換えるマクロも存在するようです。 私はオススメしないので、紹介はしません。
補足
ご回答ありがとうございます。 教えていただいた方法はこれから試してみますが、取り急ぎ希望するイメージを記載します。 仰る通りでイメージとしてはワークシートの関数式を移動しても参照先が変わらないのと同じようにマクロが実行される範囲が自動で変わってもらいたいです。
お礼
ありがとうございました。 名前定義で解決しました。