VBA Excel Do…Loop

Loop Structure ใน VBA Excel มี 2 แบบหลักคือ For Loop กับ Do Loop โดยเราสามารถแบ่ง Do Loop ได้เป็น 4 แบบคือ Do…Loop While, Do While…Loop, Do…Loop Until และ Do Until…Loop โดยจะมีความหมายของแต่ละ Loop ตามด้านล่าง

  1. Do…Loop While เป็นการกระทำตามคำสั่งที่เราต้องการไปก่อน 1 ครั้งและให้กระทำต่อไปหากยังเข้าเงื่อนไขที่เรากำหนด หากไม่เข้าเงื่อนไขก็จะออกจาก Loop ดังตัวอย่างตามด้านล่าง
    Sub DoLoopWhile()
        Dim i As Integer
        i = 2
        Do
            Range("e" & i).Value = Range("d" & i).Value = 0.5
            i = i + 1
        Loop While Range("d" & i).Value <> ""
    End Sub
  2. Do While…Loop เป็นการกระทำตามคำสั่งที่ต้องการเมื่อเข้าเงื่อนไขและให้กระทำต่อไปหากยังเข้าเงื่อนไข หากไม่เข้าเงื่อนไขให้ออกจาก Loop ดังตัวอย่างตามด้านล่าง
    Sub DoWhileLoop()
        Dim i As Integer
        i = 2
        Do While Range("e" & i).Value <> ""
            Range("e" & i).Value = Range("d" & i).Value * 0.2
            i = i + 1
        Loop
    End Sub
  3. Do…Loop Until เป็นการกระทำตามคำสั่งที่เราต้องการไปก่อน 1 ครั้งและให้กระทำต่อไปจนกระทั่งเข้าเงื่อนไขที่เรากำหนด เมื่อเข้าเงื่อนไขที่เรากำหนดก็จะออกจาก Loop ดังตัวอย่างตามด้านล่าง
    Sub DoLoopUntil()
        Dim i As Integer
        i = 2
        Do
            Range("e" & i).Value = Range("d" & i).Value * 0.1
            i = i + 1
        Loop Until Range("d" & i).Value = ""
    End Sub
  4. Do Until…Loop เป็นการกระทำตามคำสั่งที่เราต้องการจนกระทั่งเข้าเงื่อนไขที่เรากำหนด เมื่อเข้าเงื่อนไขที่เรากำหนดก็จะออกจาก Loop ดังตัวอย่างตามด้านล่าง
    Sub DoUntilLoop()
        Dim i As Integer
        i = 2
        Do Until Range("d" & i).Value = ""
            Range("e" & i).Value = Range("d" & i).Value * 0.25
            i = i + 1
        Loop
    End Sub

ในระหว่างการ Loop ด้วย Do Loop หากต้องการจะออกจาก Loop เมื่อเข้าเงื่อนไขใด ๆ ที่เรากำหนดภายใน Do Loop อีกที เราสามารถใช้ Exit Do เพื่อออกจาก Loop ได้ตามต้องการ

Video ด้านล่างนี้สาธิตการใช้งาน Do Loop แต่ละแบบตามด้านบน เพื่อเป็นตัวอย่างการใช้งาน ในการทำงานจริงหากรู้ขอบเขตของการ Loop สามารถเลือกใช้ For Loop เข้ามาจัดการได้และจะพิจารณาใช้ For Loop เข้ามาจัดการเสียก่อน แต่หากไม่รู้ขอบเขตของการ Loop จึงค่อยเลือกใช้ Do Loop แบบใดแบบหนึ่งตามต้องการ

Video แสดงตัวอย่างการใช้ Do Loop

กรณีมีปัญหาการใช้งาน Excel และ VBA สามารถสอบถามได้ที่ snasui.com