ເນື້ອໃນ

# ຄຳສັ່ງ For...Next

ເຮັດຊ້ຳຄຳສັ່ງລະຫວ່າງບລັອກ For...Next ຕາມຈຳນວນຄັ້ງທີ່ລະບຸ.

## ໄວຍາກອນ:

    For counter=start To end [Step step]
        ບລັອກຄຳສັ່ງ
        [Exit For]
        ບລັອກຄຳສັ່ງ
    Next [counter]

      For Each item In list
          ບລັອກຄຳສັ່ງ
      [Exit For]
          ບລັອກຄຳສັ່ງ
      Next [item]

## ຕົວປ່ຽນ:

counter: ຕົວນັບວົງຈອນ (counter) ທີ່ຖືກກຳນົດຄ່າເລີ່ມຕົ້ນດ້ວຍຄ່າທາງເບື້ອງຂວາຂອງເຄື່ອງໝາຍເທົ່າກັບ (start). ສະເພາະຕົວປ່ຽນຕົວເລກເທົ່ານັ້ນທີ່ໃຊ້ໄດ້. ຕົວນັບວົງຈອນຈະເພີ່ມຂຶ້ນ ຫຼື ຫຼຸດລົງຕາມຕົວປ່ຽນ step ຈົນກວ່າຈະຜ່ານຄ່າ end.

start: ຕົວປ່ຽນຕົວເລກທີ່ກຳນົດຄ່າເລີ່ມຕົ້ນຢູ່ຈຸດເລີ່ມຕົ້ນຂອງວົງຈອນ.

end: ຕົວປ່ຽນຕົວເລກທີ່ກຳນົດຄ່າສຸດທ້າຍຢູ່ຈຸດສິ້ນສຸດຂອງວົງຈອນ.

step: ກຳນົດຄ່າທີ່ຈະໃຫ້ເພີ່ມຂຶ້ນ ຫຼື ຫຼຸດລົງຂອງຕົວນັບວົງຈອນ. ຖ້າບໍ່ໄດ້ລະບຸ step, ຕົວນັບວົງຈອນຈະເພີ່ມຂຶ້ນເທື່ອລະ 1. ໃນກໍລະນີນີ້, end ຕ້ອງໃຫຍ່ກວ່າ start. ຖ້າທ່ານຕ້ອງການຫຼຸດ counter, end ຕ້ອງນ້ອຍກວ່າ start ແລະ step ຕ້ອງຖືກກຳນົດເປັນຄ່າລົບ.

ວົງຈອນ For...Next ຈະເຮັດຊ້ຳທຸກຄຳສັ່ງໃນວົງຈອນຕາມຈຳນວນຄັ້ງທີ່ລະບຸໄວ້ໃນພາລາມິເຕີ.

ເມື່ອຕົວປ່ຽນ counter ຫຼຸດລົງ, LibreOffice Basic ຈະກວດສອບວ່າຮອດຄ່າ end ແລ້ວຫຼືບໍ່. ທັນທີທີ່ counter ຜ່ານຄ່າ end, ວົງຈອນຈະສິ້ນສຸດລົງໂດຍອັດຕະໂນມັດ.

ທ່ານສາມາດໃຊ້ຄຳສັ່ງ For...Next ຊ້ອນກັນໄດ້. ຖ້າທ່ານບໍ່ໄດ້ລະບຸຕົວປ່ຽນຕາມຫຼັງຄຳສັ່ງ Next, Next ຈະອ້າງອີງເຖິງຄຳສັ່ງ For ຫຼ້າສຸດໂດຍອັດຕະໂນມັດ.

ຖ້າທ່ານລະບຸຄ່າການເພີ່ມເປັນ 0, ຄຳສັ່ງລະຫວ່າງ For ແລະ Next ຈະຖືກເຮັດຊ້ຳໄປເລື້ອຍໆຢ່າງບໍ່ມີທີ່ສິ້ນສຸດ.

ເມື່ອນັບຖອຍຫຼັງຕົວປ່ຽນຕົວນັບ, LibreOffice Basic ຈະກວດສອບການເກີດ overflow ຫຼື underflow. ວົງຈອນຈະສິ້ນສຸດລົງເມື່ອ counter ເກີນຄ່າ end (ກໍລະນີຄ່າ Step ເປັນບວກ) ຫຼື ນ້ອຍກວ່າຄ່າ end (ກໍລະນີຄ່າ Step ເປັນລົບ).

ໃຊ້ຄຳສັ່ງ Exit For ເພື່ອອອກຈາກວົງຈອນແບບບໍ່ມີເງື່ອນໄຂ. ຄຳສັ່ງນີ້ຕ້ອງຢູ່ພາຍໃນວົງຈອນ For...Next. ໃຊ້ຄຳສັ່ງ If...Then ເພື່ອກວດສອບເງື່ອນໄຂການອອກດັ່ງນີ້:

      For...
          ບລັອກຄຳສັ່ງ
          If condition = True Then Exit For
          ບລັອກຄຳສັ່ງ
      Next

ໃນວົງຈອນ For...Next ທີ່ຊ້ອນກັນ, ຖ້າທ່ານອອກຈາກວົງຈອນແບບບໍ່ມີເງື່ອນໄຂດ້ວຍ Exit For, ມັນຈະອອກຈາກວົງຈອນພຽງຊັ້ນດຽວເທົ່ານັ້ນ.

## ຕົວຢ່າງ

ຕົວຢ່າງຕໍ່ໄປນີ້ໃຊ້ວົງຈອນຊ້ອນກັນສອງຊັ້ນເພື່ອຈັດລຽງອາເຣສະຕຣິງ (string array) ທີ່ມີ 10 ອົງປະກອບ ( sEntry() ), ເຊິ່ງຖືກຕື່ມດ້ວຍເນື້ອຫາຕ່າງໆ:

    Sub ExampleSort
    Dim sEntry(9) As String
    Dim iCount As Integer, iCount2 As Integer
    Dim sTemp As String
        sEntry = Array("Jerry","Patty","Kurt","Thomas","Michael",_
                     "David","Cathy","Susie","Edward","Christine")
        For iCount = 0 To 9
            For iCount2 = iCount + 1 To 9
                If sEntry(iCount) > sEntry(iCount2) Then
                    sTemp = sEntry(iCount)
                    sEntry(iCount) = sEntry(iCount2)
                    sEntry(iCount2) = sTemp
                End If
            Next iCount2
        Next iCount
        For iCount = 0 To 9
            Print sEntry(iCount)
        Next iCount
    End Sub

ອັນນີ້ຈະກວດສອບເນື້ອຫາຂອງອາເຣເພື່ອສະແດງແຕ່ລະລາຍການທີ່ມັນບັນຈຸຢູ່.

      Sub list_iteration
          cutlery = Array("fork", "knife", "spoon")
          For Each item in cutlery
              Print item
          Next ' item
      End Sub

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!