マクロでわからないことがあるので教えていただけないでしょうか?
(1)計算式を入力
(2)オートフィルでコピー
(3)並べ替え
このようなマクロを作りたいのですが、行を追加してもちゃんとオートフィルと並べ替えができるようにしたいのです。
過去の「教えてgoo」に載っていたものをコピーしてVBに貼り付けたら、オートフィルはできるようになったのですが、並べ替えがうまく実行されません。
どうも範囲がおかしいように思うのですが、もともとVB言語の意味がわかっていないので、どう変更すればいいのかさっぱりわかりません・・・
以下は、現在のマクロの記述です。セルI7を基準にして、H列も一緒に並べ替えたいと思っています。H列とI列は行が増えたり減ったりします。
勉強不足ですいませんが、教えてください。よろしくお願いいたします。
-------------------------------------------------------
Sub 計算→並べ替え()
'
' 計算→並べ替え Macro
' マクロ記録日 : 2006/12/1 ユーザー名 : ○○
'
ActiveCell.FormulaR1C1 = "=MOD(RC[-1],5)"
Range("I7").AutoFill Destination:=Range("I7", Range("H65536").End(xlUp).Offset(, 1))
Range("I7").Select
Range("H6:I13").Sort Key1:=Range("I7"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
End Sub
-------------------------------------------------------
No.1ベストアンサー
- 回答日時:
4行目のこの部分が問題です。
>Range("H6:I13").Sort Key1:=Range("I7"),...
これだと"H6:I13"の範囲しかソートしません。
この部分が所定の範囲になるように修正する必要があります。
とりあえず、オートフィルにした範囲をソートするならば、
>Range("I7:H65536").Select
>Range(Selection, Selection.End(xlUp)).Select
>Selection.Sort Key1:=Range("I7"),...
こんな感じで範囲設定の式を2行追加、Rangeの行を修正・・・ですかね。
他にももっと上手い方法はありそうですけど・・・。
ご返答ありがとうございました。お礼がおそくなってすいません。
教えていただいたとおりにコードを変更したら、うまくいきました!
思い通りのマクロが組めて感激です♪
ありがとうございました。
また何かありましたら教えてください。よろしくお願いいたします。
No.2
- 回答日時:
こんにちは。
もし、本当に、「とりあえず」でしたら、
Range("H6:I13").Sort
↓
Range("H6").Sort
(必ずしも、上手くいくとは限りません。CurrentRegion と同じ機能がありますから、不要な部分も巻き込んでしまうことがあります。)
とすればよいのですね。ただ、一般的に、問題は、"Header:= xlGuess" の部分になりますね。つまり、このコードを見る限りは、ヘッダーが付いているようですから、そこは、"Header:=xlYes" ということになりそうです。
それから、
ActiveCell.FormulaR1C1 = "=MOD(RC[-1],5)"
↓
Range("I7").FormulaR1C1 = "=MOD(RC[-1],5)"
となるようです。
>Range("I7").Select
これは必要ありません。
ただ、全体的になんとなく奇妙な感じがします。
理由は、ActiveCell.FormulaR1C1 = "=MOD(RC[-1],5)" という数式を入れる部分にあります。マクロの場合は、相対参照式なので、最初から数式を代入してしまってもよいかもしれません。
例:
Sub TestPrc()
Range("H7", Range("H65536").End(xlUp)).Offset(, 1).FormulaR1C1 = "=MOD(RC[-1],5)"
Range("H6", Range("H65536").End(xlUp)).Resize(, 2).Sort _
Key1:=Range("I7"), _
Order1:=xlAscending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, _
DataOption1:=xlSortNormal
End Sub
私の想像の範囲で作ったので、実際には上手くいかないかもしれません。また、もう少し省略できるけれども、いやらしくなりそうな気がしましたので、やめました。それから、みやすくするために、以上のようなコードの並べ方をしたほうがよいです。
ご返答ありがとうございました。お礼がおそくなってすいません。
ご指摘のとおり最初の計算式は、マクロを記録する前にセルI7を選択してしまったので、次からマクロを実行するときにセル番地がずれてしまうところでした。
投稿した後で気づいたのですが、それを訂正するのに苦労したので、正しいコードを教えてくださって助かりました。
ありがとうございました。
ヘッダーの部分などは、せっかく教えていただいたのですが、よくわからなかったので、勉強して理解できるようにがんばります。すいません(>_<)
また、コードをそのままコピーしたので、見にくくなってしまってすいませんでした。次からは気をつけます。
おかげで思い通りのマクロを組むことができました。ありがとうございました。
また何かありましたら、教えてください。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) 正規表現を用いての並び替え 7 2022/04/04 09:27
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
EXCELのVBAでRange("A1:C4")を...
-
一つのTeratermのマクロで複数...
-
Excel VBAからAccessマクロを実...
-
メッセージボックスのOKボタ...
-
非表示の列をすべて削除するマクロ
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
VBA アドインについて お詳しい...
-
TERA TERMを隠す方法
-
マクロで空白セルを詰めて別シ...
-
EXCELマクロでのThisisWor...
-
サクラエディタ・マクロ → VSCo...
-
エクセルマクロ自動更新
-
[初心者です]VBAで指定列か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報