【ExcelVBA入門】繰り返し処理2/3【覚悟はいいか?俺は出来てる!】

前回は転記の際に複数の行、列を一気に転記する方法を紹介しましたが、もっと楽にコードを書く方法を紹介するよ!
楽になるの?
えな
そう同じ機能をもっとシンプルなコードで実現できる方法があるんだ。
よみぞう
なんで、最初に言わないの!
えな
いや、最初に言うとえなが頭ごちゃごちゃになっちゃうから
よみぞう
あ、そうなんだ
えな
素直か!
よみぞう
はい、じゃあ今回も張りきっていこう!
よみぞう
おー!
えな
まずは動画をチェックしてくれよな!
- おさらい
- ぶっちゃけもっと楽したい
- ForNextの中のForNext。マトリョーシカ的イメージ
- ローカルウィンドウ。新たなる夜明け。
- まとめ
おさらい
はい、前回はこの「ForNext1」で、繰り返し処理を学習しました。
一応前回のおさらいをさらっと。
ForとNextで囲まれた塊をForNext構文といいます。これは、ForとNextの間の処理を i を一つずつ増やしながら、指定された回数分だけ繰り返すという激アツな処理でした。
(例で言うと1から11まで)ここまではいいですね?
ぶっちゃけもっと楽したい
今回はこのコードをもっとシンプルにかけないか?。考えてみましょう。これは、今まで学んできた知識から導き出すことができます。
勘のいい人はもう思いついているんじゃないかな?
よみぞう
いや、何も思いつかない!
えな
お前には言ってねぇ!
よみぞう
あちゃー
えな
では、考えてみましょう!前回のコードを実際に書くときにどこが面倒くさそうですか?
ぜ、全部?
えな
バシッ!
よみぞう
!…
えな
まぁここですよね!
同じようなコードを13列も書かなきゃいけないって面倒ですよね。
でも、⇧ここの数字に注目して下さい。1列目から13列目までという意味ですが、1から13まで一つずつ順番に増えていますよね?…なんかピンと来ませんか?
んーん。全然ピンと来ない!
えな
だから、お前には言ってねぇ!
よみぞう
あべし
えな
そう!これもForNextが使えそうですよね?
ForNextの中のForNext。マトリョーシカ的イメージ
はい、それを使ったコードがこちらに用意したForNext2です。なんか3分クッキングみたいになっちゃいましたけど。
そうだね!うふふ、ぐふふふふ、ぐふふふふ
えな
いや、笑いすぎだな。そんな面白くないよ
よみぞう
えー?
えな
はい、何が変わったか、確認しましょう。まぁここ↓ですよね。
ForNextの中にさらにForNextが入ってます。外側のForNextは前回と一緒です。内側が新しく書いたコードです。はい、前回のおさらいも兼ねて読んでみましょう。
forの後ろみると j = 1 to 13と書いてます。はい、変数 j が新たにでてきました。
一旦上の、変数の宣言のとこ見て下さい。
i の後ろに、カンマで仕切られて変数 j が追加されていますね。同じ種類の変数を複数宣言するときはこのように、カンマで区切って書けば、まとめて宣言出来ます。覚えていて下さい。同じ種類ということなんで、j は i と同じ数字の変数です。
では、また、下に戻って、Forの後ろ。繰り返し処理を行いながら、変数 j に1~13までの数字を代入する。という意味ですね。何を繰り返すのか?中身見てみましょう。
「この、エクセルファイルの、シート1枚目の i 行目の j 列目に、開いたファイルの i 行目の j 列目を代入する」
という意味です。前回のコードの
この部分を↓のように
変数 j に置き換えて、ForNextで繰り返ししているんですね。まだ、イメージできないひとのために、また、F8で1行ずつ実行していきましょう。
↓jの値
転記処理のところが見たいので、既にこの黄色い行の手前まで実行した状態からスタートします。黄色い行が次に実行する行です。では実行してみましょう。1巡目なので、i は1、jも1が代入されています。
(F8で実行)
次またここに戻ります。今、i は 1、j は2巡目なので2が代入されています。
F8で実行
同じように、iが1、jが3(F8を押しながら)という具合にコードが実行されていきます。
jが13回繰り返したら、やっとiの1巡目が終わり、2巡目の繰り返しが始まります。
そして、再度jの繰り返し処理が1~13まで行われます。と、まぁこのように、前回と全く同じ処理が同じ順番で行われます。なんとなくわかりましたか。この辺は動画の方が分かりやすいかもしれません。
ローカルウィンドウ。新たなる夜明け
表示⇒「ローカルウィンドウ」と進むと、
こんな画面がコードウィンドウの下に出てきます。書く変数の情報が書いてますので、ここも確認してみて下さい。
まとめ
このように、繰り返し処理の中にさらに繰り返し処理を書くことをネストといいます。入れ子という意味ですね。ネストの場合にどんな動きになるのか。今回で確認できたと思います
。
動きを確認する場合は動画の方がいいかもしれない。動画もチェックしてみてね!