• ベストアンサー

マクロが実行されるセル範囲の変更を簡素化したい

excel 2016を使っています。 例えば、ボタンを押すと指定したセルA1~A10までに入力されている数値を昇順に並べ替えるマクロがあるとします。 この数値が入力されているセルA1~A10の範囲をドラックして、D1~D10の位置に移動すると、マクロが実行される範囲を新たにD1~D10に指定しないとならないのですが、マクロが実行される範囲をA1~A10の範囲に固定して、別の場所に移動してもマクロを修正しなくても良い方法はありますか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

セルA1:A10に名前定義を行い、マクロもその名前定義を使用して作成しては? セル範囲の移動、切り取り・貼り付けなら名前定義は付いていきます。

don-naldo
質問者

お礼

ありがとうございました。 名前定義で解決しました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

問題を質問に模擬実例でも挙げて、さらに文章で説明しないと、回答を出せない。 ーーー プログラムでも一般化・変更や移動フリーで組むのはプロでも難しく、VBAをマクロといっているとか、カンタンにできると思っていること、また質問文の書き振りから推測して、まだ力不足の状態と思う。 やや変更しやすいやり方でも質問するにとどめるべきだ。 端的には、まくろの記録でよく出てくるSelectionを使う方法だが。

don-naldo
質問者

お礼

名前定義で解決しました。ありがとうございました。

回答No.1

お望みの件、若干の矛盾を感じるのですが・・ イメージは「ワークシート関数式を移動したときのように」でしょうか。 > マクロが実行される範囲をA1~A10の範囲に固定して、 > 別の場所に移動してもマクロを修正しなくても良い方法 マクロ(VBA文)の中でA1~A10を指定しているのに、 D1~D10に対して処理が走ったら気持ち悪いですよね。 むしろ、人為的にそのミスが起こらないように 定型的に処理させるのが「マクロ」です。 なので普通に考えると、無いです。 ごくありきたりに「マクロを修正しないで済む」手法を考えるなら、 対象範囲を可変として、ワークシート上で選択している範囲   Selection.動作    あるいは、インプットボックスなどを使って範囲指定させる、   Set Target = Application.InputBox("コメント", Type:=8)   Terget.動作 あとは考えようですが フォーカスがある列内の、決まった行範囲について   Range(Cells(1, Selection.column), Cells(10, Selection.Column)).動作 などについて処理をするマクロでも作るかぁ、 という辺りに落ち着くような気がします。 なお、世の中にはマクロを書き換えるマクロも存在するようです。 私はオススメしないので、紹介はしません。

don-naldo
質問者

補足

ご回答ありがとうございます。 教えていただいた方法はこれから試してみますが、取り急ぎ希望するイメージを記載します。 仰る通りでイメージとしてはワークシートの関数式を移動しても参照先が変わらないのと同じようにマクロが実行される範囲が自動で変わってもらいたいです。

