Arrays ໃນ Visual Basic ສໍາລັບຄໍາຮ້ອງສະຫມັກ

Arrays ໃນ Visual Basic ສໍາລັບຄໍາຮ້ອງສະຫມັກແມ່ນໂຄງສ້າງທີ່ປົກກະຕິແລ້ວເກັບຮັກສາຊຸດຂອງຕົວແປທີ່ກ່ຽວຂ້ອງຂອງປະເພດດຽວກັນ. ລາຍການອາເຣແມ່ນເຂົ້າເຖິງໂດຍດັດຊະນີຕົວເລກຂອງພວກເຂົາ.

ຕົວຢ່າງ, ມີທີມງານ 20 ຄົນທີ່ມີຊື່ຕ້ອງໄດ້ຮັບການບັນທຶກໄວ້ເພື່ອນໍາໃຊ້ໃນພາຍຫລັງໃນລະຫັດ VBA. ຫນຶ່ງພຽງແຕ່ສາມາດປະກາດ 20 ຕົວແປເພື່ອຖືແຕ່ລະຊື່, ເຊັ່ນ:

Dim Team_Member1 As String Dim Team_Member2 As String ... Dim Team_Member20 As String

ແຕ່ທ່ານສາມາດນໍາໃຊ້ວິທີທີ່ງ່າຍກວ່າແລະເປັນລະບຽບຫຼາຍ - ເກັບຮັກສາບັນຊີລາຍຊື່ຂອງສະມາຊິກທີມໃນ array ຂອງ 20 ຕົວແປເຊັ່ນ: string:

Dim Team_Members(1 ຫາ 20) ເປັນ String

ໃນເສັ້ນສະແດງຂ້າງເທິງ, ພວກເຮົາໄດ້ປະກາດເປັນ array. ຕອນນີ້ໃຫ້ພວກເຮົາຂຽນຄ່າຂອງແຕ່ລະອົງປະກອບຂອງມັນ, ເຊັ່ນນີ້:

Team_Members(1) = "John Smith"

ປະໂຫຍດເພີ່ມເຕີມຂອງການເກັບຮັກສາຂໍ້ມູນໃນ array, ເມື່ອທຽບກັບການນໍາໃຊ້ຕົວແປແຍກຕ່າງຫາກ, ກາຍເປັນທີ່ຊັດເຈນໃນເວລາທີ່ມັນເປັນສິ່ງຈໍາເປັນເພື່ອປະຕິບັດການປະຕິບັດດຽວກັນໃນແຕ່ລະອົງປະກອບຂອງ array. ຖ້າຊື່ຂອງສະມາຊິກໃນທີມຖືກເກັບໄວ້ໃນ 20 ຕົວແປແຍກຕ່າງຫາກ, ຫຼັງຈາກນັ້ນມັນຈະໃຊ້ເວລາ 20 ລະຫັດເພື່ອຂຽນແຕ່ລະຄັ້ງເພື່ອປະຕິບັດການປະຕິບັດດຽວກັນກັບແຕ່ລະຄົນ. ຢ່າງໃດກໍຕາມ, ຖ້າຊື່ຖືກເກັບໄວ້ໃນ array, ຫຼັງຈາກນັ້ນທ່ານສາມາດດໍາເນີນການທີ່ຕ້ອງການກັບພວກເຂົາແຕ່ລະຄົນໂດຍໃຊ້ loop ງ່າຍດາຍ.

ວິທີການເຮັດວຽກແມ່ນສະແດງໃຫ້ເຫັນຂ້າງລຸ່ມນີ້ດ້ວຍຕົວຢ່າງລະຫັດທີ່ພິມຊື່ຂອງແຕ່ລະສະມາຊິກໃນທີມຕາມລໍາດັບໃນຈຸລັງຖັນ. A ແຜ່ນວຽກ Excel ທີ່ໃຊ້ວຽກ.

ສໍາລັບ i = 1 ເຖິງ 20 Cells(i,1).Value = Team_Members(i) Next i

