Excelマクロでラクラクお勉強

Excelマクロで楽して楽しく勉強してラクラク成績アップ

ループ処理で1000行のセルに書きこんでみよう

3. ループ処理で1000行のセルに書きこんでみよう

きゅう先生

「ループ処理をつかって、行番号をカウントアップしながらセルに文字を書きこんでみましょう。」

 

すぐるくん

「ループ処理って、なんですか。」

 

きゅう先生

ループ処理とは、同じ処理を何度もくり返し実行してくれる機能です。」

f:id:qsuguru:20171126015244j:plain

きゅう先生

「ループ処理を行うための構文はいくつかありますが、行番号をカウントアップするときは、For文をおすすめします。」

 

(1) 1~3行, 1列

きゅう先生

「列を1列目に固定して、行を1行目から3行目まで1行ずつカウントアップしていき3つのセルに対して、『X行1列』を設定しましょう。」

 

すぐるくん

「今度の問題は、前回と同じ問題ですね。

 

 列番号の定数名を『列』その値を1として定数宣言します。

 『Const 列 = 1』と記述します。

 行番号の変数名を『行』とし整数型として変数宣言します。

 『Dim 行 As Integer』と記述します。

 

 行番号の変数『行』に1を設定します。

 『行 = 1』と記述します。

 行番号が『行』と列番号が『列』のセルの値として、『1行1列』を設定します。

 『Cells(行, 列).Value = "1行1列"』と記述します。

 

 行番号の変数『行』に2を設定します。

 『行 = 2』と記述します。

 行番号が『行』と列番号が『列』のセルの値として、『2行1列』を設定します。

 『Cells(行, 列).Value = "2行1列"』と記述します。

 

 行番号の変数『行』に3を設定します。

 『行 = 3』と記述します。

 行番号が『行』と列番号が『列』のセルの値として、『3行1列』を設定します。

 『Cells(行, 列).Value = "3行1列"』と記述します。」

f:id:qsuguru:20171126020416j:plain

すぐるくん

「同じような処理を3回も書いています。

 一つにまとめられないのかな。」

 

きゅう先生

「いいところに気がつきましたね。

 同じような処理はループ処理を利用することで一つにまとめることができます。

 『列』の定数宣言と『行』の変数宣言はそのままのこして、

 『For 行 = 1 To 3

   Cells(行, 列).Value = 行 & "行1列"

  Next』

 と打ってみましょう。」

f:id:qsuguru:20171126020737j:plain

すぐるくん

「『行 = 1』以降のコードを、ループ処理に書きかえました。」

 

きゅう先生

「よくできました。

 

 『For 行 = 1 To 3』から『Next』までが、ループ処理のブロックとなっていて、

『Cells(行, 列).Value = 行 & "行1列"』がくり返し実行される処理となっています。

 

 『&』は、左辺の文字列と右辺の文字列を結合する演算子です。

『行 & "行1列"』は、1ずつカウントアップされていく変数『行』と文字列『行1列』を演算子『&』で結合するという意味です。

 

 『For 行 = 1 To 3』は、変数『行』を初期値『1』から終了値『3』まで1ずつカウントアップしていくということです。

 

つまり、

 『For 行 = 1 To 3

   Cells(行, 列).Value = 行 & "行1列"

  Next』

とは、

変数『行』を初期値『1』から終了値『3』まで1ずつカウントアップしながら、

変数『行』と定数『列』のセルに対して、

変数『行』と『行1列』を文字連結した値を設定するという意味です。

 

それでは、いったん全てのセルの値をクリアしてから、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171126021648j:plain

すぐるくん

「1行目・1列目のセルに『1行1列』が、

 2行目・1列目のセルに『2行1列』が、

 3行目・1列目のセルに『3行1列』が、

 書きこまれました。」

 

(2) 1~10行, 1列

きゅう先生

「列を1列目に固定して、行を1行目から10行目まで1行ずつカウントアップしていき10のセルに対して、『X行1列』を設定しましょう。」

 

すぐるくん

「今度の問題も、ループ処理を利用できそうですね。」

 

きゅう先生

「その通りです。実は一つ前につくったマクロを一か所だけ書きかえるだけでいいのです。」

 

すぐるくん

「一つ前の問題は、『行を1行目から3行目まで1行ずつカウントアップ』するのに対して、今度の問題は、『行を1行目から10行目まで1行ずつカウントアップ』するということで、カウントアップの終了値が変わるだけですね。

 For文では、『To』の次に、終了値を記述することになっているから、

さきほどのマクロの『For 行 = 1 To 3』を、

『For 行 = 1 To 10』に書きかえるだけですね。」

f:id:qsuguru:20171126022154j:plain

きゅう先生

「よくできました。それでは、いったん全てのセルの値をクリアしてから、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171126022346j:plain

すぐるくん

「1行目・1列目のセルに『1行1列』が、

 2行目・1列目のセルに『2行1列』が、

 3行目・1列目のセルに『3行1列』が、

 4行目・1列目のセルに『4行1列』が、

 5行目・1列目のセルに『5行1列』が、

 6行目・1列目のセルに『6行1列』が、

 7行目・1列目のセルに『7行1列』が、

 8行目・1列目のセルに『8行1列』が、

 9行目・1列目のセルに『9行1列』が、

 10行目・1列目のセルに『10行1列』が、

 書きこまれました。」

 

(3) 1~100行, 1列

きゅう先生

「ループ処理の終了値を100まで増やします。

 列を1列目に固定して、行を1行目から100行目まで1行ずつカウントアップしていき100のセルに対して、『X行1列』を設定しましょう。」

 

すぐるくん

「今度の問題も、ループ処理を利用する問題ですね。

 For文では、『To』の次に、終了値を記述することになっているから、

さきほどのマクロの『For 行 = 1 To 10』を、

『For 行 = 1 To 100』に書きかえるだけですね。」

f:id:qsuguru:20171126022730j:plain

きゅう先生

「よくできました。それでは、いったん全てのセルの値をクリアしてから、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171126022904j:plain

すぐるくん

「1行目から100行目で、1列目のセルに、『X行1列』が書きこまれました。」

 

(4) 1~1000行, 1列

きゅう先生

「ループ処理の終了値をいっきに1000まで増やします。

 列を1列目に固定して、行を1行目から1000行目まで1行ずつカウントアップしていき1000のセルに対して、『X行1列』を設定しましょう。」

 

すぐるくん

「今度の問題も、ループ処理を利用します。

 For文では、『To』の次に、終了値を記述することになっているから、

さきほどのマクロの『For 行 = 1 To 100』を、

『For 行 = 1 To 1000』に書きかえます。」

f:id:qsuguru:20171126023531j:plain

きゅう先生

「よくできました。それでは、いったん全てのセルの値をクリアしてから、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171126023450j:plain

すぐるくん

「1行目から1000行目で、1列目のセルに、『X行1列』が書きこまれました。」

 

きゅう先生

「このように、For文をつかってループ処理を行えば、多数の行のセルに一瞬で文字を書きこむことができます。

 ためしに、For文の終了値と列番号の定数に設定する値を適当な数字に書きかえて、マクロを実行して、多数の行のセルに文字が書きこまれることを確かめてみてください。」

 

 

 

 

 

に

ほんブログ村 IT技術ブログへ
にほんブログ村