【VBA道場】#13 繰り返し(For~Next)

ExcelVBA

【VBA道場】#13 繰り返し(For~Next)



問題

A1~A12のセルに1月~12月までの月を表示せよ。

 

完成見本

 

解答

Sub vba_doujyou_13()

 ’変数の宣言
 Dim i As Long
 
 ’1から12まで繰り返す
 For i = 1 To 12

  ’i行目に「i月」と入力
    Sheets("Sheet1").Cells(i, 1) = i & "月"
 Next i

End Sub

 

サンプルファイル(マクロ有)

今回のマクロはこちらからダウンロードしてご使用いただけます。

 

解説

For カウンタに使う変数 = 初期値 to end (Step カウンタに加算される数)
   処理
Next カウンタに使う変数

繰り返しを行う場合は、For~Next文を使います。

繰り返しを使わないと以下のようなコードになってしまいます。

Sub vba_doujyou_13()

Sheets("Sheet1").Cells(1, 1) = "1月"
Sheets("Sheet1").Cells(2, 1) = "2月"
Sheets("Sheet1").Cells(3, 1) = "3月"
Sheets("Sheet1").Cells(4, 1) = "4月"
Sheets("Sheet1").Cells(5, 1) = "5月"
Sheets("Sheet1").Cells(6, 1) = "6月"
Sheets("Sheet1").Cells(7, 1) = "7月"
Sheets("Sheet1").Cells(8, 1) = "8月"
Sheets("Sheet1").Cells(9, 1) = "9月"
Sheets("Sheet1").Cells(10, 1) = "10月"
Sheets("Sheet1").Cells(11, 1) = "11月"
Sheets("Sheet1").Cells(12, 1) = "12月"

End Sub

12行くらいでしたらなんとか書けそうですが、現実的ではないですよね。

そこでFor~Next文を使用すると以下のようにコードが短くなります。

 

Dim i As Long

まずは、繰り返しに使うカウンタ変数を定義します。
一般的には、「i」「j」「k」を使うことが多いです。

 

次に、カウンタの初期値と最終値を決めます。

For i = 1 To 12

今回は1月から12月までを表示したいので、「1 to 12」とします。

 

初期値と終了値の後ろに「Step」を付けるとカウンタ変数の増減幅を指定できます。
何も書かないと1づつ増えていきます。

 

次に処理を書きます。

Sheets("Sheet1").Cells(i, 1) = i & "月"

今回は1~12月と表示したいので、上記のように記入しました。

 

ポイントは、カウンタ変数で使用したiを使用することです。
こうすることで、複数行書かなければいけなかった処理を1行ですますことができます。

変数と文字列をつなぐときは「&」で繋ぎます。
「&」がないとエラーが出るので注意しましょう。

文章の最後には「Next i」をつけます。
こちらも忘れるとエラーになるので、先に書いておきましょう。

 

終わりに

今回は繰り返しのコードを勉強しました。

繰り返しを覚えると、VBAでのコード数が各段に減ります。
是非マスターしましょう!今日はここまで!

 

おすすめ参考書

Amazon

たった1秒で仕事が片付くExcel自動化の教科書

いちばんやさしいExcelVBAの教本

ExcelVBA逆引き辞典 パーフェクト

楽天

いちばんやさしいExcelVBA

 

 

すらすら読めるExcelVBA

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スラスラ読めるExcel VBAふりがなプログラミング [ リブロワークス ]
価格:2035円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

 

VBA逆引き大辞典

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Excel VBA逆引き辞典パーフェクト第3版 [ 田中亨 ]
価格:2838円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

タイトルとURLをコピーしました