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

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

ループ処理で10行のセルを読みとってみよう

3. ループ処理で10行のセルを読みとってみよう

きゅう先生

「ループ処理をつかって、行番号をカウントアップしながらセルの値を読みとってみましょう。

 行番号をカウントアップしながらセルの値を読みとり変数に格納する構文は、次のようになります。」

f:id:qsuguru:20171130224109j:plain

きゅう先生

「変数に代入した値は、直接見ることができません。

そこで、変数の値をセルの値に代入しましょう。次のような構文になります。」

f:id:qsuguru:20171130224140j:plain

きゅう先生

「今回も、多数のセルの値を読みとることになるので、『3_くり返しセルに文字を書きこむ』のときにつくったマクロ『行番号と列番号をカウントアップするループ処理』をつかって、あらかじめ10行×10列のセルに文字を書きこんでおきましょう。」

f:id:qsuguru:20171130224229j:plain

f:id:qsuguru:20171130224306j:plain

 

(1) 1~3行, 1列

きゅう先生

「列を1列目に固定して、行を1行目から3行目まで1行ずつカウントアップしていきながら、そのつどセルの値を読みとり文字連結し変数『セルの値』に格納。

 その後、セルA12に変数『セルの値』を設定しましょう。

 このとき行番号を変数『行』、列番号を定数『列』としましょう。」

 

すぐるくん

「『セルの値』を文字列型として変数宣言。

 『Dim セルの値 As String』と記述します。

 

 『行』を整数型として変数宣言。

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

 

 『列』を値『1』として定数宣言。

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

 

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

 変数『行』と定数『列』のセルの値を読みとり文字連結し変数『セルの値』に格納するのだから、

 行番号をカウントアップしながらセルの値を読みとり変数に格納する構文をつかってみます。

 『For 行 = 1 To 3

   セルの値 = セルの値 & Cells(行, 列).Value

  Next』

  と記述します。

 

 セルA12に変数『セルの値』を設定するのだから、

 『Range("A12").Value = セルの値』と記述します。」

f:id:qsuguru:20171130225033j:plain

きゅう先生

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

 

f:id:qsuguru:20171130225224j:plain

すぐるくん

「1~3行目・1列目のセルの値が読みとられて文字連結されて、セルA12に書きこまれました。

 だけど、セルの値どうしがピッタリくっついているのでちょっと読みにくいな。」

 

きゅう先生

「それでは、セルの値とセルの値の間に『 』(スペース)を入れてみましょう。

 For文の処理部分

『セルの値 = セルの値 & Cells(行, 列).Value

 を少し書きかえてみましょう。」

 

すぐるくん

「セルの値とセルの値の間に『 』(スペース)を追加するのだから、

 『セルの値 = セルの値 & " " & Cells(行, 列).Value

 と書きかえました。」 

f:id:qsuguru:20171130230722j:plain

きゅう先生

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

 

f:id:qsuguru:20171130230914j:plain

すぐるくん

「1~3行目・1列目のセルの値が読みとられて『 』(スペース)区切りで文字連結されて、セルA12に書きこまれました。」

 

(2) 1~10行, 1列

きゅう先生

「列を1列目に固定して、行を1行目から10行目まで1行ずつカウントアップしていきながら、そのつどセルの値を読みとり『 』(スペース)区切りで文字連結し変数『セルの値』に格納。

その後、セルA12に変数『セルの値』を設定しましょう。

このとき行番号を変数『行』、列番号を定数『列』としましょう。」

 

すぐるくん

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

 

きゅう先生

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

 

すぐるくん

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

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

 

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

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

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

f:id:qsuguru:20171130231033j:plain

 

きゅう先生

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

 

f:id:qsuguru:20171130231306j:plain

すぐるくん

「1~10行目・1列目のセルの値が読みとられて『 』(スペース)区切りで文字連結されて、セルA12に書きこまれました。」

 

きゅう先生

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

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

 

 

 

 

 

に

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