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

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

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

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

きゅう先生

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

f:id:qsuguru:20171126123956j:plain

きゅう先生

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

 

(1) 1行, 1~3列

きゅう先生

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

 

すぐるくん

「今度の問題は、前回とよく似ていますね。」

 

きゅう先生

「そうです。行と列を置きかえただけです。」

 

すぐるくん

「行と列を置きかえただけということは、行番号をカウントアップするためのFor文を、列番号をカウントアップするためのFor文に書きかえればいいということですね。」

 

きゅう先生

「その通りです。」

 

すぐるくん

「今度の問題では、行を1行目に固定にするから行番号を定数で、

 列を1列目から3列目まで1列ずつカウントアップさせるから列番号を変数で、定義します。

 

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

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

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

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

 

  次に、前回つくった行番号をカウントアップするためのFor文を、

 列番号をカウントアップするためのFor文に書きかえます。

 

 『For 列 = 1 To 3

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

  Next』

  と記述します。」

f:id:qsuguru:20171126125408j:plain

きゅう先生

「よくできました。

 

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

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

 

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

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

 

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

 

 つまり、

 『For 列 = 1 To 3

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

  Next』

 とは、

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

定数『行』と変数『列』のセルに対して、文字列『1行』と変数『列』と文字列『列』を文字連結した値を設定するという意味です。

 

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

 

f:id:qsuguru:20171126125827j:plain

すぐるくん

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

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

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

 書きこまれました。」

 

(2) 1行, 1~10列

きゅう先生

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

 

すぐるくん

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

 一つ前の問題は、『列を1列目から3列目まで1列ずつカウントアップ』するのに対して、

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

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

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

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

f:id:qsuguru:20171126134740j:plain

きゅう先生

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

f:id:qsuguru:20171126134926j:plain

すぐるくん

「1行目・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列』が、

 書きこまれました。」

 

(3) 1行, 1~100列

きゅう先生

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

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

 

すぐるくん

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

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

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

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

f:id:qsuguru:20171126135248j:plain

きゅう先生

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

 

f:id:qsuguru:20171126135402j:plain

すぐるくん

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

 

(4) 1行, 1~1000列

きゅう先生

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

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

 

すぐるくん

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

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

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

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

f:id:qsuguru:20171126140015j:plain

きゅう先生

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

 ちょっとその前に、ここで全てのセルの値をクリアする技を伝授します。

 列記号の最も左、行番号の最も上の空白のマスをクリックします。」

f:id:qsuguru:20171126171413j:plain

 すぐるくん

「ほぼ全てのセルの色が暗くなりました。」

きゅう先生

「これは、全てのセルが選択されている状態です。この状態で、『Delete』キーを打ってください。」

f:id:qsuguru:20171126171527j:plain

すぐるくん

「全てのセルの値がクリアされました。」

きゅう先生

「次に、選択されているセルを『A1』に変更します。『Ctrl』と『Home』キーを同時に打ってください。」

f:id:qsuguru:20171126171643j:plain

すぐるくん

「セル『A1』が選択されました。」

きゅう先生

「このように、全てのセルを選択している状態で、『Delete』キーを打てば、全てのセルの値がクリアされます。

 また、『Ctrl』と『A』キーを同時に打ったときも全てのセルを選択している状態になります。こちらも、ためしてみてください。

 それでは、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171126140111j:plain

すぐるくん

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

 

きゅう先生

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

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

 

 

 

 

 

に

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