繰返し文の説明

繰返し文の基本構成は、以下の様になります。
For n=1 to 15
(For  Nextのこの間に繰り返し実行させたいプログラムを書く)
Next 
ここで使用されている「n」は整数の変数です。ここでは変数を「n」としていますが、nでなく「n0」でも「m」でも適当な変数を設定して構いません。
教本などでは、この変数を「整数」として定義が必要と書かれていますが、今までの経験上繰り返し文では定義しなくてもプログラムは実行されますので省略し ます。
(専門家からは邪道と叱られるかもしれませんが。ともかくここでの説明は望んだとおりにプログラムが動作してくれればよしとのことで説明を進めてゆきま す。)
参考までに定義の仕方 は、プログラムの最初に「Dim n As Integer」として定義します。(ここでIntegerは、整数を表してますので、「nを整数と定義する」となります)
「For」と「Next」の間に書かれた「プログラム」を1から15まで繰り返すことを意味します。
(説明の都合上「15」としてい ますが、実際に皆様がマクロを組む場合にデータはもっと多量になるはずです。「1,000」でも「20,000」でも構いません。)
実際にどのような働きをするか見てみましょう。
下図のように「起動ボタン」のプロシージャに書きます。
条件分岐文で説明したプログラムを消して下記のように書き込んでみてください。図5
「起動ボタン」をクリックすると、For~Nextの繰り返し命令により変数nが1から15 までくりかえされます。
結果として下図のよう にエクセルシートに表示されることとなります。
図6
ここで変数nを使用した「For ~ Next」の繰り返しの構文を使用しなければ、1行ずつ下図のようにプログラムしなければなりません。
図20
3行のプログラムで済むところを15行で書かなければなりません。
ここでは変数nを1~15にしていますが、もっと多量のデータ処理を行なう場合、例えば1~10000とした場合10000行書かなけれなりません。
マクロでセルの位置をCells(行番号,列番号)で表示する大きなメリットはこのように行番号、列番号に変数を使用して足したり、引いたり、掛けた り、及び割ったりしてセルの位置を指定できることです。
エクセルの表示のようにセル位置「B3」などと固定して表すとこのような対応できません。
【注】ここではFor n=1 to 15として、Cells(2+n, 3).Valueの位置の指示を行なっていますが、For n=3 to 17としてCelll(n, 3).Valueとしても問題ありません。
今後実践として使用する場合には、表を作成しその表に書き込ませることとなります。表の最初の行から書き込ませるので感覚的にこのような表示が良いかとの 個人的な感想で作成しています。
Stepの説明:
 厳密に表記しますと「For n=1 to 15 Step 1」 となります。
変数nは1個飛びで繰り返しを実行しなさいと言うことですが、1個飛びの場合は「Step 1」を省略することができます。
1個飛びでなく2個、3個、または4個などのように飛び飛びにしたい場合は、Step 2、Step 3、などと書く必要があります。
例えば前述のプログラムにStep 3と以下のように追記します。
図8
結果は次のように飛び飛びの状態で表示されます。図9
「Step」は、あまり使用することがないかと思いますのでこのくらいにしておきます。
次に、四則演算を入れたものを書いてみます。
セルD3(Cells(3,4))に2を15回足すプログラムを書いてみましょう。図7
エクセルに戻り「起動ボタン」をクリックして見てください。セル(3,4)に「30」が表示されたと思います。
この式を見ておかしいと思いませんか。左辺と右辺がなぜ等しいのかと。
前述しましたようにこの「=」は等号式ではなく、「セル(3、4)に2を足した右辺を左辺の セル(3,4)に代入しなさい」ということを示しています。
これを15回繰り返させています。
ボタンをクリックすると速すぎて見えないかもしれませんが、 セル(3、4)の値は、2,4,6,8,10,・・・・30と変化しています。
セル(3、4)が30の状態で、再度「起動ボタン」をクリックすると、今度は、30 にまた2を15回足した60が最終的に表示されます。
前述のプログラムでエクセル シートに書き込まれた「名前、数」を消して、前述のプログラムを次のように書き替えてみましょう。
図13
起動ボタンをクリックしてマクロ実行してみましょう。図14
左辺のセル(2+n,4)は、最初は空白のため、右辺の式は「空白のセルに2を足しているので、全てのn行で「2」を表示します。(空白は、ゼロと見なさ れます。)
この状態で再度「起動ボタン」をクリックし、マクロを実行してみましょう。図15
今度は、セル(2+n,4)に2が書込まれているので、2+2=4が表示されています。
では、今書込まれた数値を消去して、起動ボタンのプロシージャを次 のように書き替えましょう。
図16
起動ボタンをクリックしてマクロを実行してみましょう。
図17
変 数n=1の場合、右辺のCells(2+1-1,4)は即ちセル(2、4)を指定しています。
そのセルの値に2を足した値を左辺のセル(2+1,4)に代入し なさ いとの指示になります。
セル (2,4)は空白なので「0(ゼロ)」と見なし、セル (3、 4)には、0+2=2が表示されます。
For~Nextの指示により次にn=2となりますので、セル(2+2-1,4)の値2に2を足した値(2+2)をセル (2+2,4) に代入しなさいとなりますのでセル(4,4)に4が代入されます。
この繰り返しを n=15まで行った結果が上図です。
次にセル(2、4)に好きな値を書込み試してみて下さい。セル(2,4)の数値に2を足した値から開始されます。
繰返し文(For ~ Next)の働きを理解してもらえたでしょうか。
これくらいのことであればエクセルの関数で十分対応とれると思われるかもしれませんが、前述の条件分岐文と組み合わせることによりその活用範囲が大幅に広 がります。
次にこの繰り返し文と条件分岐文を組み合わせた例文を考えてみましょう。
  
次ページへ


サイドバータイトル
inserted by FC2 system