• 締切済み

Excelマクロの変化するデータ範囲の記述の方法

初心者です。データ並べ替え(昇順)を自動実行するマクロを作成したいのですが、データ範囲が増減しても正しく実行できるようにするにはどうすればよいでしょうか。マクロの自動記録で作成しましたが、visual basic editorで範囲の修正する箇所を教えてください。

みんなの回答

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

もう既に回答があるのもあるが (1)・・.End(xlup).Rowで最下行を捉える。=>範囲Rangeにする。 (2)CurrentRegionで範囲を採る (3)UsedRangeで範囲を採る (4)Selectionのままにして、ユーザーが実行全に前に指定させる。   Userに範囲指定させる。 (6)InputBoxメソッドで範囲指定させる。 Set r = Application.InputBox("範囲指定", タイトル, Type:=8) などが考えられます。 (4)(5)も場合によっては、良さは有ります。 おれぞれの語句で、WEB照会すれば、沢山コード例が出てきます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

このようなマクロでしょうか  Range("A1:C10").Select  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,_     Header:=xlGuess, OrderCustom:=1, _     MatchCase:=False, Orientation:=xlTopToBottom, _     SortMethod:=xlPinYin, DataOption1:=xlSortNormal 先頭の行を以下の  Range("A1:C" & activesheet.range("A65536").end(xlup).row).select とすれば、A列の最終行までを並べ替えの範囲とすることができます また、先頭の行を  Range("A1").CurrentRegion.Select にすればA1を含む表全体を選択するという方法もあります 実際のマクロがないので参考にして修正してください

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

今あるマクロを見せていただけないと、どこをどう修正すればいいかはなんとも言えないのですが…。 もし並び替えする範囲の選択を Range("A1:A10") のように指定しているなら、 Range("A1", Range("A65536").End(xlUp)) のようにしてみてはいかがでしょうか。

回答No.1

例えば、下記のように記述します。 Sheet1.Range("A1").CurrentRegion.Sort _  Key1:=WS2.Range("A2"), Order1:=xlAscending, _  Key2:=WS2.Range("B2"), Order2:=xlAscending, _  Key3:=WS2.Range("C2"), Order3:=xlAscending, _  header:=xlYes ※CurrentRegion プロパティは表範囲全体を表します。

関連するQ&A

  • EXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか?

    EXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか? EXCEL2007を使っています。 マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか? シート1 1 3 2 というデータを「マクロの記録」で昇順に並べ替えるマクロを作成します。 シート2 3 5 4 というデータに適用したいのですが、マクロを実行するとシート1のデータが 並べ替えられてしまいます。 マクロを読むと「シート1」という記述があるのでシート1にしか適用できないようです。 マクロの記録だけで別のシートにも適用できるマクロを作成できないでしょうか? (ただの並べ替えだけだったらマクロを作成する必要はないのですが、実際にはもっと複雑な 動作をさせたいのです)

  • 範囲指定して並べ替えするマクロが有効に働かない

    マクロ初心者です。宜しくお願いします。 範囲指定して並べ替え(昇順)をしたいのですが 一番上の行が並べ替えの範囲指定から漏れているのか正しく並べ替えができず データの2行目から並べ替えがスタートしています。 手動で行う場合、データ範囲の先頭行を、「タイトル行」と「データ行」を指定できますが問題が起こるのはこの関係でしょうか? ■以下式をマクロの記録から作成しました ■マクロの範囲指定自体には問題ありません ■この動作を、範囲を変えて繰り返していますが、正しく並び替わる場合とそうでない場合があります ■繰り返しの式は、範囲を変えているだけで他は全て同じです ■書式は全て数値になっています ■同じ操作を手動でやると問題なく並べ替えができます どなたか解決方法があれば教えてください。 Selection.AutoFilter Field:=50 Range("AS8:BF1000").Select Selection.Sort Key1:=Range("AX8"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal

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

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

  • マクロを使い選択範囲を次々と変えて並べ替えたい

    マクロ作成は 範囲選択 A4~G12 マクロ記録開始 並べ替え E列 降順 マクロ記録終了 でマクロを作成し 次に範囲選択 A14~G22でこのマクロを実行すると範囲選択が前と同じA4~G12が並べ替えられてしまいます。 マクロの中を見ると範囲選択 A4~G12が書かれてしまっています。 次のように、選択範囲を次々と変えて並べ替えるマクロを作りたいのですがお教え願います。 1. 範囲選択 A4~G12を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 2. 範囲選択 A14~G22を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 3. 範囲選択 A28~G32を選択 マクロ実行で選択範囲をE列の値で降順並べ替える

  • エクセルのマクロを使ったファイルが他のPCで動きません。

    マクロ超初心者です。 マクロは自動記録で登録しました。 40個くらいのマクロを自動記録して、 それを連続して実行できるようにしました。 自分のPCでは問題なく作動します。 そのエクセルファイルをメール添付で友人に送りました。 ところが友人のPCではエラーになり実行できません。 「実行時エラー1004 runメソッドは失敗しました。applicationオブジェクト」 と表示されるそうです。 個々のマクロを単独で実行しても出来ません。 そこで送ったファイルと同じファイルのマクロを全てエクスポートして そのファイルを友人に送り、それをインポートしてもらいました。 Visual Basic Editorで確認してもらうとそのファイルはインポートされたようですが、上記のエラーになります。 マクロのファイルは「module1.bas」のような標準モジュールです。 どうすればマクロを実行できるようになりますか? 初心者でも分かるような回答をよろしくお願いいたします。

  • EXCELでマクロが効かない

    突然毎日使っているエクセルのマクロが動かなくなりました。 「実行時エラー9 インデックスが有効範囲にありません」となります。 自分で作ったものでないのでマクロを見てもどれだかわかりません。 システムの復元を数か所試しましたが、変わりません。 ウインドウズの自動アップデート中に、パソコンが動かないので、私がエクセルを終了させたのが原因のようです。 マクロは10個くらいありますがどれだかわかりません。 修正の方法が有ればお教えください。 (株価をyahooからダウンロードするマクロです)

  • エクセルでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願いします。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • EXCELでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願い致します。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • エクセル2007でのマクロの記録

    マクロ初心者です。しょうもない質問で申し訳ありません。 エクセル2007で並び替えをマクロに記録させても並び替えが実行できません(エクセル2003は可能でした)。 例えば・・・マクロの記録を実行→B4セルから下に10~1の数字を入力→その後並び替えボタンをクリックし、昇順で1~10に並び替える→マクロの記録を停止。確認のため、シート2でマクロを実行。数字は入力されるが、並び替えがおこなわれません(T_T) エクセル2007では並び替えのマクロは記録できないのでしょうか??それとも不具合ですか?もし簡単に出来る方法等があるなら教えて頂ければ幸いです。 お手数をおかけしますが、どなたかご回答を頂けると幸いです。

  • エクセルのマクロで...

    エクセルのマクロなのですが、うまく実行されません。 sheet1・sheet2とシートがあって、 sheet1のデータを範囲にして、既存のワークシート に保存の形でsheet2にピボットテーブルを作成し、 できたピボットテーブルの、フィールドを"表示しない" にする、というマクロを作成し、実行したのですが、 ピボットテーブルは作成できるところまでは実行される のですが、「フィールドを"表示しない"」が 出来ません。なぜがsheet1の元のデータがデリート されてしまいます。 マクロ初心者なので、困っています。 どなたかご存知でしたらお願いします。

専門家に質問してみよう