- ベストアンサー
Excelマクロの繰り返しの書き方
- Excelマクロで、B4行からB100行まで特定の操作を繰り返す方法について教えてください。
- For NextやDo loopを使用して繰り返し処理を行いたいが、セル内の書式について理解ができません。
- また、別の操作も同様に繰り返したい場合もあります。Excelのversionは2019です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず Range("B4").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove これはselectしてそのselectされたセルにinsertしているが,いちいちselectする必要はない。したがって Range("B4").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove で十分です。次に繰り返しですが,Range("B4")の行を2行おきに100までということだと思う。直接にB4を変化させてもよいが,私ならoffsetを使う。つまり Range("B4").Offset(2)でRange("B6")と同じことになるのです。後はこの2を変数にして For i=2 To 100 Step 2 Range("B4").Offset(i).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Next i とすればよい。 Deleteの方もまず Range("A5").Select Selection.EntireRow.Delete ではなくて Range("A5").EntireRow.Delete とすべきです。そして上と同じように書き換えればよいのだが,5行目を削除したら元の6行目は5行目になっていますよ。つまり上のセルから順に削除していくのは削除後にどうなっているかを考えないといけないので面倒です。下の方の行から順に削除すればそういうことを考えないで済みます。したがって5行目から54行目までを削除するのなら For i=49 To 0 Step -1 Range("A5").Offset(i).EntireRow.Delete Next i とします。なお,一応ループさせるコードが欲しいようだからこのようにしたのだが,この場合には一気に Range("A5").Resize(50).EntireRow.Delete の方がもっとよい。
その他の回答 (1)
- skp026
- ベストアンサー率45% (1010/2238)
以下のようなCellsを使ったサンプルが 参考になると思います。 https://www.e-sanwa.co.jp/sbs/column/20170907/ Rangeにする必要があるなら以下を参考ください。 https://qiita.com/e-katayama/items/97024a58b891507af632 ※ 以下はoffsetを使った別の方法です。 http://www.start-macro.com/55/w/s035.html ※ 以下のようなキーワードで検索すると、今回の件に関係する 情報は集めやすいと思います。 Excel vba ループ セル位置移動 以上、参考にならなかったらごめんなさい。