StudyLog

勉強の記録など。

ExcelVBA本格入門 Chapter7②

学習日:2024/07/18

参考書:ExcelVBA本格入門 技術評論社(著者 大村あつし)

7-3(P145-150)

 

【学習内容のまとめ】

  • Do…Loopステートメントとは?

    For...Nextステートメント → ループ回数の上限を指定する

    For Each…Nextステートメント → コレクションのオブジェクトの数だけループする

    Do...Loopステートメント → ある条件が満たされるまで、もしくはある条件が満たされている間は処理を繰り返す。4種類に区分

      ループの前で条件判断 ループの後で条件判断
    条件を満たすまでループ Do Until…Loop Do…Loop Until
    条件を満たす間はループ Do While…Loop Do…Loop While
  • 条件が満たされるまでループする - Untilキーワード

    • Do Until...Loop(ループの前で条件判断)

      Range("A1").Select

      Do Until ActiveCell.Value = "” → 空白セルが登場するまで

      ActiveCell.Font.Bold = True → フォントを太字にする

      ActiveCell.Offset(1,0).Select → 行方向を1移動

      Loop

    • Do...Loop Until(ループの後で条件判断)

      Range("A1").Select

      Do → 条件判断の前に処理を実行

      ActiveCell.Font.Italic = True → フォントを斜体にする

      ActiveCell.Offset(1,0).Select → 行方向を1移動

      Loop Until ActiveCell.Value = "” → 処理実行後に空白セルが登場するまでという条件判断

      ※セルA1が空白でも1度は処理が実行される

  • 条件を満たす間はループする - Whileキーワード

    • Do While…Loop(ループの前で条件判断)

      Range(”B1”).Select

      Do While ActiveCell.Value = "” → セルが空白の間は実行

      ActiveCell.Value = "ABC” → セルの値にABCと入力

      ActiveCell.Offset(1,0).Select → 行方向に1移動

      Loop

    ※処理を実行する前に条件判断をするので、セルB1が空白でなかったら1度も処理は実行されない

    • Do...Loop While(ループの後で条件判断)

      Range("B1").Select

      Do → 条件判断の前に処理を実行

      ActiveCell.Value = "DEF” → セルの値にDEFと入力

      ActiveCell.Offset(1,0).Select → 行方向に1移動

      Loop While ActiveCell.Value = "” → 空白のセルが存在している間はという条件判断

      ※処理実行後に条件判断を行うので最低でも1度は処理が実行される

※Exit DoステートメントでDo...Loopステートメントを抜けることができる

※無限ループに陥ったらEscキーでマクロの実行を強制中断する