CANPAN ブログ検索
Loading
  • もっと見る
<< 2019年08月 >>
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
カテゴリアーカイブ
最新記事
最新コメント
エクセルのマクロVBAを使った、繰り返し処理「For〜Next」「Do Loop」の違い [2019年02月07日(Thu)]

エクセルのマクロVBAを使った、繰り返し処理「ForNext」「Do Loop」の違い



 エクセルのマクロVBAを使って「表に行を挿入する」必要があり、ネットを参考にして「マクロ」を組みました。


 参考までに、エクセルの「表示」→「マクロ」→「マクロの記録」という機能を有効に使って、ネットで調べなくても、動くマクロを組みことができます。


 そのときに、大きな違いが分かりました。


 表に行を挿入するマクロ

 1頁に10行だけ印刷し、改ページをする

@「ForNext

       gyo_suu = 10

       gyo = 2

       I_end = 20

       for I = 4 to I_end

              If gyo = gyo_suu Then

                     '4行挿入

                     Rows((I + 1) & ":" & (I + 4)).Select

                     Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

                     ・・・・・

                     I = I + 4

                     I_end = I_end + 4

                     gyo = 1

              End If

              gyo = gyo + 1

       next I


A「Do Loop

       gyo_suu = 10

       gyo = 2

       I = 4

       Do While Cells(I, 1) > 0

              If gyo = gyo_suu Then

                     '4行挿入

                     Rows((I + 1) & ":" & (I + 4)).Select

                     Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

                     ・・・・・

                     I = I + 4

                     I_end = I_end + 4

                     gyo = 1

              End If

              I = I + 1

              gyo = gyo + 1

       Loop


 マクロの実行結果は

@「ForNext

 Iの値:「I = I + 4」で4増分

 I_endの値:「I_end = I_end + 4」としても、「I_end = 20」で「最終値」となります


A「Do Loop

 Iの値:「I = I + 4」で4増分

 I_endの値:「I_end = I_end + 4」で4増分



 私は、「Office 365 Business」を最新版にアップデートして、エクセルを使用しています。


 「ForNext」はよく使いますが、「カウンタ変数」の「最終値」を変更できないのは、「仕様」のような気がします。


Posted by 山田 雄一郎 at 22:13
この記事のURL
http://blog.canpan.info/hofu_nanboku/archive/421
プロフィール

山田 雄一郎さんの画像
山田 雄一郎
プロフィール
ブログ
リンク集
http://blog.canpan.info/hofu_nanboku/index1_0.rdf
http://blog.canpan.info/hofu_nanboku/index2_0.xml