ແນ່ນອນ, ການເຮັດວຽກກັບ array ທີ່ເກັບຮັກສາ 20 ຊື່ແມ່ນມີຫຼາຍຫນ້ອຍ cumbersome ແລະຖືກຕ້ອງຫຼາຍກ່ວາການນໍາໃຊ້ 20 ຕົວແປແຍກຕ່າງຫາກ. ແຕ່ຈະເປັນແນວໃດຖ້າຊື່ເຫຼົ່ານີ້ບໍ່ແມ່ນ 20, ແຕ່ 1000? ແລະຖ້າ, ນອກຈາກນັ້ນ, ມັນຈໍາເປັນຕ້ອງຮັກສານາມສະກຸນແລະ patronymic ແຍກຕ່າງຫາກ?! ມັນເປັນທີ່ຊັດເຈນວ່າມັນຈະກາຍເປັນສິ່ງທີ່ເປັນໄປບໍ່ໄດ້ທີ່ຈະຈັດການກັບປະລິມານຂໍ້ມູນດັ່ງກ່າວໃນລະຫັດ VBA ໂດຍບໍ່ມີການຊ່ວຍເຫຼືອຂອງ array.

ອະເຣ Multidimensional ໃນ Excel Visual Basic

arrays Visual Basic ທີ່ໄດ້ກ່າວມາຂ້າງເທິງແມ່ນຖືວ່າເປັນໜຶ່ງມິຕິ. ນີ້ຫມາຍຄວາມວ່າພວກເຂົາເກັບຮັກສາບັນຊີລາຍຊື່ງ່າຍດາຍຂອງຊື່. ຢ່າງໃດກໍຕາມ, arrays ສາມາດມີຫຼາຍຂະຫນາດ. ຕົວຢ່າງ, array ສອງມິຕິສາມາດປຽບທຽບກັບຕາຂ່າຍໄຟຟ້າ.

ໃຫ້ເວົ້າວ່າທ່ານຕ້ອງການບັນທຶກຕົວເລກການຂາຍປະຈໍາວັນຂອງເດືອນມັງກອນສໍາລັບ 5 ທີມທີ່ແຕກຕ່າງກັນ. ອັນນີ້ຈະຕ້ອງມີອາເຣສອງມິຕິທີ່ປະກອບດ້ວຍ 5 ຊຸດເມຕຣິກເປັນເວລາ 31 ມື້. ໃຫ້ປະກາດ array ແບບນີ້:

Dim Jan_Sales_Figures(1 ຫາ 31, 1 ຫາ 5) ເປັນສະກຸນເງິນ

ເພື່ອເຂົ້າເຖິງອົງປະກອບອາເຣ Jan_Sales_Figures, ທ່ານຈໍາເປັນຕ້ອງໃຊ້ສອງດັດສະນີທີ່ຊີ້ບອກວັນຂອງເດືອນແລະຈໍານວນຄໍາສັ່ງ. ຕົວຢ່າງ, ທີ່ຢູ່ຂອງອົງປະກອບທີ່ມີຕົວເລກການຂາຍສໍາລັບ 2-ໂອ ທີມງານສໍາລັບ 15 ທ ເດືອນມັງກອນຈະຂຽນແບບນີ້:

Jan_Sales_Figures(15, 2)

ໃນທາງດຽວກັນ, ທ່ານສາມາດປະກາດ array ທີ່ມີຂະຫນາດ 3 ຫຼືຫຼາຍກວ່ານັ້ນ - ພຽງແຕ່ເພີ່ມຂະຫນາດເພີ່ມເຕີມໃສ່ການປະກາດ array ແລະໃຊ້ຕົວຊີ້ວັດເພີ່ມເຕີມເພື່ອອ້າງອີງເຖິງອົງປະກອບຂອງ array ນີ້.

ປະກາດ Arrays ໃນ Excel Visual Basic

