VBA හි ලූප

VBA වැඩසටහනකට එකම ක්‍රියා මාලාවක් පේළියකට කිහිප වතාවක් සිදු කිරීමට අවශ්‍ය වන අවස්ථා තිබේ (එනම්, එකම කේතය කිහිප වතාවක් නැවත නැවත කරන්න). මෙය VBA ලූප භාවිතයෙන් කළ හැකිය.

VBA ලූපවලට ඇතුළත් වන්නේ:

ඊළඟට, අපි මෙම එක් එක් චක්රය දෙස සමීපව බලමු.

Visual Basic හි Loop Operator සඳහා

ලූප ක්රියාකරුගේ ව්යුහය එම විෂුවල් බේසික්හි ආකාර දෙකකින් එකකින් සංවිධානය කළ හැක: ලූපයක් ලෙස සඳහා... ඊළඟට හෝ ලූපයක් ලෙස එක් එක් සඳහා.

"සඳහා ... ඊළඟට" චක්රය

චක්රය සඳහා... ඊළඟට දී ඇති පරාසයකින් අනුක්‍රමිකව අගයන් ගන්නා විචල්‍යයක් භාවිතා කරයි. විචල්යයේ අගයෙහි සෑම වෙනසක් සමඟම, චක්රයේ සිරුරේ සංවෘත ක්රියා සිදු කරනු ලැබේ. මෙය සරල උදාහරණයකින් තේරුම් ගැනීම පහසුය:

i = 1 සිට 10 දක්වා එකතුව = Total + iArray(i) ඊළඟ i

මෙම සරල ලූපයේ සඳහා... ඊළඟට variable භාවිතා වේ 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 Next i සඳහා

මෙන්න වැඩි කිරීම -1, එබැවින් විචල්යය i චක්‍රයේ සෑම පුනරාවර්තනයක් සමඟම 10, 9, 8, ... 1 අගයන් ගනී.

ලූප් "එක් එක්"

චක්රය එක් එක් සඳහා චක්රයකට සමානයි සඳහා... ඊළඟට, නමුත් කවුන්ටර විචල්‍යය සඳහා අගයන් අනුපිළිවෙල හරහා පුනරාවර්තනය කරනවා වෙනුවට, ලූපය එක් එක් සඳහා නිශ්චිත වස්තු සමූහයේ එක් එක් වස්තුව සඳහා ක්රියා මාලාවක් සිදු කරයි. පහත උදාහරණයේ, ලූපයක් භාවිතා කිරීම එක් එක් සඳහා වත්මන් Excel වැඩපොතෙහි ඇති සියලුම පත්‍ර ගණන් කරයි:

වැඩ පත්‍රිකා MsgBox හි එක් එක් wsheet සඳහා වැඩ පත්‍රිකාවක් ලෙස අඳුරු කරන්න

ලූප් බාධා ප්‍රකාශය "පිටවීම සඳහා"

ක්රියාකරු සඳහා පිටවන්න චක්රය බාධා කිරීමට භාවිතා වේ. කේතයේ මෙම ප්‍රකාශය හමු වූ වහාම, වැඩසටහන ලූපය ක්‍රියාත්මක කිරීම අවසන් කර මෙම ලූපයෙන් පසු කේතයේ ඇති ප්‍රකාශයන් ක්‍රියාත්මක කිරීමට ඉදිරියට යයි. උදාහරණයක් ලෙස, අරාවක නිශ්චිත අගයක් සෙවීමට මෙය භාවිතා කළ හැක. මෙය සිදු කිරීම සඳහා, ලූපයක් භාවිතයෙන්, අරාවේ සෑම අංගයක්ම ස්කෑන් කරනු ලැබේ. අවශ්ය මූලද්රව්යය සොයාගත් වහාම, ඉතිරි කොටස දෙස බැලීම අවශ්ය නොවේ - චක්රය බාධා වේ.

ක්රියාකරු යෙදුම සඳහා පිටවන්න පහත උදාහරණයේ පෙන්වා ඇත. මෙහිදී ලූපය අරා ඇතුළත් කිරීම් 100කට වඩා පුනරාවර්තනය වන අතර ඒ සෑම එකක්ම විචල්‍යයේ අගය සමඟ සංසන්දනය කරයි. dVal… ගැළපීමක් හමු වුවහොත්, ලූපය අවසන් වේ:

i = 1 සිට 100 දක්වා නම් dValues(i) = dVal එවිට IndexVal = i End For End For Next i

විෂුවල් බේසික් වල ඩූ වෝල් ලූප්

චක්රය ඉන්නකොට කරන්න නියම කරන ලද කොන්දේසිය සපුරා ඇති තාක් කල් කේතය බ්ලොක් එකක් ක්රියාත්මක කරයි. පහත දැක්වෙන්නේ ක්රියා පටිපාටියක උදාහරණයකි උප, ලූපය භාවිතා කරන ඉන්නකොට කරන්න 1000 නොඉක්මවන Fibonacci අංක අනුපිළිවෙලින් පෙන්වනු ලැබේ:

