VBA-23

説明1-7 For ~ Next (繰り返し処理)

 表の範囲の選択・行数のカウントをした後に、表の最初の行から最後の行まで同じ処理を繰り返す場合がありますので、ここでは繰り返し処理について説明します。

操作

繰り返し処理の動作確認のために、次の操作をしましょう。
1).[表のコピー]ボタンをクリックする。
[表のコピー]ボタン

 

2).セル[B59]はセル[E59]、セル[C59]はセル[F59]へと一行づつ63行目までコピーされますので、[OK]ボタンを5回クリックする。
ダイアログボックスにコピー行を表示

 

3).[表のクリア]ボタンをクリックする。
[表のクリア]ボタン

 

プロシージャ「説明用171_表のコピー」の内容

[表のコピー]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用171_表のコピー()
  2.  Dim gyouSuu As Long
  3.  gyouSuu = Range("b59").CurrentRegion.Rows.Count
  4.  Dim i As Long
  5.  For i = 59 To 59 + gyouSuu - 1
  6.   Cells(i, 5).Value = Cells(i, 2).Value
  7.   Cells(i, 6).Value = Cells(i, 3).Value
  8.   MsgBox i & "行目をコピーしました"
  9.  Next i
  10. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:行数を格納する変数[gyouSuu]を宣言
  • 3行目:セル[B59]に関わる表の行数を変数[gyouSuu]に格納
  • 4行目:コピーする行を格納する変数[i]を宣言
  • 5~8行目:「For」~「Next」で6~8行目の処理の繰り返し
  • 5行目:変数[i]の値の範囲は、59行目から63行目(59行目 + 行数5 - 1行)
  • 6行目:セル[変数i行・2(B)列]の値をセル[変数i行・5(E)列]に格納
  • 7行目:セル[変数i行・3(C)列]の値をセル[変数i行・6(F)列]に格納
  • 8行目:ダイアログボックスにコピーした行を表示
  • 10行目:「Subプロシージャ」の終了

【For ~ Next】

For カウンタ変数 = 初期値 To 最終値 [Step 増減値]
  繰り返す処理
Next カウンタ変数
※.[]内を省略時は[1]

・For ~ Next文は、カウンタ変数が初期値から処理を行い、処理後は増減値によりカウンタ変数が変化し、最終値まで処理を繰り返します。
・8行目でコピー行を表示していますので、繰り返していることが分かります。
・繰り返し処理は「For ~ Next」文以外にも、「Do Until ~ 」・「Do While ~」文等がありますが、この株価チャート作成プログラムでは使用しませんので、当面は「For ~ Next」文だけで十分でしょう。

プロシージャ「説明用172_表のクリア」の内容

[表のクリア]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用172_表のクリア()
  2.  Dim myRange As Range
  3.  Set myRange = Range(Cells(59, 5), Cells(63, 6))
  4.  myRange.ClearContents
  5.  Set myRange = Nothing
  6. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:Rangeを格納する変数[myRange]を宣言
  • 3行目:セル[E59]から[F63]の範囲を変数[myRange]に格納
  • 4行目:変数[myRange]の範囲をクリア
  • 5行目:変数[myRange]を初期化
  • 6行目:「Subプロシージャ」の終了

【オブジェクト型変数】

  • 2行目の「Dim myRange As Range」の変数[myRange]は、データ型を[Range]として宣言しています。
  • 今までの値を格納するデータ型(Long, String等)の変数と違い、3行目のセル[E59]から[F63]の範囲自体を変数[myRange]に格納しますので、オブジェクト型変数といいます。
  • データ型変数と基本的には同じ使い方になりますが、変数に値を格納する時には[=]だけではなく、[Set]を付ける必要があります。
  • 5行目の[Nothing]について、当面はオブジェクト型変数の使用後には記述しておく程度の理解で十分です。

【ClearContents】
・セル範囲を選択し[Delete]キーを押す操作をした場合の「マクロの記録」から[ClearContents]を流用しています。
・[ClearContents]は、数式と文字を削除しますが、全体(数式・文字・書式等)を削除する場合は[Clear]を使います。

 

以上でステップ1に関係するVBAについて説明してきましたが、いかがでしたか?
一つ一つのプロシージャの内容は難しくはないのではと思います。これらを組み合わせてスッテプ1のプログラムを作成します。

 

次にシート[実習用VBA]で実習を行いましょう。
確認が終わりましたら、ステップ1プロシージャの説明に進みますので、VBE画面の左上[Excel]アイコンをクリックしてシート[VBA説明用]に戻りましょう。

 

 
  このエントリーをはてなブックマークに追加

 

スポンサーリンク