ສາລະບານ
ດັ່ງທີ່ທ່ານຮູ້ວິທີການສ້າງ UDFs (ແລະ, ຂ້າພະເຈົ້າຫວັງວ່າ, ທ່ານຍັງໄດ້ພະຍາຍາມໃຊ້ພວກມັນໃນ Excel ຂອງທ່ານ), ໃຫ້ເຮົາຂຸດລົງເລິກແລະເບິ່ງວ່າສິ່ງທີ່ສາມາດເຮັດໄດ້ໃນກໍລະນີທີ່ຜູ້ໃຊ້ກໍານົດຫນ້າທີ່ຂອງທ່ານບໍ່ເຮັດວຽກ.
ເພື່ອແກ້ໄຂບັນຫາບາງອັນໃນເວລາສ້າງຟັງຊັນແບບກຳນົດເອງ, ສ່ວນຫຼາຍແລ້ວເຈົ້າຈະຕ້ອງແລ່ນດີບັກ. ຈາກນັ້ນທ່ານສາມາດໝັ້ນໃຈໄດ້ວ່າຟັງຊັນນັ້ນເຮັດວຽກຢ່າງຖືກຕ້ອງ.
ພວກເຮົາຈະສຳຫຼວດເທັກນິກການດີບັກຕໍ່ໄປນີ້:
ເມື່ອທ່ານສ້າງຟັງຊັນທີ່ກຳນົດເອງ, ມັນເປັນໄປໄດ້ສະເໝີ. ວ່າເຈົ້າຈະເຮັດຜິດ. ຫນ້າທີ່ກໍາຫນົດເອງແມ່ນຂ້ອນຂ້າງສັບສົນ. ແລະພວກເຂົາບໍ່ໄດ້ເລີ່ມເຮັດວຽກຢ່າງຖືກຕ້ອງໃນທັນທີ. ສູດອາດຈະໃຫ້ຜົນໄດ້ຮັບທີ່ບໍ່ຖືກຕ້ອງ ຫຼື #VALUE! ຄວາມຜິດພາດ. ບໍ່ຄືກັບຟັງຊັນ Excel ມາດຕະຖານ, ທ່ານຈະບໍ່ເຫັນຂໍ້ຄວາມອື່ນໃດ.
ມີວິທີທີ່ຈະຜ່ານຟັງຊັນແບບກຳນົດເອງເທື່ອລະຂັ້ນຕອນເພື່ອກວດເບິ່ງວ່າແຕ່ລະຂໍ້ຄວາມຂອງມັນເຮັດວຽກແນວໃດ? ແນ່ນອນ! ການດີບັກຖືກໃຊ້ສໍາລັບການນີ້.
ຂ້ອຍຈະສະເໜີໃຫ້ທ່ານຫຼາຍວິທີໃນການດີບັກຟັງຊັນແບບກຳນົດເອງຂອງເຈົ້າເພື່ອໃຫ້ເຈົ້າສາມາດເລືອກອັນທີ່ເໝາະສົມກັບເຈົ້າໄດ້.
ຕົວຢ່າງ, ພວກເຮົາໃຊ້ຟັງຊັນແບບກຳນົດເອງ. GetMaxBetween ຈາກຫນຶ່ງໃນບົດຄວາມທີ່ຜ່ານມາຂອງພວກເຮົາທີ່ຄິດໄລ່ຈໍານວນສູງສຸດໃນຂອບເຂດຂອງຄ່າທີ່ລະບຸໄວ້:
Function GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) ສໍາລັບແຕ່ລະ NumRange ໃນ rngCells vMax =NumRange ເລືອກ Case vMax Case MinNum + 0.01 ເຖິງ MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End ເລືອກ Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End FunctionThe function ຊ່ວງຂອງຕາລາງທີ່ຕົວເລກຖືກຂຽນ, ເຊັ່ນດຽວກັນກັບຂອບເຂດຈໍາກັດເທິງແລະຕ່ໍາຂອງຄ່າ.
ວາງຟັງຊັນ MsgBox ໃນສະຖານທີ່ສໍາຄັນ
ເພື່ອຕິດຕາມກວດກາການປະຕິບັດການຄິດໄລ່, ທ່ານສາມາດສະແດງ ຄ່າຂອງຕົວແປທີ່ສໍາຄັນທີ່ສຸດໃນຫນ້າຈໍໃນສະຖານທີ່ທີ່ເຫມາະສົມ. ອັນນີ້ສາມາດເຮັດໄດ້ໂດຍໃຊ້ pop-up dialog boxes.
MsgBox is a dialog box that you can use to show some kind of message to the user.
syntax ຂອງ MsgBox ແມ່ນຄ້າຍຄືກັນກັບຟັງຊັນ VBA ອື່ນໆ:
MsgBox(prompt [, buttons] [, title] [, helpfile, context])prompt ເປັນການໂຕ້ຖຽງທີ່ຕ້ອງການ. ມັນມີຂໍ້ຄວາມທີ່ເຈົ້າເຫັນຢູ່ໃນກ່ອງໂຕ້ຕອບ. ມັນຍັງສາມາດຖືກໃຊ້ເພື່ອສະແດງຄ່າຂອງຕົວແປແຕ່ລະອັນ.
ອາກິວເມັນອື່ນໆທັງໝົດແມ່ນເປັນທາງເລືອກ.
[ ປຸ່ມ ] - ກຳນົດວ່າປຸ່ມໃດ ແລະໄອຄອນໃດແດ່. ສະແດງຢູ່ໃນ MsgBox . ຕົວຢ່າງ, ຖ້າພວກເຮົາໃຊ້ທາງເລືອກ vbOkOnly , ຫຼັງຈາກນັ້ນພຽງແຕ່ກົດປຸ່ມ OK ຈະຖືກສະແດງ. ເຖິງແມ່ນວ່າທ່ານພາດການໂຕ້ຖຽງນີ້, ປຸ່ມນີ້ຖືກນໍາໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ.
[ title ] - ທີ່ນີ້ທ່ານສາມາດລະບຸຫົວຂໍ້ຂອງກ່ອງຂໍ້ຄວາມ.
ໃຫ້ປ່ຽນຈາກ ຄໍາສັບຕ່າງໆທີ່ຈະປະຕິບັດແລະເລີ່ມຕົ້ນ debugging. ເພື່ອສະແດງຂໍ້ຄວາມ, ເພີ່ມແຖວຕໍ່ໄປນີ້ໃສ່ລະຫັດຂອງ GetMaxBetween ຟັງຊັນທີ່ຜູ້ໃຊ້ກຳນົດໄວ້ກ່ອນຕົວປະຕິບັດການ Case Else :
MsgBox vMax,, "Count -" & iນີ້ແມ່ນສິ່ງທີ່ພວກເຮົາຈະໄດ້ຮັບໃນຜົນໄດ້ຮັບ:
Function GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) ສໍາລັບແຕ່ລະ NumRange ໃນ rngCells vMax = NumRange ເລືອກ Case vMax Case MinNum + 0.01 ເຖິງ MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax, "Count -" & i Case Else GetMaxBetween = 0 End ເລືອກ Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End Functionການໃຊ້ຕົວແປ vMax ໃນກ່ອງໂຕ້ຕອບ, ພວກເຮົາຈະເບິ່ງວ່າຕົວເລກໃດທີ່ກົງກັບເງື່ອນໄຂຂອງການຄັດເລືອກ, ດັ່ງນັ້ນ. ທີ່ພວກເຮົາສາມາດເລືອກເອົາທີ່ໃຫຍ່ທີ່ສຸດຂອງພວກເຂົາ. ດ້ວຍຄຳວ່າ "ນັບ -" & ຂ້າພະເຈົ້າຢູ່ໃນແຖບຫົວຂໍ້, ພວກເຮົາຊີ້ບອກຈໍານວນຕົວເລກທີ່ພວກເຮົາໄດ້ເລືອກແລ້ວເພື່ອກໍານົດມູນຄ່າສູງສຸດ. ຕົວນັບຈະຖືກເພີ່ມຂຶ້ນດ້ວຍຄ່າໃໝ່ແຕ່ລະອັນ.
ເມື່ອພວກເຮົາມີຊຸດ UDF ຂອງພວກເຮົາແລ້ວ, ພວກເຮົານຳໃຊ້ສູດຄຳນວນລຸ່ມນີ້ກັບຊ່ວງວັນທີ:
= GetMaxBetween (A1:A6,10,50)
ຫຼັງຈາກປຸ່ມ Enter ຖືກກົດ, ທ່ານຈະເຫັນຂໍ້ຄວາມໃນພາບຫນ້າຈໍຂ້າງລຸ່ມນີ້:
ນີ້ແມ່ນຕົວເລກທໍາອິດໃນຂອບເຂດ A1: A6 ທີ່ກົງກັບເງື່ອນໄຂ: ຫຼາຍກວ່າ 10 ແຕ່ນ້ອຍກວ່າ. ຫຼາຍກວ່າ 50.
ຫຼັງຈາກທີ່ທ່ານຄລິກໃສ່ OK, ຂໍ້ຄວາມທີ່ສອງຈະປາກົດຂຶ້ນກັບຕົວເລກ 14. ສ່ວນທີ່ເຫຼືອຂອງຕົວເລກບໍ່ກົງກັບການເລືອກມາດຖານ. ດັ່ງນັ້ນ, ຟັງຊັນຈະອອກ ແລະສົ່ງຄ່າທີ່ໃຫຍ່ທີ່ສຸດຂອງສອງຄ່າ, 17.
ຟັງຊັນ MsgBox ສາມາດໃຊ້ໃນສະຖານທີ່ສຳຄັນທີ່ສຸດໃນຟັງຊັນກຳນົດເອງຂອງທ່ານເພື່ອຄວບຄຸມຄ່າຕ່າງໆ. ການປ່ຽນແປງຂອງຕົວແປສ່ວນບຸກຄົນ. ກ່ອງຂໍ້ຄວາມສາມາດເປັນປະໂຫຍດຫຼາຍໃນເວລາທີ່ທ່ານມີຫນ້າທີ່ຂະຫນາດໃຫຍ່ແລະຫຼາຍຂອງຄອມພິວເຕີ້. ໃນກໍລະນີນີ້, ມັນຈະງ່າຍສໍາລັບທ່ານທີ່ຈະກໍານົດວ່າສ່ວນໃດຂອງລະຫັດທີ່ມີຄວາມຜິດພາດເກີດຂຶ້ນ.
ການກໍານົດຈຸດຢຸດແລະປະຕິບັດເປັນຂັ້ນຕອນ
ທ່ານສາມາດເພີ່ມ breakpoints ກັບລະຫັດຂອງ ຫນ້າທີ່ຂອງທ່ານທີ່ການປະຕິບັດລະຫັດຈະຢຸດ. ດັ່ງນັ້ນທ່ານສາມາດປະຕິບັດຕາມຂັ້ນຕອນການຄິດໄລ່ໂດຍຂັ້ນຕອນ. ໃນການເຮັດດັ່ງນັ້ນ, ທ່ານສາມາດເບິ່ງວ່າຄ່າຂອງຕົວປ່ຽນແປງໄດ້ແນວໃດ.
ເພື່ອເພີ່ມຈຸດຢຸດ, ເອົາຕົວກະພິບໃສ່ເສັ້ນທີ່ມີຄໍາສັ່ງທີ່ທ່ານເລືອກທີ່ຈະຢຸດຊົ່ວຄາວ. ຈາກນັ້ນຄລິກຂວາແລ້ວເລືອກ Debug -> ສະຫຼັບຈຸດຢຸດ ຫຼືພຽງແຕ່ກົດ F9 . ນອກນັ້ນທ່ານຍັງສາມາດຄລິກໃສ່ບ່ອນທີ່ຕ້ອງການໃນພື້ນທີ່ສີຂີ້ເຖົ່າຕັ້ງທາງຊ້າຍຂອງລະຫັດຟັງຊັນ.
ຮູບວົງມົນສີແດງຈະປາກົດ, ດັ່ງທີ່ທ່ານສາມາດເບິ່ງໃນຫນ້າຈໍຂ້າງລຸ່ມນີ້. ແຖວຂອງລະຫັດທີ່ການຄຳນວນຈະຖືກຢຸດແມ່ນເນັ້ນເປັນສີແດງ.
ດຽວນີ້, ໜ້າຈໍບັນນາທິການ VBA ຈະຖືກເປີດເມື່ອຟັງຊັນກຳລັງເຮັດວຽກຢູ່. ຕົວກະພິບຈະຖືກຕັ້ງຢູ່ໃນຈຸດທີ່ທ່ານຢຸດ.
ຖ້າທ່ານວາງຕົວກະພິບເມົ້າຂອງທ່ານໃສ່ຕົວແປໃດນຶ່ງໃນລະຫັດຟັງຊັນ, ທ່ານສາມາດເບິ່ງປັດຈຸບັນຂອງພວກມັນໄດ້.ຄ່າ:
ກົດ F5 ເພື່ອສືບຕໍ່ການຄຳນວນ.
ໝາຍເຫດ. ຫຼັງຈາກຈຸດຢຸດ, ທ່ານສາມາດເລີ່ມຕົ້ນຕິດຕາມຄວາມຄືບຫນ້າຂອງການຄິດໄລ່ໂດຍຂັ້ນຕອນ. ຖ້າທ່ານກົດປຸ່ມ F8, ພຽງແຕ່ຫນຶ່ງແຖວຕໍ່ໄປຂອງລະຫັດ VBA ຈະຖືກປະຕິບັດ. ເສັ້ນສີເຫຼືອງທີ່ມີລູກສອນຈະຍ້າຍໄປທີ່ຕໍາແຫນ່ງລະຫັດທີ່ປະຕິບັດສຸດທ້າຍ.
ເນື່ອງຈາກການດຳເນີນການຂອງຟັງຊັນຖືກຢຸດຊົ່ວຄາວອີກຄັ້ງ, ທ່ານສາມາດເບິ່ງຄ່າປັດຈຸບັນຂອງຕົວແປທັງໝົດຂອງຟັງຊັນໄດ້ໂດຍໃຊ້ຕົວຊີ້ເມົ້າ.
ການກົດ F8 ຕໍ່ໄປຈະນຳພວກເຮົາໄປຂ້າງໜ້າອີກບາດກ້າວໜຶ່ງ. . ດັ່ງນັ້ນທ່ານສາມາດກົດ F8 ຈົນກ່ວາໃນຕອນທ້າຍຂອງການຄິດໄລ່. ຫຼືກົດ F5 ເພື່ອສືບຕໍ່ການຄຳນວນຈົນກ່ວາຈຸດຢຸດຖັດໄປ.
ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ, ຕົວກະພິບຈະຖືກຢຸດຢູ່ທີ່ຈຸດໃນລະຫັດທີ່ເກີດຄວາມຜິດພາດຂຶ້ນ. ແລະທ່ານຍັງຈະເຫັນຂໍ້ຄວາມຜິດພາດບໍ່ເຖິງ. ອັນນີ້ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການກໍານົດສາເຫດຂອງບັນຫາ.
ຈຸດຢຸດທີ່ທ່ານລະບຸຈະຖືກນໍາໃຊ້ຈົນກວ່າທ່ານຈະປິດໄຟລ໌. ເມື່ອທ່ານເປີດມັນຄືນໃໝ່, ທ່ານຈະຕ້ອງຕັ້ງພວກມັນຄືນໃໝ່. ບໍ່ແມ່ນວິທີທີ່ສະດວກທີ່ສຸດ, ເຈົ້າຄິດບໍ?
ແນວໃດກໍ່ຕາມ, ບັນຫານີ້ສາມາດແກ້ໄຂໄດ້. ໃສ່ຄຳຖະແຫຼງ Stop ເຂົ້າໃນລະຫັດຟັງຊັນໃນຈຸດທີ່ຈຳເປັນ, ແລະທ່ານສາມາດຢຸດການດຳເນີນການຂອງໂປຣແກຣມໄດ້ໃນແບບດຽວກັນກັບເວລາໃຊ້ breakpoints.
ເມື່ອ VBA ພົບກັບ Stop ຄຳສັ່ງ, ມັນຈະຢຸດການປະຕິບັດໂຄງການ ແລະລໍຖ້າການກະທຳຂອງທ່ານ. ກວດເບິ່ງຄ່າຂອງຕົວແປ, ຫຼັງຈາກນັ້ນກົດ F5 ເພື່ອສືບຕໍ່.
ຫຼືກົດ F8 ເພື່ອປະຕິບັດຫນ້າທີ່ແຕ່ລະຂັ້ນຕອນຕາມທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງເທິງ.
ຄໍາສັ່ງ Stop ເປັນສ່ວນໜຶ່ງຂອງໂຄງການ ແລະດັ່ງນັ້ນຈຶ່ງເປັນ ບໍ່ໄດ້ຖືກລຶບ, ເຊັ່ນດຽວກັນກັບກໍລະນີທີ່ມີຈຸດຢຸດ. ເມື່ອທ່ານເຮັດການດີບັກສຳເລັດແລ້ວ, ເອົາມັນອອກເອງ. ຫຼືປ່ຽນເປັນຄໍາຄິດເຫັນໂດຍການນໍາຫນ້າດ້ວຍຄໍາອ້າງອີງດຽວ (').
ການແກ້ບັນຫາໂດຍໃຊ້ Debug.Print operator
ທ່ານສາມາດວາງ Debug.Print ໃນ ລະຫັດຟັງຊັນຢູ່ໃນສະຖານທີ່ທີ່ເຫມາະສົມ. ອັນນີ້ເປັນປະໂຫຍດສໍາລັບການກວດສອບຄ່າຂອງຕົວແປທີ່ມີການປ່ຽນແປງຮອບວຽນ.
ທ່ານສາມາດເບິ່ງຕົວຢ່າງຂອງປະສິດທິພາບຂອງ Debug.Print ໃນພາບຫນ້າຈໍຂ້າງລຸ່ມນີ້.
ຄຳຖະແຫຼງ Debug.Print i, vMax ພິມຄ່າ ແລະຕົວເລກຕາມລຳດັບຂອງພວກມັນ.
ໃນໜ້າຕ່າງທັນທີທ່ານຈະເຫັນຕົວເລກສອງຕົວ (17 ແລະ 14) ຈາກໄລຍະທີ່ເລືອກ, ເຊິ່ງກົງກັບ ກໍານົດຈໍາກັດແລະໃນບັນດາທີ່ສູງສຸດຈະໄດ້ຮັບການຄັດເລືອກ. ຕົວເລກ 1 ແລະ 2 ຫມາຍຄວາມວ່າຟັງຊັນໄດ້ສໍາເລັດ 2 ຮອບທີ່ຕົວເລກໄດ້ຖືກເລືອກ. ພວກເຮົາເຫັນຄ່າຂອງຕົວແປທີ່ສໍາຄັນທີ່ສຸດ, ດັ່ງທີ່ພວກເຮົາໄດ້ເຮັດກ່ອນຫນ້ານີ້ກັບ MsgBox . ແຕ່ນີ້ບໍ່ໄດ້ຢຸດການທໍາງານ.
ເອີ້ນຟັງຊັນຈາກຂັ້ນຕອນ
ທ່ານສາມາດເອີ້ນຟັງຊັນທີ່ຜູ້ໃຊ້ກໍານົດບໍ່ໄດ້ມາຈາກຕາລາງໃນແຜ່ນວຽກ, ແຕ່ຈາກຂັ້ນຕອນ. ໃນກໍລະນີນີ້, ຄວາມຜິດພາດທັງຫມົດຈະໄດ້ຮັບການສະແດງໃຫ້ເຫັນຢູ່ໃນປ່ອງຢ້ຽມ Visual Basic Editor.ຂັ້ນ ຕອນ:
Sub Test() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End Subວາງຕົວກະພິບຢູ່ບ່ອນໃດກໍໄດ້ໃນລະຫັດ ແລະກົດ F5 . ຖ້າບໍ່ມີຂໍ້ຜິດພາດໃນຟັງຊັນ, ທ່ານຈະເຫັນໜ້າຈໍປັອບອັບພ້ອມກັບຜົນການຄຳນວນ.
ໃນກໍລະນີມີຂໍ້ຜິດພາດ, ທ່ານຈະເຫັນຂໍ້ຄວາມທີ່ກົງກັນໃນຕົວແກ້ໄຂ VBA. ການຄິດໄລ່ຈະຖືກຢຸດແລະເສັ້ນຂອງລະຫັດທີ່ຄວາມຜິດພາດທີ່ເກີດຂຶ້ນຈະຖືກເນັ້ນໃສ່ເປັນສີເຫຼືອງ. ທ່ານສາມາດລະບຸໄດ້ຢ່າງງ່າຍດາຍວ່າບ່ອນໃດ ແລະເປັນຫຍັງຄວາມຜິດພາດຈຶ່ງເກີດຂຶ້ນ.
ນັ້ນແມ່ນທັງໝົດ. ໃນປັດຈຸບັນທ່ານໄດ້ສ້າງ add-in ຂອງທ່ານເອງ, ເພີ່ມມັນໃສ່ Excel ແລະທ່ານສາມາດນໍາໃຊ້ UDF ໃນມັນ. ຖ້າທ່ານຕ້ອງການໃຊ້ UDFs ຫຼາຍ, ພຽງແຕ່ຂຽນລະຫັດໃນໂມດູນ add-in ໃນບັນນາທິການ VBA ແລະບັນທຶກມັນ.
ນັ້ນແມ່ນມັນສໍາລັບມື້ນີ້. ພວກເຮົາໄດ້ກວມເອົາວິທີຕ່າງໆໃນການດີບັກຟັງຊັນແບບກຳນົດເອງ ແລະຮຽນຮູ້ວິທີໃຊ້ພວກມັນໃນປຶ້ມວຽກຂອງເຈົ້າ. ພວກເຮົາຫວັງວ່າເຈົ້າຈະເຫັນວ່າຂໍ້ແນະນຳເຫຼົ່ານີ້ເປັນປະໂຫຍດ. ຖ້າທ່ານມີຄໍາຖາມໃດໆ, ຂຽນໃນຄໍາເຫັນໃສ່ບົດຄວາມນີ້.