ຄຳສັ່ງ For...Next

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

ໄວຍາກອນ:

ແຜນວາດຄຳສັ່ງ For


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

ແຜນວາດຄຳສັ່ງ For Each


  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
ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!

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