មាតិកា
មានស្ថានភាពនៅពេលដែលកម្មវិធី VBA តម្រូវឱ្យអនុវត្តសំណុំសកម្មភាពដូចគ្នាជាច្រើនដងក្នុងមួយជួរ (នោះគឺធ្វើម្តងទៀតនូវប្លុកកូដដូចគ្នាជាច្រើនដង)។ នេះអាចត្រូវបានធ្វើដោយប្រើរង្វិលជុំ VBA ។
រង្វិលជុំ VBA រួមមាន:
បន្ទាប់ យើងនឹងពិនិត្យមើលឱ្យកាន់តែដិតដល់នូវវដ្តនីមួយៗទាំងនេះ។
សម្រាប់ Loop Operator ក្នុង Visual Basic
រចនាសម្ព័ន្ធនៃប្រតិបត្តិកររង្វិលជុំ នេះ នៅក្នុង Visual Basic អាចត្រូវបានរៀបចំជាទម្រង់មួយក្នុងចំណោមទម្រង់ពីរ៖ ជារង្វិលជុំ សម្រាប់…បន្ទាប់ ឬជារង្វិលជុំ សម្រាប់គ្នា។.
វដ្ត "សម្រាប់ ... បន្ទាប់"
វដ្ត សម្រាប់…បន្ទាប់ ប្រើអថេរដែលយកតម្លៃជាបន្តបន្ទាប់ពីជួរដែលបានផ្តល់ឱ្យ។ ជាមួយនឹងការផ្លាស់ប្តូរនីមួយៗនៃតម្លៃនៃអថេរ សកម្មភាពដែលរុំព័ទ្ធនៅក្នុងតួនៃវដ្តត្រូវបានអនុវត្ត។ នេះគឺជាការងាយស្រួលក្នុងការយល់ពីឧទាហរណ៍សាមញ្ញមួយ:
សម្រាប់ i = 1 ដល់ 10 Total = Total + iArray(i) បន្ទាប់ i
នៅក្នុងរង្វង់សាមញ្ញនេះ។ សម្រាប់…បន្ទាប់ អថេរត្រូវបានប្រើ iដែលយកតម្លៃ 1, 2, 3, … 10 ជាបន្តបន្ទាប់ ហើយសម្រាប់តម្លៃនីមួយៗ កូដ VBA នៅខាងក្នុងរង្វិលជុំត្រូវបានប្រតិបត្តិ។ ដូច្នេះ រង្វិលជុំនេះបូកបញ្ចូលធាតុនៃអារេ។ iArray នៅក្នុងអថេរ សរុប.
ក្នុងឧទាហរណ៍ខាងលើ ការបង្កើនរង្វិលជុំមិនត្រូវបានបញ្ជាក់ទេ ដូច្នេះដើម្បីបង្កើនអថេរ i ពី 1 ទៅ 10 លំនាំដើមគឺជាការបង្កើន 1… ទោះយ៉ាងណាក៏ដោយ ក្នុងករណីខ្លះ ចាំបាច់ត្រូវប្រើតម្លៃបន្ថែមផ្សេងគ្នាសម្រាប់រង្វិលជុំ។ នេះអាចត្រូវបានធ្វើដោយប្រើពាក្យគន្លឹះ ជំហានដូចដែលបានបង្ហាញក្នុងឧទាហរណ៍សាមញ្ញខាងក្រោម។
សម្រាប់ d = 0 ទៅ 10 ជំហាន 0.1 dTotal = dTotal + d បន្ទាប់ d
ដោយសារក្នុងឧទាហរណ៍ខាងលើ ជំហានបង្កើនត្រូវបានកំណត់ស្មើនឹង 0.1បន្ទាប់មកអថេរ dTotal សម្រាប់ពាក្យដដែលៗនៃវដ្តនីមួយៗត្រូវចំណាយលើតម្លៃ 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0 ។
ដើម្បីកំណត់ជំហានរង្វិលជុំនៅក្នុង VBA អ្នកអាចប្រើតម្លៃអវិជ្ជមានឧទាហរណ៍ដូចនេះ៖
សម្រាប់ i = 10 ទៅ 1 ជំហាន -1 iArray(i) = i បន្ទាប់ i
នៅទីនេះការកើនឡើងគឺ -1ដូច្នេះអថេរ i ជាមួយនឹងពាក្យដដែលៗនៃវដ្តនីមួយៗត្រូវចំណាយលើតម្លៃ 10, 9, 8, … 1 ។
រង្វិលជុំ "សម្រាប់គ្នា"
វដ្ត សម្រាប់គ្នា។ ស្រដៀងទៅនឹងវដ្តមួយ។ សម្រាប់…បន្ទាប់ប៉ុន្តែជំនួសឱ្យការធ្វើម្តងទៀតលើលំដាប់នៃតម្លៃសម្រាប់អថេររាប់ រង្វិលជុំ សម្រាប់គ្នា។ អនុវត្តសំណុំសកម្មភាពសម្រាប់វត្ថុនីមួយៗក្នុងក្រុមវត្ថុដែលបានបញ្ជាក់។ ក្នុងឧទាហរណ៍ខាងក្រោមដោយប្រើរង្វិលជុំ សម្រាប់គ្នា។ រាប់សន្លឹកទាំងអស់នៅក្នុងសៀវភៅការងារ Excel បច្ចុប្បន្ន៖
Dim wSheet ជាសន្លឹកកិច្ចការសម្រាប់ wSheet នីមួយៗក្នុង Worksheets MsgBox "Найден лист: " & wSheet.Name Next wSheet
Loop interrupt statement “Exit For”
ប្រតិបត្តិករ ចេញសម្រាប់ ប្រើដើម្បីរំខានវដ្ត។ ដរាបណាសេចក្តីថ្លែងការណ៍នេះត្រូវបានជួបប្រទះនៅក្នុងកូដ កម្មវិធីបញ្ចប់ការប្រតិបត្តិនៃរង្វិលជុំ ហើយបន្តទៅការប្រតិបត្តិនៃសេចក្តីថ្លែងការណ៍ដែលមាននៅក្នុងកូដភ្លាមៗបន្ទាប់ពីរង្វិលជុំនេះ។ នេះអាចត្រូវបានប្រើជាឧទាហរណ៍ ដើម្បីស្វែងរកតម្លៃជាក់លាក់នៅក្នុងអារេមួយ។ ដើម្បីធ្វើដូចនេះដោយប្រើរង្វិលជុំធាតុនីមួយៗនៃអារេត្រូវបានស្កេន។ ដរាបណារកឃើញធាតុដែលត្រូវការ មិនចាំបាច់រកមើលអ្វីដែលនៅសល់ទេ - វដ្តនេះត្រូវបានរំខាន។
កម្មវិធីប្រតិបត្តិករ ចេញសម្រាប់ បានបង្ហាញនៅក្នុងឧទាហរណ៍ខាងក្រោម។ នៅទីនេះរង្វិលជុំធ្វើឡើងវិញនូវធាតុអារេជាង 100 ហើយប្រៀបធៀបនីមួយៗជាមួយនឹងតម្លៃនៃអថេរ dVal… ប្រសិនបើការប្រកួតត្រូវបានរកឃើញ នោះរង្វិលជុំត្រូវបានបញ្ចប់៖
សម្រាប់ i = 1 ដល់ 100 ប្រសិនបើ dValues(i) = dVal បន្ទាប់មក IndexVal = i Exit For End ប្រសិនបើ Next i
ធ្វើខណៈពេលដែលរង្វិលជុំនៅក្នុង Visual Basic
វដ្ត ធ្វើខណៈពេល ប្រតិបត្តិប្លុកនៃកូដដរាបណាលក្ខខណ្ឌដែលបានបញ្ជាក់ត្រូវបានបំពេញ។ ខាងក្រោមនេះគឺជាឧទាហរណ៍នៃនីតិវិធីមួយ។ អនុដែលក្នុងនោះដោយប្រើរង្វិលជុំ ធ្វើខណៈពេល លេខ Fibonacci មិនលើសពី 1000 ត្រូវបានបង្ហាញតាមលំដាប់លំដោយ៖
'នីតិវិធីរងបញ្ចេញលេខ Fibonacci មិនលើសពី 1000 Sub Fibonacci() Dim i As Integer' counter ដើម្បីបង្ហាញទីតាំងនៃធាតុនៅក្នុងលំដាប់ Dim iFib As Integer 'រក្សាទុកតម្លៃបច្ចុប្បន្ននៃលំដាប់ Dim iFib_Next As Integer' រក្សាទុកតម្លៃបន្ទាប់ នៃលំដាប់ Dim iStep As Integer 'រក្សាទុកទំហំនៃការបន្ថែមបន្ទាប់' ចាប់ផ្តើមអថេរ i និង iFib_Next i = 1 iFib_Next = 0 'Do while loop នឹងប្រតិបត្តិរហូតដល់តម្លៃនៃ 'ចំនួន Fibonacci បច្ចុប្បន្នគឺធំជាង 1000 Do while iFib_1000 < iFib_Next ប្រសិនបើ 1 បន្ទាប់មក 'ករណីពិសេសសម្រាប់ធាតុទីមួយ iStep = 1 iFib = 0 Else' រក្សាទុកទំហំនៃការបន្ថែមបន្ទាប់ មុនពេលសរសេរជាន់លើ 'តម្លៃបច្ចុប្បន្ននៃលំដាប់ iStep = iFib iFib = iFib_Next បញ្ចប់ ប្រសិនបើ 'បោះពុម្ពលេខ Fibonacci បច្ចុប្បន្ននៅក្នុងជួរ A នៃ សន្លឹកកិច្ចការសកម្ម 'នៅក្នុងជួរដេកដែលមានលិបិក្រម i Cells(i , 1)។តម្លៃ = iFib 'គណនាលេខ Fibonacci បន្ទាប់ ហើយបង្កើនសន្ទស្សន៍ទីតាំងធាតុដោយ 1 iFib_Next = iFib + iStep i = i + 1 រង្វិលជុំចុងរង
នៅក្នុងឧទាហរណ៍ដែលបានផ្តល់ឱ្យលក្ខខណ្ឌ iFib_Next < 1000 បានពិនិត្យនៅដើមរង្វិលជុំ។ ដូច្នេះប្រសិនបើតម្លៃដំបូង iFib_បន្ទាប់ ប្រសិនបើមានច្រើនជាង 1000 នោះរង្វិលជុំនឹងមិនត្រូវបានអនុវត្តទេ។
វិធីមួយទៀតដើម្បីអនុវត្តរង្វិលជុំ ធ្វើខណៈពេល - ដាក់លក្ខខណ្ឌមិនមែននៅដើមឡើយ ប៉ុន្តែនៅចុងបញ្ចប់នៃរង្វិលជុំ។ ក្នុងករណីនេះ រង្វិលជុំនឹងត្រូវបានប្រតិបត្តិយ៉ាងហោចណាស់ម្តង ដោយមិនគិតពីថាតើលក្ខខណ្ឌត្រូវបានបំពេញ។
តាមគ្រោងការណ៍ដូចជាវដ្តមួយ។ ធ្វើខណៈពេល ជាមួយនឹងលក្ខខណ្ឌដែលត្រូវពិនិត្យនៅចុងបញ្ចប់នឹងមើលទៅដូចនេះ៖
ធ្វើ ... រង្វិលជុំខណៈពេលដែល iFib_Next < 1000
Цикл «ធ្វើរហូតដល់» នៅក្នុង Visual Basic
វដ្ត ធ្វើរហូតដល់ ស្រដៀងទៅនឹងវដ្ត ធ្វើខណៈពេល៖ ប្លុកនៃកូដនៅក្នុងតួនៃរង្វិលជុំត្រូវបានប្រតិបត្តិម្តងហើយម្តងទៀតរហូតដល់លក្ខខណ្ឌដែលបានបញ្ជាក់ត្រូវបានបំពេញ (លទ្ធផលនៃកន្សោមតាមលក្ខខណ្ឌគឺ ជាការពិត) នៅក្នុងនីតិវិធីបន្ទាប់ អនុ ដោយប្រើវដ្តមួយ។ ធ្វើរហូតដល់ ទាញយកតម្លៃពីក្រឡាទាំងអស់ក្នុងជួរឈរមួយ។ A សន្លឹកកិច្ចការរហូតដល់ជួរឈរជួបក្រឡាទទេ៖
iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) 'តម្លៃនៃក្រឡាបច្ចុប្បន្នត្រូវបានរក្សាទុកក្នុងអារេ dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop
នៅក្នុងឧទាហរណ៍ខាងលើលក្ខខណ្ឌ IsEmpty(កោសិកា(iRow, 1)) ដែលមានទីតាំងនៅដើមដំបូងនៃរចនាសម្ព័ន្ធ ធ្វើរហូតដល់ដូច្នេះ រង្វិលជុំនឹងត្រូវបានប្រតិបត្តិយ៉ាងហោចណាស់ម្តង ប្រសិនបើក្រឡាដំបូងដែលបានយកមិនទទេ។
ទោះយ៉ាងណាក៏ដោយដូចបានបង្ហាញក្នុងឧទាហរណ៍រង្វិលជុំ ធ្វើខណៈពេលក្នុងស្ថានភាពខ្លះ វាចាំបាច់ដែលរង្វិលជុំត្រូវបានប្រតិបត្តិយ៉ាងហោចណាស់ម្តង ដោយមិនគិតពីលទ្ធផលដំបូងនៃកន្សោមតាមលក្ខខណ្ឌ។ ក្នុងករណីនេះកន្សោមតាមលក្ខខណ្ឌគួរតែត្រូវបានដាក់នៅចុងបញ្ចប់នៃរង្វិលជុំដូចនេះ៖
ធ្វើ ... រង្វិលជុំរហូតដល់ទទេ(កោសិកា(iRow, 1))