'උප ක්‍රියාපටිපාටිය ප්‍රතිදානය Fibonacci අංක 1000 නොඉක්මවන Sub Fibonacci() Dim i As Integer' අනුපිළිවෙලෙහි මූලද්‍රව්‍යයේ පිහිටීම දැක්වීමට කවුන්ටරය Dim iFib Integer' අනුපිළිවෙලෙහි වත්මන් අගය ගබඩා කරයි Dim iFib_Next Integer ලෙස 'ඊළඟ අගය ගබඩා කරයි. අනුක්‍රමයේ Dim iStep As Integer 'ඊළඟ වර්ධකයේ ප්‍රමාණය ගබඩා කරයි' i සහ iFib_Next විචල්‍යයන් ආරම්භ කරන්න i = 1 iFib_Next = 0 'Do while loop එක ක්‍රියාත්මක වනු ඇත 'වත්මන් Fibonacci අංකය 1000 ට වඩා වැඩි නම්, iFib_1000Next 1 ඉන්පසු 'පළමු මූලද්‍රව්‍ය සඳහා විශේෂ අවස්ථාව iStep = 1 iFib = 0 වෙනත්' 'අනුක්‍රමයේ වත්මන් අගය උඩින් ලිවීමට පෙර මීළඟ වර්ධකයේ ප්‍රමාණය සුරකින්න iStep = iFib iFib = iFib_Next End නම් 'A තීරුවේ වත්මන් Fibonacci අංකය මුද්‍රණය කරන්න. i Cells (i , 1) දර්ශකය සමඟ පේළියේ ඇති ක්‍රියාකාරී වැඩ පත්‍රිකාව.Value = iFib 'ඊළඟ Fibonacci අංකය ගණනය කර මූලද්‍රව්‍ය ස්ථාන දර්ශකය 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub වැඩි කරන්න

ලබා දී ඇති උදාහරණයේ, කොන්දේසිය iFib_Next < 1000 ලූපයේ ආරම්භයේ දී පරීක්ෂා කර ඇත. එබැවින්, පළමු අගය නම් iFib_Next 1000 ට වඩා වැඩි නම්, ලූපය කිසි විටෙකත් ක්‍රියාත්මක නොවේ.

ලූපයක් ක්රියාත්මක කිරීමට තවත් ක්රමයක් ඉන්නකොට කරන්න - කොන්දේසිය ආරම්භයේ නොව ලූපයේ අවසානයේ තබන්න. මෙම අවස්ථාවෙහිදී, කොන්දේසිය සපුරා තිබේද යන්න නොසලකා අවම වශයෙන් එක් වරක් ලූපය ක්රියාත්මක කරනු ලැබේ.

ක්රමානුකූලව, එවැනි චක්රයක් ඉන්නකොට කරන්න අවසානයේ පරීක්ෂා කළ යුතු කොන්දේසිය සමඟ මේ ආකාරයෙන් පෙනෙනු ඇත:

කරන්න ... ලූප් අතරතුර iFib_Next < 1000

Цикл «Do තෙක්» в Visual Basic

චක්රය දක්වා කරන්න චක්රයට බෙහෙවින් සමාන ය ඉන්නකොට කරන්න: නිශ්චිත කොන්දේසිය සපුරාලන තුරු ලූපයේ සිරුරේ ඇති කේත කොටස නැවත නැවතත් ක්‍රියාත්මක වේ (කොන්දේසි ප්‍රකාශනයේ ප්‍රතිඵලය වේ සැබෑ) ඊළඟ ක්රියා පටිපාටිය තුළ උප චක්රයක් භාවිතා කිරීම දක්වා කරන්න තීරුවක ඇති සියලුම සෛල වලින් අගයන් ලබා ගන්න A තීරුව හිස් කොටුවක් හමු වන තුරු වැඩ පත්‍රිකාව:

iRow = 1 IsEmpty තෙක් කරන්න(Cells(iRow, 1)) 'වත්මන් කොටුවේ අගය ගබඩා කර ඇත්තේ dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).අගය iRow = iRow + 1 Loop

ඉහත උදාහරණයේ, කොන්දේසිය හිස් (සෛල(iRow, 1)) ව්යුහයේ ආරම්භයේ පිහිටා ඇත දක්වා කරන්න, එබැවින් ගත් පළමු කොටුව හිස් නොවේ නම් ලූපය එක් වරක්වත් ක්‍රියාත්මක වේ.

කෙසේ වෙතත්, ලූප් උදාහරණවල පෙන්වා ඇති පරිදි ඉන්නකොට කරන්න, සමහර අවස්ථාවන්හිදී කොන්දේසි සහිත ප්රකාශනයේ ආරම්භක ප්රතිඵලය කුමක් වුවත්, අවම වශයෙන් එක් වරක් ලූපය ක්රියාත්මක කිරීම අවශ්ය වේ. මෙම අවස්ථාවේදී, කොන්දේසි සහිත ප්‍රකාශනය ලූපයේ අවසානයේ තැබිය යුතුය, මේ වගේ:

කරන්න ... හිස් වන තුරු ලූප් කරන්න(සෛල(iRow, 1))

ඔබමයි