តារាងមាតិកា
ដូចដែលអ្នកបានដឹងរួចមកហើយពីរបៀបបង្កើត UDFs (ហើយខ្ញុំសង្ឃឹមថា អ្នកក៏បានព្យាយាមអនុវត្តពួកវានៅក្នុង Excel របស់អ្នក) ចូរយើងស្វែងយល់ឱ្យកាន់តែស៊ីជម្រៅបន្តិច ហើយមើលថាតើអាចធ្វើអ្វីបានក្នុងករណីដែលមុខងារដែលបានកំណត់ដោយអ្នកប្រើប្រាស់របស់អ្នកមិនដំណើរការ។
ដើម្បីដោះស្រាយបញ្ហាមួយចំនួននៅពេលបង្កើតមុខងារផ្ទាល់ខ្លួន អ្នកទំនងជាត្រូវដំណើរការការកែកំហុស។ បន្ទាប់មក អ្នកអាចប្រាកដថាមុខងារនេះដំណើរការបានត្រឹមត្រូវ។
យើងនឹងស្វែងយល់ពីបច្ចេកទេសបំបាត់កំហុសខាងក្រោម៖
នៅពេលអ្នកបង្កើតមុខងារផ្ទាល់ខ្លួន វាតែងតែមានលទ្ធភាព ថាអ្នកនឹងធ្វើខុស។ មុខងារផ្ទាល់ខ្លួនជាធម្មតាមានភាពស្មុគស្មាញណាស់។ ហើយពួកគេមិនតែងតែចាប់ផ្តើមធ្វើការត្រឹមត្រូវភ្លាមៗនោះទេ។ រូបមន្តអាចត្រឡប់លទ្ធផលមិនត្រឹមត្រូវ ឬ #VALUE! កំហុស។ មិនដូចមុខងារ Excel ស្តង់ដារទេ អ្នកនឹងមិនឃើញសារផ្សេងទៀតទេ។
តើមានវិធីដើម្បីឆ្លងកាត់មុខងារផ្ទាល់ខ្លួនមួយជំហានម្តងមួយៗ ដើម្បីពិនិត្យមើលពីរបៀបដែលសេចក្តីថ្លែងការណ៍នីមួយៗរបស់វាដំណើរការដែរឬទេ? ប្រាកដណាស់! ការកែកំហុសត្រូវបានប្រើប្រាស់សម្រាប់បញ្ហានេះ។
ខ្ញុំនឹងផ្តល់ជូនអ្នកនូវវិធីជាច្រើនដើម្បីបំបាត់កំហុសមុខងារផ្ទាល់ខ្លួនរបស់អ្នក ដូច្នេះអ្នកអាចជ្រើសរើសមួយដែលដំណើរការសម្រាប់អ្នក។
ជាឧទាហរណ៍ យើងប្រើមុខងារផ្ទាល់ខ្លួន GetMaxBetween ពីអត្ថបទមុនរបស់យើងដែលគណនាចំនួនអតិបរមាក្នុងជួរតម្លៃដែលបានបញ្ជាក់៖
អនុគមន៍ GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i ជាចំនួនគត់ ReDim arrNums(rngCells.Count) សម្រាប់ NumRange នីមួយៗក្នុង rngCells vMax =NumRange ជ្រើសរើស Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End ជ្រើសរើស NumRange បន្ទាប់ GetMaxBetween = WorksheetFunction.Max(arrNums) End Functionគឺជាមុខងារ ជួរនៃក្រឡាដែលលេខត្រូវបានសរសេរ ក៏ដូចជាដែនកំណត់ខាងលើ និងខាងក្រោមនៃតម្លៃ។
ដាក់មុខងារ MsgBox នៅកន្លែងសំខាន់ៗ
ដើម្បីតាមដានការប្រតិបត្តិនៃការគណនា អ្នកអាចបង្ហាញ តម្លៃនៃអថេរសំខាន់បំផុតនៅលើអេក្រង់នៅកន្លែងដែលត្រឹមត្រូវ។ នេះអាចត្រូវបានធ្វើដោយប្រើប្រអប់លេចឡើង។
MsgBox គឺជាប្រអប់ដែលអ្នកអាចប្រើដើម្បីបង្ហាញប្រភេទសារមួយចំនួនទៅកាន់អ្នកប្រើប្រាស់។
វាក្យសម្ព័ន្ធរបស់ MsgBox គឺស្រដៀងគ្នាទៅនឹងមុខងារ VBA ផ្សេងទៀត៖
MsgBox(prompt [, buttons] [, title] [, helpfile, context])prompt គឺជាអាគុយម៉ង់ដែលត្រូវការ។ វាមានសារដែលអ្នកឃើញក្នុងប្រអប់។ វាក៏អាចប្រើដើម្បីបង្ហាញតម្លៃនៃអថេរនីមួយៗផងដែរ។
អាគុយម៉ង់ផ្សេងទៀតទាំងអស់គឺស្រេចចិត្ត។
[ ប៊ូតុង ] - កំណត់ថាតើប៊ូតុង និងរូបតំណាងណាមួយជា បង្ហាញក្នុង MsgBox ។ ឧទាហរណ៍ ប្រសិនបើយើងប្រើជម្រើស vbOkOnly នោះមានតែប៊ូតុង យល់ព្រម នឹងត្រូវបានបង្ហាញ។ ទោះបីជាអ្នកខកខានអាគុយម៉ង់នេះក៏ដោយ ក៏ប៊ូតុងនេះត្រូវបានប្រើតាមលំនាំដើម។
[ ចំណងជើង ] - នៅទីនេះអ្នកអាចបញ្ជាក់ចំណងជើងនៃប្រអប់សារ។
តោះប្តូរពី ពាក្យដែលត្រូវអនុវត្ត ហើយចាប់ផ្តើមបំបាត់កំហុស។ ដើម្បីបង្ហាញសារ បន្ថែមបន្ទាត់ខាងក្រោមទៅកូដនៃមុខងារ GetMaxBetween ដែលកំណត់ដោយអ្នកប្រើប្រាស់ មុនពេលប្រតិបត្តិករ Case Else ៖
MsgBox vMax, "Count -" & iនេះគឺជាអ្វីដែលយើងនឹងទទួលបាននៅក្នុងលទ្ធផល៖
អនុគមន៍ 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 To 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 ក្នុងប្រអប់ យើងនឹងឃើញលេខណាមួយដែលត្រូវនឹងលក្ខណៈវិនិច្ឆ័យសម្រាប់ការជ្រើសរើស ដូច្នេះ ដែលយើងអាចជ្រើសរើសធំបំផុតនៃពួកគេ។ ជាមួយនឹងកន្សោម "រាប់ -" & amp; ខ្ញុំនៅក្នុងរបារចំណងជើង យើងបង្ហាញចំនួនលេខដែលយើងបានជ្រើសរើសរួចហើយដើម្បីកំណត់តម្លៃអតិបរមា។ ការរាប់នឹងត្រូវបានបង្កើនជាមួយនឹងតម្លៃថ្មីនីមួយៗ។
នៅពេលដែលយើងមានសំណុំ UDF របស់យើង យើងអនុវត្តរូបមន្តខាងក្រោមទៅជួរកាលបរិច្ឆេទ៖
= GetMaxBetween (A1:A6,10,50)
បន្ទាប់ពីប៊ូតុងបញ្ចូល ត្រូវបានចុច អ្នកនឹងឃើញសារមួយដូចនៅក្នុងរូបថតអេក្រង់ខាងក្រោម៖
នេះគឺជាលេខដំបូងក្នុងជួរ A1: A6 ដែលបំពេញតាមលក្ខណៈវិនិច្ឆ័យ៖ ធំជាង 10 ប៉ុន្តែតិចជាង លើសពី 50.
បន្ទាប់ពីអ្នកចុច OK សារទីពីរនឹងលេចឡើងជាមួយនឹងលេខ 14។ លេខដែលនៅសល់មិនត្រូវគ្នានឹងការជ្រើសរើសទេ។លក្ខណៈវិនិច្ឆ័យ។ ដូច្នេះ អនុគមន៍ចេញហើយត្រឡប់តម្លៃធំបំផុតនៃតម្លៃពីរ 17.
អនុគមន៍ MsgBox អាចត្រូវបានប្រើនៅកន្លែងសំខាន់បំផុតក្នុងមុខងារផ្ទាល់ខ្លួនរបស់អ្នក ដើម្បីគ្រប់គ្រងរបៀបដែលតម្លៃ នៃការផ្លាស់ប្តូរអថេរបុគ្គល។ ប្រអប់សារអាចមានប្រយោជន៍ខ្លាំងណាស់នៅពេលដែលអ្នកមានមុខងារធំ និងការគណនាច្រើន។ ក្នុងករណីនេះ វានឹងងាយស្រួលសម្រាប់អ្នកក្នុងការកំណត់ថាតើផ្នែកណានៃកូដដែលមានកំហុសកើតឡើង។
កំណត់ចំណុចឈប់ ហើយអនុវត្តមួយជំហានម្តងៗ
អ្នកអាចបន្ថែមចំណុចឈប់ទៅកូដនៃ មុខងាររបស់អ្នកដែលការប្រតិបត្តិកូដនឹងឈប់។ ដូច្នេះអ្នកអាចអនុវត្តតាមជំហាននៃដំណើរការគណនា។ ក្នុងការធ្វើដូច្នេះ អ្នកអាចឃើញពីរបៀបដែលតម្លៃនៃអថេរផ្លាស់ប្តូរ។
ដើម្បីបន្ថែមចំណុចឈប់ សូមដាក់ទស្សន៍ទ្រនិចនៅលើបន្ទាត់ដែលមានសេចក្តីថ្លែងការណ៍ដែលអ្នកជ្រើសរើសផ្អាក។ បន្ទាប់មកចុចខាងស្តាំ ហើយជ្រើសរើស Debug -> បិទ/បើក Breakpoint ឬគ្រាន់តែចុច F9 ។ អ្នកក៏អាចចុចនៅកន្លែងដែលអ្នកចង់បាននៅលើតំបន់ពណ៌ប្រផេះបញ្ឈរនៅខាងឆ្វេងនៃកូដមុខងារ។
រង្វង់ពណ៌ក្រហមនឹងលេចឡើង ដូចដែលអ្នកអាចមើលឃើញនៅក្នុងរូបថតអេក្រង់ខាងក្រោម។ បន្ទាត់នៃកូដដែលការគណនានឹងត្រូវបានបញ្ឈប់ត្រូវបានបន្លិចជាពណ៌ក្រហម។
ឥឡូវនេះ បង្អួចកម្មវិធីនិពន្ធ VBA នឹងត្រូវបានបើកនៅពេលដែលមុខងារកំពុងដំណើរការ។ ទស្សន៍ទ្រនិចនឹងត្រូវបានដាក់នៅចំណុចដែលអ្នកឈប់។
ប្រសិនបើអ្នកដាក់ទស្សន៍ទ្រនិចកណ្ដុររបស់អ្នកលើអថេរណាមួយនៅក្នុងកូដមុខងារ អ្នកអាចឃើញចរន្តរបស់វាតម្លៃ៖
ចុច F5 ដើម្បីបន្តការគណនា។
ចំណាំ។ បន្ទាប់ពីចំណុចឈប់ អ្នកអាចចាប់ផ្តើមតាមដានវឌ្ឍនភាពនៃការគណនាជាជំហានៗ។ ប្រសិនបើអ្នកចុចប៊ូតុង F8 នោះមានតែបន្ទាត់បន្ទាប់មួយនៃកូដ VBA នឹងត្រូវបានប្រតិបត្តិ។ បន្ទាត់ពណ៌លឿងដែលមានព្រួញក៏នឹងផ្លាស់ទីទៅទីតាំងកូដដែលបានប្រតិបត្តិចុងក្រោយផងដែរ។
ចាប់តាំងពីការប្រតិបត្តិមុខងារត្រូវបានផ្អាកម្តងទៀត អ្នកអាចមើលតម្លៃបច្ចុប្បន្ននៃអថេរទាំងអស់នៃមុខងារដោយប្រើទស្សន៍ទ្រនិចកណ្ដុរ។
ការចុច F8 បន្ទាប់នឹងនាំយើងមួយជំហានទៅមុខ . ដូច្នេះអ្នកអាចចុច F8 រហូតដល់ចុងបញ្ចប់នៃការគណនា។ ឬចុច F5 ដើម្បីបន្តការគណនារហូតដល់ចំណុចឈប់បន្ទាប់។
ប្រសិនបើមានកំហុសកើតឡើង ទស្សន៍ទ្រនិចនឹងត្រូវបានបញ្ឈប់នៅចំណុចក្នុងកូដដែលកំហុសបានកើតឡើង។ ហើយអ្នកក៏នឹងឃើញសារកំហុសលេចឡើងផងដែរ។ វាធ្វើឱ្យវាងាយស្រួលក្នុងការកំណត់មូលហេតុនៃបញ្ហា។
ចំណុចឈប់ដែលអ្នកបញ្ជាក់នឹងត្រូវបានអនុវត្តរហូតដល់អ្នកបិទឯកសារ។ នៅពេលអ្នកបើកវាឡើងវិញ អ្នកនឹងត្រូវកំណត់ពួកវាម្តងទៀត។ មិនមែនជាវិធីសាស្រ្ដដ៏ងាយស្រួលបំផុតទេ អ្នកមិនគិតទេ? បញ្ចូលសេចក្តីថ្លែងការណ៍ Stop ទៅក្នុងកូដមុខងារនៅចំណុចចាំបាច់ ហើយអ្នកអាចបញ្ឈប់ការប្រតិបត្តិកម្មវិធីតាមរបៀបដូចគ្នានឹងពេលប្រើចំណុចឈប់។
នៅពេលដែល 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។
នេះជារបៀបដែលអ្នកអាចហៅមុខងារកំណត់ដោយអ្នកប្រើប្រាស់ GetMaxBerween ពីនីតិវិធី៖
Sub Test() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End Subដាក់ទស្សន៍ទ្រនិចនៅកន្លែងណាមួយក្នុងកូដ ហើយចុច F5 ។ ប្រសិនបើមិនមានកំហុសនៅក្នុងមុខងារទេ អ្នកនឹងឃើញបង្អួចលេចឡើងជាមួយនឹងលទ្ធផលនៃការគណនា។
ក្នុងករណីមានកំហុស អ្នកនឹងឃើញសារដែលត្រូវគ្នានៅក្នុងកម្មវិធីនិពន្ធ VBA ។ ការគណនានឹងត្រូវបានបញ្ឈប់ ហើយបន្ទាត់កូដដែលមានកំហុសនឹងត្រូវបានបន្លិចជាពណ៌លឿង។ អ្នកអាចកំណត់អត្តសញ្ញាណយ៉ាងងាយស្រួលអំពីទីកន្លែង និងមូលហេតុដែលកំហុសបានកើតឡើង។
នោះហើយជាទាំងអស់។ ឥឡូវនេះអ្នកបានបង្កើតកម្មវិធីបន្ថែមផ្ទាល់ខ្លួនរបស់អ្នក បន្ថែមវាទៅក្នុង Excel ហើយអ្នកអាចប្រើ UDF នៅក្នុងវាបាន។ ប្រសិនបើអ្នកចង់ប្រើ UDFs បន្ថែមទៀត គ្រាន់តែសរសេរកូដនៅក្នុងម៉ូឌុលបន្ថែមនៅក្នុងកម្មវិធីនិពន្ធ VBA ហើយរក្សាទុកវា។
នោះហើយជាវាសម្រាប់ថ្ងៃនេះ។ យើងបានគ្របដណ្តប់វិធីផ្សេងគ្នាដើម្បីបំបាត់កំហុសមុខងារផ្ទាល់ខ្លួន និងរៀនពីរបៀបប្រើពួកវានៅក្នុងសៀវភៅការងាររបស់អ្នក។ យើងពិតជាសង្ឃឹមថាអ្នករកឃើញការណែនាំទាំងនេះមានប្រយោជន៍។ ប្រសិនបើអ្នកមានចម្ងល់ណាមួយ សូមសរសេរនៅក្នុងមតិយោបល់ទៅកាន់អត្ថបទនេះ។