【ループ処理でセルに値を書きこむ】

 1 多数のセルの行番号と列番号を直接指定して値を書きこむ

 2 多数のセルの行番号と列番号を変数と定数で指定して値を書きこむ

 3 ループ処理で多数行のセルに値を書きこむ

 4 ループ処理で多数列のセルに値を書きこむ

 5 ダブルループ処理で多数行×多数列のセルに値を書きこむ

多数のセルの行番号と列番号を変数と定数で指定して
値を書きこむ

パイさん

Excel VBA/マクロのCells行番号列番号については三つの指定方法がありますが、

 今回は、Cellsオブジェクトの引数となる行番号列番号定数で指定する方法、

 それと、Cellsオブジェクトの引数となる行番号列番号変数で指定する方法により、

 多数のセルに値を書きこんでみます。


 ここで、既に、『Cellsの行番号と列番号を定数で指定』と

 『Cellsの行番号と列番号を変数で指定』で紹介した、Cellsオブジェクトを再び紹介します。」

Img3_1_1


1. 1行・1列

パイさん

「まずは、1行目・1列目のセルに対して、『1行1列』を設定しましょう。

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

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

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

 今回は、このように定数を使ったプログラムを組んでみましょう。」

ソンくん

「まず、行番号の定数名を『』その値を1として定数宣言するということは、Const = 1

 次に、列番号の定数名を『』その値を1として定数宣言するということは、Const = 1

 最後に、行番号が『』と列番号が『』のセルの値として、『1行1列』を設定するということは、

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

Sub 行番号と列番号を変数と定数で指定1()

 Const = 1

 Const = 1

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

End Sub

パイさん

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

Img3_2_2

ソンくん

「1行目・1列目のセルに、『1行1列』が、書きこまれました。」


2. 1~3行・1列

パイさん

列を1列目に固定して、行を1行目から3行目まで1行ずつカウントアップしていき、

 3つのセルに対して、『X行1列』を設定しましょう。

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

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

 行番号の変数『』に1

 行番号が『』と列番号が『』のセルの値として、『1行1列』

 行番号の変数『』に2

 行番号が『』と列番号が『』のセルの値として、『2行1列』

 行番号の変数『』に3

 行番号が『』と列番号が『』のセルの値として、『3行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列"

 と記述します。」

Sub 行番号と列番号を変数と定数で指定2()

 Const = 1

 Dim As Integer

  = 1

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

  = 2

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

  = 3

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

End Sub

パイさん

3に係る順次処理が記述されました。

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

Img3_2_4

ソンくん

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

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

 3行目・1列目のセルに『3行1列』、が書きこまれました。」


3. 1行・1~3列

パイさん

行を1行目に固定して、列を1列目から3列目まで1列ずつカウントアップしていき、

 3つのセルに対して、『1行Y列』を設定しましょう。

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

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

 列番号の変数『』に1

 行番号が『』と列番号が『』のセルの値として、『1行1列』

 列番号の変数『』に2

 行番号が『』と列番号が『』のセルの値として、『1行2列』

 列番号の変数『』に3

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

 今回は、このように定数と変数を使ったプログラムを組んでみましょう。」

ソンくん

「行番号の定数名を『』その値を1として定数宣言するということは、Const = 1

 列番号の変数名を『』とし整数型として変数宣言するということは、Dim As Integer

 列番号の変数『』に1を設定するということは、 = 1

 行番号が『』と列番号が『』のセルの値として、『1行1列』を設定するということは、

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

 列番号の変数『』に2を設定するということは、 = 2

 行番号が『』と列番号が『』のセルの値として、『1行2列』を設定するということは、

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

 列番号の変数『』に3を設定するということは、 = 3

 行番号が『』と列番号が『』のセルの値として、『1行3列』を設定するということは、

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

 と記述します。」

Sub 行番号と列番号を変数と定数で指定3()

 Const = 1

 Dim As Integer

  = 1

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

  = 2

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

  = 3

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

End Sub

パイさん

3に係る順次処理が記述されました。

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

Img3_2_6

ソンくん

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

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

 1行目・3列目のセルに『1行3列』、が書きこまれました。」


4. 1~3行・1~3列

パイさん

