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

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

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

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

きゅう先生

「ループ処理をつかって、X行×Y列のセルの値を読みとってみましょう。」

 

すぐるくん

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

 

きゅう先生

「その通りです。Excelマクロでは、二つ以上のループ処理を組み合わせることもできます。

 行番号をカウントアップするループ処理と列番号をカウントアップするループ処理を組み合あわせてセルの値を読みとるときは、次のような構文になります。」

f:id:qsuguru:20171203000155j:plain

きゅう先生

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

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

f:id:qsuguru:20171203000253j:plain

きゅう先生

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

f:id:qsuguru:20171203000359j:plain

 

 

f:id:qsuguru:20171203000423j:plain

 

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

きゅう先生

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

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

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

 

すぐるくん

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

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

 

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

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

 

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

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

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

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

変数『行』と変数『列』のセルの値を読みとり『 』(スペース)区切りで文字連結し変数『セルの値』に格納するのだから、

行番号をカウントアップするループ処理と列番号をカウントアップするループ処理を組み合あわせてセルの値を読みとる構文をつかってみます。

 『For 行 = 1 To 3

       For 列 = 1 To 3   

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

       Next

  Next』

  と記述します。

 

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

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

f:id:qsuguru:20171203000929j:plain

きゅう先生

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

f:id:qsuguru:20171203001056j:plain

すぐるくん

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

 

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

きゅう先生

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

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

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

 

すぐるくん

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

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

 さきほどのマクロの

 『For 行 = 1 To 3』を、

 『For 行 = 1 To 5』に

 『For 列 = 1 To 3』を、

 『For 列 = 1 To 5』に

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

f:id:qsuguru:20171203001320j:plain

きゅう先生

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

 

f:id:qsuguru:20171203001409j:plain

すぐるくん

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

だけど、3行4列までしか見えないため、3行5列から5行5列までが本当に読みとられているのかが、よくわかりません。」

 

きゅう先生

「それでは、セルA12の行の高さと書式を変更してみましょう。

行番号が『12』となっているマスをクリックしてください。」

f:id:qsuguru:20171203001603j:plain

すぐるくん

「12行のセルが線で囲まれました。」

きゅう先生

「これは、12行のセルが選択されている状態です。この状態で、12行のセルにカーソルを置いたまま右クリックしてください。」

f:id:qsuguru:20171203001703j:plain

すぐるくん

「下方向にたれ下がったメニューが現れました。」

きゅう先生

「これは、ドロップダウンメニューとよばれるもので、エクセルのいろんな操作や設定ができます。

 このドロップダウンメニューの下から3番目の『行の高さ』をクリックしてください。」

f:id:qsuguru:20171203001825j:plain

すぐるくん

「『行の高さ』というタイトルの小さな画面が現れました。」

きゅう先生

「この画面で、『行の高さ』を変更できます。

 『行の高さ』を120と書きかえて『OK』ボタンをクリックしてください。」

f:id:qsuguru:20171203002031j:plain

すぐるくん

「12行目の幅が大きくなりました。」

f:id:qsuguru:20171203002139j:plain

きゅう先生

「次に、セルA12を選択して、『Ctrl』キーと『1』キーを同時に打ってください。」

すぐるくん

「セルの書式設定という画面があらわれました。」

f:id:qsuguru:20171203002238j:plain

きゅう先生

「そしたら、『配置』タブを選んで『文字の制御』の中の『折り返して全体を表示する』をクリックしてチェックマークがついている状態にしてから『OK』ボタンをクリックしてください。」

f:id:qsuguru:20171203002406j:plain

すぐるくん

「折り返して全体を表示するようになったため、3行5列から5行5列までが本当に読みとられていることが、よくわかるようになりました。」

きゅう先生

「このように、セルを折り返して全体を表示するようにすれば、右はしの文字が見えなくなるということがなくなり、見やすい表をつくることができます。」

 

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

きゅう先生

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

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

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

 

すぐるくん

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

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

 さきほどのマクロの

 『For 行 = 1 To 5』を、

 『For 行 = 1 To 10』に

 『For 列 = 1 To 5』を、

 『For 列 = 1 To 10』に

 書きかえるだけです。」

f:id:qsuguru:20171203002815j:plain

きゅう先生

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

 

f:id:qsuguru:20171203002856j:plain

すぐるくん

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

 

きゅう先生

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

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

 

 

 

 

 

に

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