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

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

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

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

きゅう先生

「ループ処理をつかって、X行×Y列のセルに文字を書きこんでみましょう。」

 

すぐるくん

「X行×Y列のセルに文字を書きこむということは、行番号をカウントアップしながらセルに文字を書きこむループ処理と列番号をカウントアップしながらセルに文字を書きこむループ処理を組み合わせるということですね。」

 

きゅう先生

「その通りです。Excelマクロでは、二つ以上のループ処理を組み合わせることもできます。行番号をカウントアップするループ処理と列番号をカウントアップするループ処理を組み合あわせるときは、次のような構文になります。」

f:id:qsuguru:20171126200032j:plain

(1) 1~3行, 1~3列

きゅう先生

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

  

すぐるくん

「まず、『行』と『列』の変数宣言をします。

 『Dim 行 As Integer』、

 『Dim 列 As Integer』

 と記述します。

 

『行を1行目から3行目まで1行ずつカウントアップ』するということから、

開始行は『1』、終了行は『3』となり、

行に関するFor文は、

 『For 行 = 1 To 3

    -----

  Next』

  になります。

 

『列を1列目から3列目まで1列ずつカウントアップ』するということから、

開始列は『1』、終了列は『3』となり、

列に関するFor文は、

 『For 列 = 1 To 3

    -----

  Next』

  になります。

 

『セルに対して、『X行Y列』を設定』するということから、

処理は、

『Cells(行, 列).Value = 行 & "行" & 列 & "列"』

 になります。

 

 次に、『行と列の二つのループ処理を行うための構文』を参考にしながら、

二つのFor文と処理を組み合わせていきます。

 『For 行 = 1 To 3

     For 列 = 1 To 3

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

     Next

  Next』

  と記述します。」

f:id:qsuguru:20171126200701j:plain

きゅう先生

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

 

f:id:qsuguru:20171126200812j:plain

すぐるくん

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

 

(2) 1~10行, 1~10列

きゅう先生

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

 

すぐるくん

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

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

 さきほどのマクロの

 『For 行 = 1 To 3』を、

 『For 行 = 1 To 10』に

 『For 列 = 1 To 3』を、

 『For 列 = 1 To 10』に

  書きかえるだけですね。」

f:id:qsuguru:20171126201413j:plain

きゅう先生

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

 

f:id:qsuguru:20171126201733j:plain

すぐるくん

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

 

(3) 1~100行, 1~100列

きゅう先生

「100行×100列のセルに対して、『X行Y列』を設定しましょう。」

 

すぐるくん

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

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

 さきほどのマクロの

 『For 行 = 1 To 10』を、

 『For 行 = 1 To 100』に

 『For 列 = 1 To 10』を、

 『For 列 = 1 To 100』に

  書きかえるだけですね。」

f:id:qsuguru:20171126202056j:plain

きゅう先生

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

 

f:id:qsuguru:20171126202152j:plain

すぐるくん

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

 

(4) 1~1000行, 1~1000列

きゅう先生

「いっきに1000行×1000列のセルに対して、『X行Y列』を設定しましょう。」

 

すぐるくん

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

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

 さきほどのマクロの

 『For 行 = 1 To 100』を、

 『For 行 = 1 To 1000』に

 『For 列 = 1 To 100』を、

 『For 列 = 1 To 1000』に

  書きかえるだけです。」

f:id:qsuguru:20171126202500j:plain

きゅう先生

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

 

f:id:qsuguru:20171126202555j:plain

すぐるくん

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

 

きゅう先生

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

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

 

 

 

 

 

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