見出し画像

#6 繰り返し処理をやってみよう!【Excelマクロ講座】

繰り返し処理「For~Next」を使ってみる

Sub 繰り返し処理()

'変数宣言
Dim i As Integer

'繰り返し処理
For i = 0 To 3

    '変数iの中を確認
    MsgBox i

Next i

End Sub

【解説】
Dim i As Integer

 繰り返し処理で使うために変数を宣言(カウンター変数)
 変数名は「i」 データ型は整数型
For i = 0 To 3
 For … 
繰り返し処理が始まりますよという合図
i… 繰り返す”回数”を入れていくための変数
0 to 3… 0から3まで順番にiに代入していくよ(つまり繰り返す回数!)
Next i … 繰り返し処理はここまでだよという合図(Nextの後ろのiは省略可)

・カウンター変数は何でも良いけどiがよく使われる
For 変数 = 値 To 値 から Next の間に繰り返したい処理を書く

ヒント:変数を使ったセルの操作はcells()を使おう!


~~~シンキングタイム~~~

答え!

Sub 答え()

For i = 1 To 3

    Cells(i, 1).Value = i

Next i

End Sub

★point
カウンター変数はカウンターとしての役割だけでなく色々利用できる!
Cells()の行や.Valueもカウンター変数iで指定すれば順番に入力していってくれる!

他にもやり方は色々あるので参考までに!

ヒント:
シートの追加:Worksheets.Add

※挿入されたシートが自動でアクティブシート(作業中のシート)になる
シートの名前:ActiveSheet.Name = "名前"
文字列と変数の結合: & や + を使う


~~~シンキングタイム~~~

答え!

Sub 答え()

For i = 1 To 3

    Worksheets.Add
    ActiveSheet.Name = "シート" & i

Next

End Sub

もっとシンプルに書くと

Sub 答え()

For i = 1 To 3

    Worksheets.Add.Name = "シート" & i

Next

End Sub

とも書ける!

色々試してみよう!

他の繰り返し処理

Do While ~ Loop

条件式が一致している間処理を繰り返してくれる!
例えば…

Sub 繰り返し処理2()

'変数を宣言して代入
Dim n
n = 1

'3じゃない間=3が出るまで ループ開始
Do While Cells(n, 1).Value <> 3

  Cells(n, 2).Value = "○"
  
  '次の行へ
  n = n + 1
  
Loop

End Sub

【解説】
Dim n

 as~を省略するとバリアント型変数(どんなデータでも格納できる)に!
n=1
 値を入れておかないと0のまま。次の Cells(n,1).value でエラーになってしまうので代入を忘れず!
Do While Cells(n, 1).Value <> 3
 「 Cells(n, 1).Value <> 3」で値が3以外の時
 ※<>は「~ではない」という演算子(空白ではない、などに使える!)
Cells(n, 2).Value = "○"
B列に○を入力していく
n = n + 1
 nを1増やす
 これを忘れるとnの値が変わらず無限ループに!(要注意!)

 ※もし無限ループして画面が固まった場合は「Esc」キーでマクロを強制終了しよう!

memo:
Do…Loop には全部で4パターンある

★条件式が前にくるか後ろに来るか
処理をする前に条件をチェックするか、処理をしてからチェックするかの違い
Do While 条件
  処理
 Loop

②Do 
  処理
 Loop While 条件

★条件が正しくない間繰り返す処理の場合
③Do Until 条件
  処理
 Loop

④Do 
  処理
 LoopUntil 条件

なので上記の例なら

Do While Cells(n, 1).Value <> 3Do Until Cells(n, 1).Value = 3

とも書ける!

つまり…
繰り返す回数が決まっているなら
 For Next
繰り返す条件が決まっているなら
 Do…Loop

これを頭の片隅に置いておこう!

ここまでお疲れさまでした!

次回:
条件分岐でできることの幅が広がる!
ifを使って複雑な処理に挑戦しよう!

この記事が気に入ったらサポートをしてみませんか?