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

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

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

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

きゅう先生

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

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

f:id:qsuguru:20171201224056j:plain

きゅう先生

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

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

f:id:qsuguru:20171201224144j:plain

きゅう先生

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

f:id:qsuguru:20171201224357j:plain

 

f:id:qsuguru:20171201224413j:plain

 

(1) 1行, 1~3列

きゅう先生

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

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

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

 

すぐるくん

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

 

きゅう先生

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

 

すぐるくん

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

 

きゅう先生

「その通りです。」

 

すぐるくん

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

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

 

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

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

 

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

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

 

 変数『列』を開始列『1』から終了列『3』まで1ずつカウントアップしながら、定数『行』と変数『列』のセルの値を読みとり『 』(スペース)区切りで文字連結し変数『セルの値』に格納するのだから、列番号をカウントアップしながらセルの値を読みとり変数に格納する構文をつかってみます。

 『For 列 = 1 To 3

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

  Next』

  と記述します。

 

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

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

f:id:qsuguru:20171201224920j:plain

きゅう先生

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

 

f:id:qsuguru:20171201225047j:plain

すぐるくん

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

 

(2) 1行, 1~10列

きゅう先生

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

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

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

 

すぐるくん

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

 

きゅう先生

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

 

すぐるくん

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

 

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

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

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

f:id:qsuguru:20171201225411j:plain

きゅう先生

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

 

f:id:qsuguru:20171201225530j:plain

すぐるくん

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

 

きゅう先生

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

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

 

 

 

 

 

に

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