行を1行目から3行目まで1行ずつカウントアップしていきながら、

 列も1列目から3列目まで1列ずつカウントアップしていき、

 9つのセルに対して、『X行Y列』を設定しましょう。

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

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

 行番号の変数『』に1

  列番号の変数『』に1

  行番号が『』と列番号が『』のセルの値として、『1行1列』

  列番号の変数『』に2

  行番号が『』と列番号が『』のセルの値として、『1行2列』

  列番号の変数『』に3

  行番号が『』と列番号が『』のセルの値として、『1行3列』

 行番号の変数『』に2

  列番号の変数『』に1

  行番号が『』と列番号が『』のセルの値として、『2行1列』

  列番号の変数『』に2

  行番号が『』と列番号が『』のセルの値として、『2行2列』

  列番号の変数『』に3

  行番号が『』と列番号が『』のセルの値として、『2行3列』

 行番号の変数『』に3

  列番号の変数『』に1

  行番号が『』と列番号が『』のセルの値として、『3行1列』

  列番号の変数『』に2

  行番号が『』と列番号が『』のセルの値として、『3行2列』

  列番号の変数『』に3

  行番号が『』と列番号が『』のセルの値として、『3行3列』

  を設定。

 今回は、このように二つの変数を使ったプログラムを組んでみましょう。」

ソンくん

「行番号の変数名を『』とし整数型として変数宣言するということは、Dim As Integer

 列番号の変数名を『』とし整数型として変数宣言するということは、Dim As Integer

 

 行番号の変数『』に1を設定するということは、 = 1

  列番号の変数『』に1を設定するということは、 = 1

  行番号が『』と列番号が『』のセルの値として、『1行1列』を設定するということは、

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

  列番号の変数『』に2を設定するということは、 = 2

  行番号が『』と列番号が『』のセルの値として、『1行2列』を設定するということは、

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

  列番号の変数『』に3を設定するということは、 = 3

  行番号が『』と列番号が『』のセルの値として、『1行3列』を設定するということは、

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

 行番号の変数『』に2を設定するということは、 = 1

  列番号の変数『』に1を設定するということは、 = 1

  行番号が『』と列番号が『』のセルの値として、『2行1列』を設定するということは、

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

  列番号の変数『』に2を設定するということは、 = 2

  行番号が『』と列番号が『』のセルの値として、『2行2列』を設定するということは、

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

  列番号の変数『』に3を設定するということは、 = 3

  行番号が『』と列番号が『』のセルの値として、『2行3列』を設定するということは、

  Cells(, ).Value = "2行3列"

 行番号の変数『』に3を設定するということは、 = 1

  列番号の変数『』に1を設定するということは、 = 1

  行番号が『』と列番号が『』のセルの値として、『3行1列』を設定するということは、

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

  列番号の変数『』に2を設定するということは、 = 2

  行番号が『』と列番号が『』のセルの値として、『3行2列』を設定するということは、

  Cells(, ).Value = "3行2列"

  列番号の変数『』に3を設定するということは、 = 3

  行番号が『』と列番号が『』のセルの値として、『3行3列』を設定するということは、

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

  と記述します。」

Sub 行番号と列番号を変数と定数で指定4()

 Dim As Integer

 Dim As Integer

  = 1

   = 1

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

   = 2

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

   = 3

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

  = 2

   = 1

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

   = 2

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

   = 3

  Cells(, ).Value = "2行3列"

  = 3

   = 1

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

   = 2

  Cells(, ).Value = "3行2列"

   = 3

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

End Sub

パイさん

3行×3に係る順次処理が記述されました。

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

Img3_2_8

ソンくん

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

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

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

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

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

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

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

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

 3行目・3列目のセルに『3行3列』、が書きこまれました。」


パイさん

「今回は、あえて同じような順次処理を何回も記述してもらいました。」

ソンくん

「そういえば、セルに値を書きこむ順次処理を何回も書きました。

 1. 1行・1では1回のセルに値を書きこむ順次処理

 2. 1~3行・1では3回のセルに値を書きこむ順次処理

 3. 1行・1~3では3回のセルに値を書きこむ順次処理

 4. 1~3行・1~3では9回のセルに値を書きこむ順次処理、を記述しました。

 

 これって行数列数が増えれば増えるほど、同じような順次処理を書く回数も増えていくってことですよね。

 もし、1000行×1000列だったら、同じような順次処理を百万回も書くということですよね。」

パイさん

「その通りです。プログラムには3つの基本構造があります。

 一つ目の基本構造順次処理です。

 順次処理とは順に処理を実行するということです。

 順次処理だけでプログラムを組もうとするならば、仮に、1000行×1000列の処理を実行するときには、

 百万回の順次処理を記述することになります。」

ソンくん

百万回の順次処理を記述するなんて、プログラムコードがすさまじい行数になるし、

 それを記述するだけでざっと300時間はかかりそうですね。一回のプログラムコードにまとめられないのかな。」

パイさん

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

 そこで、プログラムの3つの基本構造の内、二つ目の基本構造であるループ処理の出番となります。

 

 ループ処理をつかえば、例え1億回のプログラムコードでも一回のプログラムコードにまとめることができます。

 

 ループ処理については、次回『ループ処理で多数行のセルに値を書きこむ』で紹介します。