関連するQ&A

  • マクロのセルの範囲指定

    お世話になります。マクロ初心者です。エクセルの業務でマクロを作成しようとしているのですが、マクロ実行で、セルの範囲が指定される方法はありますか?例えば シート名  開始  終了  Sheet1   A1  D10 を入力して、ボタンを押したらA1からD10までのセルが選択されることです。説明不足ですみません。宜しくお願いします。

  • Excel2000:マクロのセル範囲の変更方法について

    マクロの自動記録でセルを範囲指定しグラフを作成したので、VisualBasicEditorで開くと、実行するセル範囲が固定されています。範囲を固定しないでマクロを実行したときに次に選択されている範囲に対して実行できるようにする方法を教えてください。VBA初心者になります。どうぞよろしくお願いいたします。

  • Excelのマクロを使わず、数式内のセル指定範囲をダイナミックにすることはできますか?

    Excelで数式内に範囲を指定するときに、先頭と最後尾のセル番地を指定しますが、他のセルで指定した数値を指定したセル番地の行数に指定することはできますか? 例えば、以下のようなサンプルにおいて A B C D 1 10 2 4 2 32 3 42 4 20 5 17 6 =sum(A2:A4) C1番地に2、D1番地に4を入力すると自動的に A6番地でA2~A4の範囲を指定して足し算してくれるようなことをマクロを使わずに実現できるでしょうか?

  • マクロで複数のセルに数値を入力したい

    エクセル、マクロとも初心者なのですが、タイトル通りのことをするにはどうしたらよいか教えてください。 やりたいことは、 「指定したアクティブセル(毎回変わる)を選択し、その隣のセルにあらかじめ決められた数値をマクロで入力する」というものです。 例えば・・・ A1をアクティブにし、マクロを実行する B1、C1、D1、E1のセルに決められた数値が入力される こんな感じです。 基本的なことかもしれませんが、どうかよろしくお願いします。

  • 結合したセルの合計を反映させるマクロ

    Excel 2007 Windows10を使用しています。 セルにはあらかじめ数値が入力されていて、 結合したいセルの範囲を指定して結合した時に、 その合計を結合したセルに反映させたいと考えています。 結合したいセルの範囲を指定するところまでは手動で、 「セルを結合して合計を反映させる」 部分をマクロで実行する事はできるでしょうか? なお、結合するセルは毎回違うので、 セルの位置を指定する事はできません。 ご存知の方がいらっしゃいましたら、 よろしくお願い致します。

  • マクロ 実行ボタンを押さずに常に実行

    マクロを常に実行することはできますか? 「常に実行」という表現が適切か分からないのですが、 例えば・・・・・・ A1~A10まで数値を入力する表があり、それをD1~D10にコピー・貼り付けを行う[貼り付け]マクロがあります。 Sub 貼り付け() ' 貼り付け Macro Range("A1:A10").Copy Range("D1") End Sub これを、[貼り付け]マクロの実行ボタンを押して実行するのではなく、 A1~A10に数値を入力する毎に[貼り付け]マクロ実行される(D列に数値が入る)事は可能でしょうか? よろしくお願いします。

  • エクセル 特定セルの表示拡大マクロ

    エクセル2010のマクロについて質問させていただきます。 特定セルが選択された場合のみ表示を140%に拡大し、そのほかを選択した場合は100%に戻すマクロをご教授願います。 具体的な例としては エクセル A1~E4 で表を作成しています。 入力セルは A2,B2,C2,D2,E2,A4,B4,C4,D4,E4 の10カ所に数値を入力します。 上記10カ所を毎回選択するのか面倒なので「名前の管理」で10カ所を選択しています。 エクセルファイルを開くと10カ所を選択するマクロを実行しています。 その10カ所を範囲指定した中で選択セルを「Enter」で送っていき、「D2」もしくは「D4」セルを選択した場合のみ、表示倍率を上げそのほかのセルを選択した場合は表示倍率を戻すマクロをご教授願います。 名前の管理(範囲指定)を実行せずに、単にセルだけを選択した場合のマクロは作成できたのですが、範囲指定した中でのセル選択ではマクロが実行されませんでした。 単にセルだけを選択した場合拡大するマクロを記述しますので、よろしくお願いします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address() = "$D$2" Or Target.Address() = "$D$4" Then ActiveWindow.Zoom = 140 Else ActiveWindow.Zoom = 100 End If End Sub マクロを学び始めて間もないため、初歩的なミス、見当外れな質問をしてしまうかもしれませんが、何卒よろしくお願いします。

  • エクセルでセルの値が変更されたらマクロを実行

    エクセルで、セルの値が変更されたらマクロを実行したいと考えています。 具体的には、A1のセルに何か値が入力されるか、変更されたら、 作成したマクロを実行したいと考えています。 どうしたらいいのでしょうか。 ご教授ください。 よろしくお願いします。

  • セルの値変更でマクロ実行

    セルに値を入力すると、他のシートで演算され結果がセル"A1"にTRUE、FALSEと表示される関数式ができています。 セル"A1"の変化によりマクロ実行させたいと思います。プログラムの案をお願いします。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

専門家に質問してみよう