ກ່ອນຫນ້ານີ້ໃນບົດຄວາມນີ້, ພວກເຮົາໄດ້ເບິ່ງຕົວຢ່າງຈໍານວນຫນຶ່ງຂອງການປະກາດ arrays ໃນ VBA, ແຕ່ຫົວຂໍ້ນີ້ສົມຄວນໄດ້ຮັບການເບິ່ງໃກ້ຊິດ. ດັ່ງທີ່ສະແດງ, array ມິຕິຫນຶ່ງສາມາດຖືກປະກາດເຊັ່ນນີ້:

Dim Team_Members(1 ຫາ 20) ເປັນ String

ການປະກາດດັ່ງກ່າວບອກ VBA compiler ວ່າ array ສະມາຊິກທີມ ປະກອບດ້ວຍ 20 ຕົວແປທີ່ສາມາດເຂົ້າເຖິງໄດ້ຢູ່ໃນດັດຊະນີຈາກ 1 ຫາ 20. ແນວໃດກໍ່ຕາມ, ພວກເຮົາອາດຈະຄິດວ່າການນັບຕົວແປ array ຂອງພວກເຮົາຈາກ 0 ຫາ 19, ໃນກໍລະນີນີ້ array ຄວນຖືກປະກາດເປັນແບບນີ້:

Dim Team_Members(0 ຫາ 19) ເປັນ String

ໃນຄວາມເປັນຈິງ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ຕົວເລກຂອງອົງປະກອບ array ເລີ່ມຕົ້ນຈາກ 0, ແລະໃນການປະກາດ array, ດັດຊະນີເບື້ອງຕົ້ນອາດຈະບໍ່ຖືກກໍານົດໄວ້ທັງຫມົດ, ເຊັ່ນນີ້:

Dim Team_Members(19) As String

VBA compiler ຈະປະຕິບັດການດັ່ງກ່າວເປັນການປະກາດ array ຂອງ 20 ອົງປະກອບທີ່ມີດັດຊະນີຈາກ 0 ຫາ 19.

ກົດລະບຽບດຽວກັນມີຜົນເມື່ອປະກາດອະເຣ Visual Basic ຫຼາຍມິຕິມິຕິ. ດັ່ງທີ່ສະແດງຢູ່ໃນຕົວຢ່າງໜຶ່ງແລ້ວ, ເມື່ອປະກາດອາເຣສອງມິຕິ, ຕົວຊີ້ວັດຂອງຂະໜາດຂອງມັນຖືກແຍກອອກດ້ວຍເຄື່ອງໝາຍຈຸດ:

Dim Jan_Sales_Figures(1 ຫາ 31, 1 ຫາ 5) ເປັນສະກຸນເງິນ

ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານບໍ່ກໍານົດດັດສະນີເລີ່ມຕົ້ນສໍາລັບທັງສອງຂະຫນາດຂອງ array ແລະປະກາດມັນເຊັ່ນນີ້:

Dim Jan_Sales_Figures(31, 5) ເປັນສະກຸນເງິນ

ຫຼັງຈາກນັ້ນ, ການເຂົ້ານີ້ຈະຖືກປະຕິບັດເປັນອາເຣສອງມິຕິ, ມິຕິທໍາອິດທີ່ມີ 32 ອົງປະກອບທີ່ມີດັດຊະນີຈາກ 0 ຫາ 31, ແລະມິຕິທີສອງຂອງອາເຣມີ 6 ອົງປະກອບທີ່ມີດັດຊະນີຈາກ 0 ຫາ 5.

ອາເຣໄດນາມິກ

array ທັງໝົດໃນຕົວຢ່າງຂ້າງເທິງນີ້ມີຂະໜາດຄົງທີ່. ຢ່າງໃດກໍຕາມ, ໃນຫຼາຍໆກໍລະນີທີ່ພວກເຮົາບໍ່ຮູ້ລ່ວງຫນ້າວ່າ array ຂອງພວກເຮົາຄວນຈະມີຂະຫນາດໃດ. ພວກເຮົາສາມາດອອກຈາກສະຖານະການໂດຍການປະກາດອາເຣອັນໃຫຍ່ຫຼວງ, ຂະຫນາດທີ່ແນ່ນອນຈະໃຫຍ່ກວ່າຄວາມຈໍາເປັນສໍາລັບວຽກງານຂອງພວກເຮົາ. ແຕ່ການແກ້ໄຂດັ່ງກ່າວຈະຮຽກຮ້ອງໃຫ້ມີຄວາມຊົງຈໍາພິເສດຫຼາຍແລະສາມາດເຮັດໃຫ້ໂຄງການຊ້າລົງ. ມີການແກ້ໄຂທີ່ດີກວ່າ. ພວກ​ເຮົາ​ສາ​ມາດ​ນໍາ​ໃຊ້ array ແບບ​ເຄື່ອນ​ໄຫວ – ນີ້​ແມ່ນ array ທີ່​ມີ​ຂະ​ຫນາດ​ທີ່​ສາ​ມາດ​ໄດ້​ຮັບ​ການ​ກໍາ​ນົດ​ແລະ​ການ​ປ່ຽນ​ແປງ​ຈໍາ​ນວນ​ຂອງ​ເວ​ລາ​ໃນ​ລະ​ຫວ່າງ​ການ​ປະ​ຕິ​ບັດ​ຂອງ macro ໄດ້​.

array ແບບໄດນາມິກຖືກປະກາດດ້ວຍວົງເລັບເປົ່າ, ແບບນີ້:

Dim Team_Members() ເປັນ String

ຕໍ່ໄປ, ທ່ານຈະຕ້ອງປະກາດຂະຫນາດຂອງ array ໃນລະຫວ່າງການປະຕິບັດລະຫັດໂດຍໃຊ້ການສະແດງອອກ ຣີດິມ:

ReDim Team_Members (1 ຫາ 20)

ແລະຖ້າໃນລະຫວ່າງການປະຕິບັດລະຫັດທ່ານຈໍາເປັນຕ້ອງປ່ຽນຂະຫນາດຂອງ array ອີກເທື່ອຫນຶ່ງ, ຫຼັງຈາກນັ້ນທ່ານສາມາດໃຊ້ ReDim expression ອີກເທື່ອຫນຶ່ງ:

ຖ້າ Team_Size > 20 ຫຼັງຈາກນັ້ນ ReDim Team_Members(1 To Team_Size) ສິ້ນສຸດຖ້າ

ຈົ່ງຈື່ໄວ້ວ່າການປັບຂະຫນາດຂອງອາເລແບບເຄື່ອນໄຫວດ້ວຍວິທີນີ້ຈະເຮັດໃຫ້ການສູນເສຍມູນຄ່າທັງຫມົດທີ່ເກັບໄວ້ໃນອາເຣ. ເພື່ອເກັບຮັກສາຂໍ້ມູນຢູ່ໃນ array, ທ່ານຈໍາເປັນຕ້ອງໃຊ້ຄໍາສໍາຄັນ ຮັກສາໄວ້ດັ່ງທີ່ສະແດງໄວ້ຂ້າງລຸ່ມນີ້:

ຖ້າ Team_Size > 20 ຫຼັງຈາກນັ້ນ ReDim ຮັກສາ Team_Members (1 ເຖິງ Team_Size) ສິ້ນສຸດຖ້າ

ແຕ່ຫນ້າເສຍດາຍ, ຄໍາສໍາຄັນ ຮັກສາໄວ້ ສາມາດໃຊ້ເພື່ອປ່ຽນຂອບເຂດເທິງຂອງຂະໜາດອາເຣເທົ່ານັ້ນ. ຂອບເຂດຕ່ໍາຂອງ array ບໍ່ສາມາດປ່ຽນແປງໄດ້ດ້ວຍວິທີນີ້. ນອກຈາກນັ້ນ, ຖ້າ array ມີຫຼາຍຂະຫນາດ, ຫຼັງຈາກນັ້ນໃຊ້ຄໍາສໍາຄັນ ຮັກສາໄວ້, ພຽງແຕ່ມິຕິສຸດທ້າຍຂອງອາເຣທີ່ສາມາດປັບຂະຫນາດໄດ້.

ອອກຈາກ Reply ເປັນ