ඊළඟ vba excel සඳහා ඊළඟ එකට යන්න. VBA හි ලූප් ප්‍රකාශ. ව්යාපෘතිය "තැන්පතු මත ආදායම"

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

විෂුවල් බේසික් හි ලූප් ප්‍රකාශය සඳහා

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

චක්‍රය "ඉදිරියට"

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

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

මෙම සරල ලූපයේ සඳහා...ඊළඟට variable භාවිතා වේ මම, එය අනුක්‍රමිකව 1, 2, 3, ... 10 අගයන් ගන්නා අතර, මෙම එක් එක් අගයන් සඳහා ලූපය තුළ ඇති VBA කේතය ක්‍රියාත්මක වේ. මේ අනුව, මෙම ලූපය අරාවේ මූලද්රව්ය එකතු කරයි iArrayවිචල්‍යයක මුළු.

ඉහත උදාහරණයේ, විචල්‍යය වැඩි කිරීම සඳහා, ලූප් වර්ධක පියවර නිශ්චිතව දක්වා නැත. මම 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 , එබැවින් විචල්යය මමචක්‍රයේ සෑම පුනරාවර්තනයක් සමඟම එය 10, 9, 8, ... 1 අගයන් ගනී.

එක් එක් ලූප් සඳහා

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

වැඩ පත්‍රිකා MsgBox "පත්‍රය හමු විය: " & wSheet. නම ඊළඟ wSheet හි එක් එක් wsheet සඳහා වැඩ පත්‍රිකාවක් ලෙස අඳුරු කරන්න

Loop Interrupt Operator සඳහා පිටවන්න

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

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

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

විෂුවල් බේසික් වල ලූප් වෙද්දී කරන්න

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

"උප ක්‍රියාපටිපාටිය මගින් ෆිබොනාච්චි අංක 1000 නොඉක්මවන Sub Fibonacci() Dim i As Integer "Dim iFib As Integer" අනුපිළිවෙලෙහි මූලද්‍රව්‍යයක පිහිටීම දැක්වීමට කවුන්ටරයක් ​​මුද්‍රණය කරයි "Dim iFib_Next As integer" අනුපිළිවෙලෙහි වත්මන් අගය ගබඩා කරයි. අනුක්‍රමයේ මීළඟ අගය Dim iStep As Integer "ඊළඟ වර්ධකයේ ප්‍රමාණය ගබඩා කරයි" i සහ iFib_Next i = 1 iFib_Next = 0 "විචල්‍යයන් ආරම්භ කරන්න "දැනට ඇති Fibonacci අංකයේ අගය 1000 Do ඉක්මවන තුරු Do while loop ක්‍රියාත්මක වේ. iFib_Next අතරතුර< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

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

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

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

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

Visual Basic හි Loop තෙක් කරන්න

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

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

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

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

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

ලූප් ප්‍රකාශ

VBA හි ප්‍රධාන ලූප වර්ග දෙකක් තිබේ: කවුන්ටරයක් ​​සහිත ලූප (පරාමිතික) සහ කොන්දේසියක් සහිත ලූප (පුනරාවර්තන).

යම් යම් ක්රියාවන් නිශ්චිත වාර ගණනක් සිදු කිරීමට අවශ්ය අවස්ථාවන්හිදී කවුන්ටර ලූප භාවිතා කරනු ලැබේ.

යම් කොන්දේසියක් සපුරාලන තෙක් වැඩසටහනක යම් යම් ක්‍රියා නැවත නැවත කළ යුතු විට කොන්දේසි සහිත ලූප භාවිතා වේ.

පරාමිතිය සහිත ලූපසඳහා...ඊළඟට

චක්‍ර ව්‍යුහය:

සදහා Cycle_parameter = Initial_Valueදක්වා අවසාන_අගය

[පියවර පියවර]

ක්රියාකරුවන්

[පිටවීම සඳහා]

ඊළඟ [චක්‍ර_පරාමිතිය]

කොහෙද සඳහා මූල පදය VBA (සිට), චක්රයේ ආරම්භය පෙන්නුම් කරයි;

loop_parameter විචල්‍යය ලූප් කවුන්ටරයක් ​​ලෙස අර්ථ දක්වා ඇත;

Initial_Value ලූප් පරාමිතියේ ආරම්භක අගය සඳහන් කරන අංකයක්;

මූල පදයට VBA (පෙර), බෙදීම

ආරම්භක_අගය සහ අවසාන_දැනුම;

අවසාන_අගය ලූප පරාමිතියේ අගය සඳහන් කරන අංකයක්,

චක්රය අවසන් වන විට;

පියවර මූල පදය VBA (පියවර) සඳහා භාවිතා වේ

ලූප් පියවර පිරිවිතර, විකල්ප තර්කය;

චක්‍ර පියවර සඳහන් කරන අංකයක් පියවර, i.e. වන වටිනාකම

පරාමිති අගය වැඩි කරයි (හෝ අඩු කරයි).

සෑම පියවරකදීම සයිකල් කරන්න. මෙම අංකය විය හැකිය

සෘණාත්මක;

සඳහා පිටවන්න ලූපයෙන් කලින් පිටවීමේ ක්‍රියාකරු (විකල්ප);

ඊළඟ මූල පදය VBA (ඊළඟ) දැක්වීම

චක්රයේ අවසානය.

බයිසිකල් වැඩ:

පියවර 1 පළමුව, ලූප් පරාමිතිය තීරණය කරනු ලබන අතර, මෙම විචල්‍යයේ ආරම්භක සහ අවසාන අගයන් ගණනය කර ගබඩා කර ඇත.

පියවර 2 ලූප් පරාමිතියට ආරම්භක අගයක් පවරා ඇත.

පියවර 3 ලූප් පරාමිතියෙහි ආරම්භක අගය අවසාන අගය සමඟ සංසන්දනය කෙරේ.

ලූප් පරාමිතිය අවසාන අගයට වඩා වැඩි නම්, වැඩසටහන වහාම ලූපයෙන් පිටවී ලූපය අනුගමනය කරන කේත රේඛාවට පනියි.

පියවර 4 ලූපයේ සිරුර ක්රියාත්මක වේ.

පියවර 5 ලූපයේ සිරුර ක්රියාත්මක කිරීමෙන් පසුව, ඊළඟ අගය ලූප් පරාමිතිය වෙත පවරා ඇත. පියවර 3 වෙත යන්න.

සටහන.

1. මූල පදයක් භාවිතා කරන්නේ නම්පියවර , එවිට මෙම වචනයෙන් පසුව දක්වා ඇති අංකය අනුව ලූප් පරාමිතිය වෙනස් වේ. වචනය නම්පියවර නැත, එවිට පියවර අගය එකකට සමාන වේ.

උදාහරණ 1.

I = 0 සිට 10 දක්වා පියවර 2 සඳහා (අගය I 2 කින් වැඩි වනු ඇත)

2. For...Next loop ඕනෑම කොන්දේසියක් ළඟා වූ විට ඉක්මනින් අවසන් කළ හැකිය. මෙය සිදු කිරීම සඳහා, ලූපයේ නිවැරදි ස්ථානයේ ඔබ ක්රියාකරු තැබිය යුතුයසඳහා පිටවන්න.

උදාහරණ 2.

ඩිම් එස් නිඛිල ලෙස

Dim j As Integer

S=2

j = 1 සිට 10 දක්වා

S = S + j

S > 6 නම් එවිට

සඳහා පිටවන්න (අගය නම් ලූපයෙන් පිටවන්න S > 6)

නම් අවසන්

ඊළඟ ජ

MsgBox(S)

කොන්දේසි සහිත ලූප (පුනරාවර්තන)

යම් ක්රියාවක් (ක්රියා කිහිපයක්) බොහෝ වාරයක් සිදු කිරීමට අවශ්ය නම්, නමුත් එය කොපමණ වාරයක් කල්තියා නොදන්නා අතර මෙය යම් කොන්දේසියක් මත රඳා පවතී නම්, ඔබ පූර්ව කොන්දේසියක් හෝ පසු කොන්දේසියක් සහිත ලූපයක් භාවිතා කළ යුතුය.

VBA හි ප්රධාන ලූප දෙකක් ඇත DO...LOOP මූල පදයකින් ඇතුළත් කළ කොන්දේසියක් සමඟඅතර , සහ මූල පදය මගින් ඇතුළත් කළ කොන්දේසිය සමඟතුරු . ඒ දෙකම පූර්ව කොන්දේසියක් හෝ පසු කොන්දේසියක් සමඟ විය හැකිය.

වාක්‍ය ඛණ්ඩ:

කොහෙද කරන්න මූල පදය (කරන්න);

අතර මූල පදය (තවමත්);

තුරු මූල පදය (තෙක්);

ලූප් චක්රයේ අවසානය පෙන්නුම් කරන මූල පදයක්;

<условие>සත්‍යය පරීක්ෂා කරන තාර්කික ප්‍රකාශනයකි

ලූප් සිරුරේ එක් එක් ක්රියාත්මක කිරීම ආරම්භයේ දී;

<тело_цикла>ක්රියාකරුවන්ගේ අත්තනෝමතික අනුපිළිවෙල;

කරන්න... ඉදි කරන අතරතුර කියවනවා: කොන්දේසිය සපුරා ඇති අතරතුර කරන්න. නිර්මාණය තුළකරන්න...While For

කරන්න...ඉදිකිරීම් දක්වා කියවන්න: කොන්දේසිය සපුරාලන තුරු කරන්න. නිර්මාණය තුළකරන්න... වෙනකම් පියවර වැඩි කිරීම සඳහා, ඔබ විශේෂ ක්රියාකරු ලිවිය යුතුය, මන්ද එය තුළ, නිර්මාණය මෙන් නොවසදහා , මෙය ස්වයංක්රීයව සිදු නොවේ.

මූල පදයට පසුව ලියා ඇති කොන්දේසියතුරු , එක් එක් පුනරාවර්තනය අවසානයේ පරීක්ෂා කරනු ලැබේ (ලූප් ශරීරය ක්රියාත්මක කිරීමෙන් පසු). එය ලූපයේ ඇති ආකාරයටම ක්‍රියා නොකරන බව සලකන්නඅතර . කොන්දේසිය සත්‍ය නම් (සැබෑ ), එවිට ලූපය අවසන් වේ. කොන්දේසිය සපුරා නොමැති නම් (අසත්‍ය වේබොරු ), එවිට ලූපයේ සිරුර නැවත ක්රියාත්මක වේ.

උදාහරණ 1.

ගැටලුව සකස් කිරීම. උපස්ථිති ක්‍රියා පටිපාටියක් භාවිතා කරමින් පරිමිත ශ්‍රේණියක එකතුව ගණනය කරන්න.

කාර්යය ක්රියාත්මක කිරීමේ තාක්ෂණය:

1. මූලික දත්ත: i  Z

ප්රතිඵලය: S  ආර්.

2. පූර්ව කොන්දේසියක් සහිත ලූපයක් භාවිතයෙන් සම්මත ව්‍යාපෘති මොඩියුලයේ පහත අභිරුචි පටිපාටිය ටයිප් කරන්නඅතර:

උප සාරාංශය()

ඩිම් එස් නිඛිල ලෙස

Dim i As Integer

S=0

i = 1

කරන අතරතුර i<= 10

S = S + i^2

i = i + 1

ලූප්

MsgBox(S)

අවසානය උප

3. පූර්ව කොන්දේසියක් සහිත ලූපයක් භාවිතයෙන් සම්මත ව්‍යාපෘති මොඩියුලයේ පහත අභිරුචි පටිපාටිය ටයිප් කරන්නතුරු:

උප සාරාංශය()

ඩිම් එස් නිඛිල ලෙස

Dim i As Integer

S=0

i = 1

i > 10 දක්වා කරන්න

S = S + i^2

i = i + 1

ලූප්

MsgBox(S)

අවසානය උප

4 පසු තත්ත්‍වයක් සහිත ලූපයක් භාවිතයෙන් සම්මත ව්‍යාපෘති මොඩියුලයේ පහත අභිරුචි ක්‍රියා පටිපාටිය ටයිප් කරන්නඅතර:

උප සාරාංශය()

ඩිම් එස් නිඛිල ලෙස

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

ලූප් අතරතුර i<= 10

MsgBox(S)

අවසානය උප

5 පසු තත්ත්‍වයක් සහිත ලූපයක් භාවිතයෙන් සම්මත ව්‍යාපෘති මොඩියුලයේ පහත අභිරුචි පටිපාටිය ටයිප් කරන්නතුරු:

උප සාරාංශය()

ඩිම් එස් නිඛිල ලෙස

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

i > 10 දක්වා ලූප් කරන්න

MsgBox(S)

අවසානය උප

ඔබට කේත බ්ලොක් එකක් කිහිප වතාවක් ක්‍රියාත්මක කිරීමට අවශ්‍ය තත්වයක් තිබිය හැකිය. සාමාන්‍යයෙන්, ප්‍රකාශයන් අනුක්‍රමිකව ක්‍රියාත්මක වේ: ශ්‍රිතයක පළමු ප්‍රකාශය පළමුව ක්‍රියාත්මක වේ, පසුව දෙවැන්න යනාදිය.

ක්‍රමලේඛන භාෂා වඩාත් සංකීර්ණ ක්‍රියාත්මක කිරීමේ මාර්ග සක්‍රීය කරන විවිධ පාලන ව්‍යුහයන් සපයයි.

ලූප් ප්‍රකාශය මඟින් ප්‍රකාශයක් හෝ ප්‍රකාශ සමූහයක් කිහිප වතාවක් ක්‍රියාත්මක කිරීමට ඉඩ ලබා දේ. පහත දැක්වෙන්නේ VBA හි ලූප් ප්‍රකාශයක සාමාන්‍ය දර්ශනයකි.

VBA ලූප අවශ්‍යතා හැසිරවීමට පහත ලූප වර්ග සපයයි. ඔවුන්ගේ විස්තර පරීක්ෂා කිරීමට පහත සබැඳි ක්ලික් කරන්න.

ලූප් සඳහා

A for loop යනු පුනරාවර්තන පාලන ව්‍යුහයක් වන අතර එමඟින් සංවර්ධකයෙකුට නිශ්චිත වාර ගණනක් ක්‍රියාත්මක කළ යුතු ලූපයක් කාර්යක්ෂමව ලිවීමට ඉඩ සලසයි.

වාක්‍ය ඛණ්ඩය

පහත දැක්වෙන්නේ VBA හි for loop හි වාක්‍ය ඛණ්ඩයයි.

කවුන්ටරය සඳහා = ආරම්භය අවසානය දක්වා .... .... ඊළඟට

ප්රවාහ රූප සටහන

පහත දැක්වෙන්නේ ලූප් මාදිලියේ පාලන ප්‍රවාහයයි -

  • පළමු පියවර සම්පූර්ණයි. මෙම පියවර මඟින් ඔබට ඕනෑම ලූප් පාලන විචල්‍යයක් ආරම්භ කිරීමට සහ පියවර කවුන්ටර විචල්‍යය වැඩි කිරීමට ඉඩ සලසයි.
  • දෙවනුව, තත්වය තක්සේරු කරනු ලැබේ. සත්‍ය නම්, ලූපයේ සිරුර ක්‍රියාත්මක වේ. එය අසත්‍ය නම්, ලූපයේ සිරුර ක්‍රියාත්මක නොවන අතර පාලන ප්‍රවාහය For loop එකට පසුව ඊළඟ ප්‍රකාශය වෙත ගමන් කරයි.
  • For loop loop ක්‍රියාත්මක වූ පසු පාලන ප්‍රවාහය ඊළඟ ප්‍රකාශය වෙත ගමන් කරයි. මෙම ප්‍රකාශය ඔබට ඕනෑම ලූප් පාලන විචල්‍යයක් යාවත්කාලීන කිරීමට ඉඩ සලසයි. එය පියවර කවුන්ටර අගය මත පදනම්ව යාවත්කාලීන වේ.
  • දැන් තත්වය නැවත ඇගයීමට ලක් කෙරේ. සත්‍ය නම්, ලූපය ක්‍රියාත්මක වන අතර ක්‍රියාවලිය නැවත සිදු වේ (ලූප් බොඩි, පසුව පියවර වැඩිවීම, පසුව නැවත තත්ත්වය). කොන්දේසිය අසත්‍ය වූ පසු, For loop එක අවසන් වේ.

උදාහරණයක්

බොත්තමක් එකතු කර පහත ශ්‍රිතය එක් කරන්න.

පුද්ගලික උප Constant_demo_Click() integer ලෙස dim a = 10 for i = 0 to a step 2 MsgBox "අගය i වේ: " & i Next End Sub

ඉහත කේතය සම්පාදනය කර ක්‍රියාත්මක කළ විට, එය පහත ප්‍රතිදානය නිපදවයි.

අගය i වේ: 0
අගය i වේ: 2
අගය i වේ: 4
අගය i වේ: 6
අගය i වේ: 8
අගය i වේ: 10

ප්‍රකාශ අනුපිළිවෙලක් කිහිප වතාවක් ක්‍රියාත්මක කරන අතර ලූප් විචල්‍යය පාලනය කරන කේතය කෙටි කරයි.

සඳහා ... ලූප්

අරාවක හෝ එකතුවක එක් එක් මූලද්‍රව්‍ය මත ප්‍රකාශයක් හෝ ප්‍රකාශ සමූහයක් ක්‍රියාත්මක කිරීමට සෑම ලූපයක්ම භාවිතා වේ.

සෑම ලූපයක් සඳහාම For Loop ට සමාන වේ; කෙසේ වෙතත්, අරාවේ හෝ සමූහයේ එක් එක් මූලද්‍රව්‍ය සඳහා ලූපය ක්‍රියාත්මක වේ. එබැවින්, මෙම ආකාරයේ ලූපයේ පියවර කවුන්ටරය නොපවතිනු ඇත. එය ප්‍රධාන වශයෙන් අරා සමඟ හෝ වස්තු සන්දර්භය තුළ භාවිතා වේ ගොනු පද්ධතියපුනරාවර්තන ලෙස වැඩ කිරීමට.

වාක්‍ය ඛණ්ඩය

පහත දැක්වෙන්නේ VBA හි එක් එක් ලූපයේ වාක්‍ය ඛණ්ඩයයි.

සමූහයේ එක් එක් අංග සඳහා....ඊළඟට

උදාහරණයක්

Private Sub Constant_demo_Click() "fruits is a array fruits = Array("apple", "orange", "cherries") Dim fruit names as Variant "interating using each loop. පළතුරු වල ඇති සෑම අයිතමයක් සඳහාම පළතුරු නම් = පළතුරු නම් සහ අයිතම සහ Chr(10) ඊළඟ MsgBox පළතුරු නාම අවසන් උප

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය එක් එක් පේළියේ එක් මූලද්‍රව්‍යයක් සහිත පලතුරු වල සියලුම නම් මුද්‍රණය කරයි.

ඇපල්
දොඩම්
චෙරි

සමූහයේ අවම වශයෙන් එක් මූලද්‍රව්‍යයක් තිබේ නම් සහ කණ්ඩායමේ එක් එක් මූලද්‍රව්‍ය සඳහා නැවත නැවත සිදු කරන්නේ නම් මෙය ක්‍රියාත්මක වේ.

while..wend loop

ටික වේලාවකින් ... Wend loop, කොන්දේසිය සත්‍ය නම්, Wend මූල පදය හමු වන තුරු සියලුම ප්‍රකාශ ක්‍රියාත්මක වේ.

කොන්දේසිය අසත්‍ය නම්, ලූපය අවසන් වන අතර පාලනය වෙන්ඩ් මූල පදයට පසුව ඊළඟ ප්‍රකාශය වෙත ගමන් කරයි.

වාක්‍ය ඛණ්ඩය

පහල තියෙන්නේ VBA එකේ while..Wend loop එකේ syntax එක.

කොන්දේසිය(ය) ... වෙන්ඩ්

ප්රවාහ රූප සටහන

උදාහරණයක්

පුද්ගලික උප Constant_demo_Click() අඳුරු කවුන්ටරය: කවුන්ටරය = 10 කවුන්ටරය< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ ක්ෂේත්‍රයේ පහත සඳහන් දේ ප්‍රතිදානය කරයි.

කවුන්ටරයේ වත්මන් අගය: 11
කවුන්ටරයේ වත්මන් අගය: 12
කවුන්ටරයේ වත්මන් අගය: 13
කවුන්ටරයේ වත්මන් අගය: 14
කවුන්ටරයේ වත්මන් අගය: 15

මෙය ලූප් බොඩි ක්‍රියාත්මක කිරීමට පෙර තත්වය පරීක්ෂා කරයි.

do..while loop

කොන්දේසියක් සත්‍ය වන විට ප්‍රකාශ මාලාවක් නැවත කිරීමට අවශ්‍ය වූ විට Do ... while loop භාවිතා වේ. ලූපයේ ආරම්භයේ හෝ ලූපයේ අවසානයේ තත්ත්වය පරීක්ෂා කළ හැකිය.

වාක්‍ය ඛණ්ඩය

පහත දැක්වෙන්නේ VBA හි Do...While loop හි වාක්‍ය ඛණ්ඩයයි.

Do while condition......Loop

ප්රවාහ රූප සටහන

උදාහරණයක්

පහත උදාහරණය ලූපයේ ආරම්භයේ තත්ත්වය පරීක්ෂා කිරීමට Do ... while loop භාවිතා කරයි. ලූප් එක ඇතුලේ තියෙන ප්‍රකාශ ක්‍රියාත්මක වෙන්නේ කොන්දේසිය සත්‍ය වුණොත් විතරයි.

පුද්ගලික උප Constant_demo_Click() Do while i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

i හි අගය: 1
i හි අගය: 2
i හි අගය: 3
i හි අගය: 4
i හි අගය: 5

විකල්ප වාක්‍ය ඛණ්ඩය

Do ... while loop සඳහා විකල්ප වාක්‍ය ඛණ්ඩයක් ද ඇත, එය ලූපයේ අවසානයේ ඇති තත්වය පරීක්ෂා කරයි. මෙම සින්ටැක්ස් දෙක අතර ඇති ප්‍රධාන වෙනස පහත උදාහරණයෙන් පැහැදිලි කෙරේ.

කරන්න ... ... Loop while කොන්දේසිය

උදාහරණයක්

පහත උදාහරණය ලූපයේ අවසානයේ තත්ත්වය පරීක්ෂා කිරීමට Do ... while loop භාවිතා කරයි. කොන්දේසිය අසත්‍ය වුවද, ලූපයක් තුළ ඇති ප්‍රකාශයන් අවම වශයෙන් එක් වරක්වත් ක්‍රියාත්මක වේ.

පුද්ගලික උප Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "i හි අගය වන්නේ: " & i Loop අතරතුර i< 3 "Condition is false.Hence loop is executed once. End Sub

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ පෙට්ටියක පහත ප්‍රතිදානය මුද්‍රණය කරයි.

i හි අගය: 11

The do..While statements ක්‍රියාත්මක වන්නේ කොන්දේසිය සත්‍ය වන තාක් කල්ය. (එනම්) කොන්දේසිය අසත්‍ය වන තෙක් ලූපය නැවත නැවතත් කළ යුතුය.

කරන්න.. ලූපයෙන්

කොන්දේසිය අසත්‍ය වන විට ප්‍රකාශ මාලාවක් නැවත කිරීමට අවශ්‍ය වූ විට do ... intil loop භාවිතා නොකෙරේ. ලූපයේ ආරම්භයේ හෝ ලූපයේ අවසානයේ තත්ත්වය පරීක්ෂා කළ හැකිය.

වාක්‍ය ඛණ්ඩය

පහලින් තියෙන්නේ VBA එකේ Do..Until loop එකේ syntax එක.

කොන්දේසිය දක්වා කරන්න ... ... ලූප්

ප්රවාහ රූප සටහන

උදාහරණයක්

පහත උදාහරණය ලූපයේ ආරම්භයේ කොන්දේසියක් පරීක්ෂා කිරීමට Do... Before Loop භාවිතා කරයි. ලූප් එක ඇතුලේ ප්‍රකාශ ක්‍රියාත්මක වෙන්නේ කොන්දේසිය අසත්‍ය නම් පමණයි. කොන්දේසිය සත්‍ය වූ විට එය ලූපයෙන් පිටවෙයි.

පුද්ගලික උප Constant_demo_Click() i = 10 කරන්න i>15 "තත්ත්වය වැරදියි. එබැවින් loop ක්‍රියාත්මක වනු ඇත i = i + 1 msgbox ("i හි අගය: " & i) Loop End Sub

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ පෙට්ටියක පහත ප්‍රතිදානය මුද්‍රණය කරයි.

i හි අගය: 11
i හි අගය: 12
i හි අගය: 13
i හි අගය: 14
i හි අගය: 15
i හි අගය: 16

විකල්ප වාක්‍ය ඛණ්ඩය

විකල්ප වාක්‍ය ඛණ්ඩයක් ද ඇත, Do... Before Loop, එය ලූපයේ අවසානයේ ඇති තත්ත්වය පරීක්ෂා කරයි. මෙම සින්ටැක්ස් දෙක අතර ඇති ප්‍රධාන වෙනස පහත උදාහරණයෙන් පැහැදිලි වේ.

කරන්න ... ... කොන්දේසිය තෙක් ලූප් කරන්න

ප්රවාහ රූප සටහන

උදාහරණයක්

පහත උදාහරණය ලූපයේ අවසානයේ ඇති තත්වයක් පරීක්ෂා කිරීමට Do...Before a loop භාවිතා කරයි. කොන්දේසිය සත්‍ය වුවද, ලූපයක් තුළ ඇති ප්‍රකාශයන් අවම වශයෙන් එක් වරක්වත් ක්‍රියාත්මක වේ.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "i හි අගය: " & i Loop තෙක් i more15 "තත්වය සත්‍ය වේ. එබැවින් ලූපය එක් වරක් ක්‍රියාත්මක වේ. උප අවසන් කරන්න

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ පෙට්ටියක පහත ප්‍රතිදානය මුද්‍රණය කරයි.

i හි අගය: 11

කොන්දේසිය අසත්‍ය වන තාක් කල් ප්‍රකාශයන් ක්‍රියාත්මක වනු ඇත.. (එනම්) කොන්දේසිය සත්‍ය වන තෙක් ලූපය නැවත නැවතත් කළ යුතුය.

සයිකල් පාලන වාර්තා

ලූප් පාලන ප්‍රකාශයන් ඒවායේ සාමාන්‍ය අනුපිළිවෙලින් ක්‍රියාත්මක වීම වෙනස් කරයි. ක්‍රියාත්මක කිරීම විෂය පථයෙන් ඉවත් වූ විට, අනෙකුත් සියලුම ලූප් ප්‍රකාශයන් ක්‍රියාත්මක නොවේ.

පාලන ප්රකාශය සහ විස්තරය

ක්රියාකරු ප්රතිදානය

Exit for භාවිතා කරනු ලබන්නේ යම් නිර්ණායක මත පදනම්ව අපට For Loop වෙතින් ඉවත් වීමට අවශ්‍ය වූ විටය. Exit For ක්‍රියාත්මක වූ විට, For Loop පසු වහාම පාලනය ඊළඟ ප්‍රකාශය වෙත ගමන් කරයි.

වාක්‍ය ඛණ්ඩය

පහත දැක්වෙන්නේ VBA හි Exit For Statement වාක්‍ය ඛණ්ඩයයි.

ප්රවාහ රූප සටහන

උදාහරණයක්

පහත උදාහරණය Exit For භාවිතා කරයි. කවුන්ටරය 4ට ළඟා වන්නේ නම්, For Loop අවසන් වන අතර පාලනය For Loop පසු වහාම ඊළඟ ප්‍රකාශය වෙත ගමන් කරයි.

Private Sub Constant_demo_Click() integer ලෙස dim a = 10 for i = 0 to a step 2 "i යනු කවුන්ටර විචල්‍යය වන අතර එය MsgBox 2 කින් වැඩි වේ ("අගය i වේ: " & i) i = 4 නම් එවිට i = i * 10 "මෙය ක්‍රියාත්මක වන්නේ i=4 MsgBox නම් පමණි ("අගය i වේ: " & i) "ඉවත් වූ විට i=4 End නම් Next End Sub

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ පෙට්ටියේ පහත ප්‍රතිදානය මුද්‍රණය කරයි.

අගය i වේ: 0
අගය i වේ: 2
අගය i වේ: 4
අගය i වේ: 40

For loop ප්‍රකාශයක් අවසන් කර ක්‍රියාත්මක කිරීම ලූපයෙන් පසු ප්‍රකාශය වෙත මාරු කරයි

Do Exit Do

යම් නිර්ණායක මත පදනම්ව Do Loops වලින් පිටවීමට අවශ්‍ය වූ විට Exit Do ප්‍රකාශය භාවිතා වේ. එය Do Do...While සහ Do...Before loop යන දෙකෙහිම භාවිතා කළ හැක.

Exit Do ක්‍රියාත්මක වූ විට, Do Loop එකෙන් පසු වහාම පාලනය ඊළඟ ප්‍රකාශය වෙත යයි.

වාක්‍ය ඛණ්ඩය

VBA හි Exit Do ප්‍රකාශයේ වාක්‍ය ඛණ්ඩය පහත දැක්වේ.

උදාහරණයක්

පහත උදාහරණය Exit Do භාවිතා කරයි. කවුන්ටරය 10 ට ළඟා වන්නේ නම්, Do output line එක අවසන් වන අතර For Loop පසු වහාම ඊළඟ ප්‍රකාශය වෙත පාලනය ගමන් කරයි.

පුද්ගලික උප Constant_demo_Click() i = 0 Do while i<= 100 If i >10 ඉන්පසු "Loop Exits නම් i>10 End නම් MsgBox ("i හි අගය: " & i) i = i + 2 Loop End Sub යන්නෙන් පිටවන්න.

ඉහත කේතය ක්‍රියාත්මක කළ විට, එය පණිවිඩ පෙට්ටියක පහත ප්‍රතිදානය මුද්‍රණය කරයි.

i හි අගය: 0
i හි අගය: 2
i හි අගය: 4
i හි අගය: 6
i හි අගය: 8
i හි අගය: 10

කරන අතරතුර ප්‍රකාශයක් සම්පූර්ණ කර ක්‍රියාත්මක කිරීම ලූපයෙන් පසු වහාම ප්‍රකාශයට මාරු කරයි

වැඩසටහන්කරණ මූලික කරුණු පිළිබඳ රසායනාගාර කටයුතු

2.1 විශ්ලේෂණාත්මකව නිරූපණය වන ශ්‍රිතවල වගුගත කිරීම
සහ අසල අභිසාරී වේ

කාර්යයේ ඉලක්කය

· ශාඛා හා චක්රීය ව්යුහයන් සංවිධානය කිරීමේ මූලික කරුණු පිළිබඳ න්යායික දැනුම තහවුරු කිරීම.

· දෘශ්‍ය මූලික පද්ධතියේ ශාඛා සහ චක්‍රීය ව්‍යුහයන් භාවිතා කරමින් ප්‍රායෝගික ක්‍රමලේඛන කුසලතා ලබා ගැනීම.

VB හි ලූප් ප්‍රකාශ වර්ග තුනක් තිබේ:

ගණන් කිරීමේ චක්‍රය: සඳහා... වෙත... ඊළඟට

පූර්ව කොන්දේසි සහිත ලූප: Do while...Loop, Do Until...Loop, while...WEnd

· පසු කොන්දේසි සහිත ලූප: Do...Loop while, Do...Loop තෙක්.

ගණන් කිරීමේ ලූපය - ඔබට නිශ්චිත වාර ගණනක් ප්‍රකාශ මාලාවක් හරහා චක්‍රීය කිරීමට ඉඩ සලසයි. එහි වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

සදහා කවුන්ටරය = ආරම්භ කරන්නදක්වා අවසානය

[ක්රියාකරුවන්]

[ක්රියාකරුවන්]

ඊළඟ [ කවුන්ටරය]

පරාමිතිය කවුන්ටරයඑක් එක් පුනරාවර්තනයෙන් පසුව ස්වයංක්‍රීයව වැඩි වන සංඛ්‍යාත්මක විචල්‍යයක් (පූර්ණ සංඛ්‍යාව, සැබෑ වර්ගය හෝ දිනය, ප්‍රභේදය, මුදල් වර්ගය). ආරම්භක අගය කවුන්ටරයපරාමිතියට සමාන වේ ආරම්භ කරන්න,සහ අවසාන පරාමිතිය - අවසානය.නිශ්චිතව දක්වා නොමැති නම්, පියවර 1 ට සමාන ලෙස සලකනු ලැබේ; පියවර අගය වෙනස් කළ හැක. එය ධන හෝ සෘණ අංකයක් විය හැක.

Do....Loop හි වාක්‍ය ඛණ්ඩ හතරක් ඇත:

Do... Loop යන මූල පද අතර ඇති ප්‍රකාශයන් කොන්දේසිය අනුව නිශ්චිත වාර ගණනක් ක්‍රියාත්මක වේ. උදාහරණයක් ලෙස, පහත වැඩසටහන් ඛණ්ඩයේ, C = 100 විට, කොන්දේසිය තෘප්තිමත් වන අතර ලූපය ඇතුල් කරනු ලැබේ. ලූප් එක ඇතුලේ, ක්‍රියා පටිපාටිය කැඳවා C හි අගය 1 කින් අඩු කරයි. පසුව කොන්දේසිය (C > 0) නැවත පරීක්ෂා කර ලූප් ක්‍රියාකරුවන් නැවත ක්‍රියාත්මක කරනු ලැබේ (ඒවා සම්පූර්ණයෙන් 100 වතාවක් ක්‍රියාත්මක වේ), C = දක්වා 0. C > 0 කොන්දේසිය අසත්‍ය වී ලූපය නතර වූ විට.

C > 0 අතරතුර කරන්න

සින්ටැක්ස් 2 හි පූර්ව කොන්දේසියක් සහිත ලූපයක් භාවිතයෙන් ක්‍රියාත්මක කරන ලද එකම ක්‍රමලේඛ ඛණ්ඩය:

මෙම අවස්ථාවෙහිදී, ලූපය ධාවනය වන්නේ කොන්දේසිය අසත්‍ය වන තාක් කල්, පෙර අවස්ථාව මෙන් නොව, එය දිගටම පවතී කලින් C = 0 කොන්දේසිය සම්පූර්ණ කිරීම.

ලූප් ප්‍රකාශ 3 සහ 4 කොන්දේසි හැර පළමු දෙකට වාක්‍ය ඛණ්ඩයේ බොහෝ සමාන වේ නැතඅවම වශයෙන් එක් වරක් ලූපය ක්රියාත්මක වන තුරු ගණනය කරනු ලැබේ.

මෙම loop syntaxes හට ලූපය පිටුපස ඇති ක්‍රියාකරු වෙත පාලනය මාරු කිරීමට Exit For සහ Exit Do unconditional loop exit statements භාවිතා කළ හැක. උදාහරණයක් ලෙස, පහත වැඩසටහන් ඛණ්ඩයේ, C හි ආරම්භක අගය >50 නම්, ලූපය වහාම නතර වේ.



C දක්වා කරන්න<= 0

MsgBox "ආරම්භය" අගය පිළිගත හැකි ප්‍රමාණයට වඩා වැඩිය", "ආදාන දෝෂය"

Visual Basic හි මුල් අනුවාද වල while...Wend loop භාවිතා කරන ලදී. එහි වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

අතර<условие>

<Операторы>

Do..Loop loop මෙන් නොව, while ..Wend loop හි ලූපයේ අවසානයේ තත්වය පරීක්ෂා කරන දෙවන විකල්පය නොමැත. ඊට අමතරව, Exit Do වැනි ලූප් පිටවීමේ ප්‍රකාශයක් එයට නොමැත.

VBA. චක්ර සංවිධානය කිරීම.

ක්‍රියාවක් හෝ ක්‍රියා සමූහයක් නිශ්චිත වාර ගණනක් පුනරාවර්තනය කිරීමට ලූප් ප්‍රකාශ භාවිතා කරයි. පුනරාවර්තන ගණන (ලූප් පුනරාවර්තන) පූර්ව නිර්වචනය හෝ ගණනය කළ හැක.

VBA ලූපං ඉදිකිරීම් වර්ග දෙකකට සහය දක්වයි:

  1. ස්ථාවර පුනරාවර්තන සංඛ්‍යාවක් සහිත ලූප ( ප්රතිවිරෝධී ලූප).
  2. අවිනිශ්චිත පුනරාවර්තන සංඛ්‍යාවක් සහිත ලූප ( කොන්දේසි සහිත ලූප).

සියලුම වර්ගයේ චක්‍ර සඳහා සංකල්පය භාවිතා වේලූප් ශරීරය , එය ලූපයේ ආරම්භක සහ අවසාන ප්‍රකාශ අතර කොටු කර ඇති ප්‍රකාශ සමූහයක් අර්ථ දක්වයි. ලූපයේ සිරුරේ ප්රකාශයන් ක්රියාත්මක කිරීමේ එක් එක් පුනරාවර්තනය ලෙස හැඳින්වේපුනරාවර්තනය

ස්ථාවර චක්‍ර

ස්ථාවර ලූපයක් සංවිධානය කිරීම සඳහා VBA පාලන ව්‍යුහයන් දෙකක් සපයයි: සඳහා ... ඊළඟ (කවුන්ටරයක් ​​සහිත ලූපය) සහ එක් එක් ... ඊළඟ (ගණනයක් සහිත ලූපය).

ක්‍රියාකරු සඳහා...ඊළඟට මෙය නිශ්චිත පුනරාවර්තන සංඛ්‍යාවක් ක්‍රියාත්මක කරන සාමාන්‍ය කවුන්ටර ලූපයකි. For...ඊළඟ ප්‍රකාශයේ වාක්‍ය ඛණ්ඩය වන්නේ:

සදහා<счетчик> = <начЗначение>එම<конЗначение>

<блок операторов>

ඊළඟ [<счетчик>]

For...Next operator භාවිතා කිරීමේ උදාහරණයක්.

ලැයිස්තුගත කිරීම 1. ඊළඟ ක්‍රියාකරු සඳහා

කාර්යය: පරිශීලකයාගෙන් අංක දෙකක් ලැබෙන වැඩසටහනක් සාදන්න.

‘ මෙම අංක දෙක මගින් දක්වා ඇති පරාසයේ සියලුම සංඛ්‍යා එකතු කරයි, ඉන්පසු

' ප්රතිඵල ප්රමාණය පෙන්වයි.

උප සාම්පල7()

Dim i As Integer ‘cycle counter

Dim sStart 'ආරම්භක කවුන්ටර අගය

Dim sEnd 'අවසන් කවුන්ටර අගය

Dim sSum As Long 'ප්‍රතිඵල එකතුව

sStart = InputBox ("පළමු අංකය ඇතුලත් කරන්න:")

sEnd = InputBox ("දෙවන අංකය ඇතුලත් කරන්න:")

sSum = 0

i = CInt(sStart) සිට CInt(sEnd) සඳහා

sSum = sSum + i

ඊළඟට අයි

MsgBox ““ & sStart & ” සිට “ & sEnd & ” දක්වා සංඛ්‍යාවල එකතුව: “ & sSum

අවසානය උප

එක් එක් සඳහා ලූප් ප්‍රකාශය...ඊළඟවස්තු වර්ගයේ ක්‍රියාකරුවන්ගේ ගණයට අයත් වේ, i.e. එකතු කිරීම් සඳහා මූලික වශයෙන් අදාළ වේවස්තූන්, මෙන්ම අරා . අරාවේ හෝ එකතුවේ ඇති මූලද්‍රව්‍ය ගණනට අනුරූප වන ලූපයේ සිරුර ස්ථාවර වාර ගණනක් ක්‍රියාත්මක වේ. එක් එක් සඳහා...ඊළඟ ප්‍රකාශ ආකෘතිය:

එක් එක් සඳහා<элемент>තුල<группа> <блок операторов>ඊළඟ [<элемент>]

කොන්දේසි සහිත ලූප (නිශ්චිත ලූප)

යම් යම් කොන්දේසි යටතේ පමණක් නැවත නැවත ක්රියාවන් සිදු කළ යුතු විට කොන්දේසි සහිත ලූප භාවිතා වේ. පුනරාවර්තන ගණන නිර්වචනය කර නොමැති අතර සාමාන්යයෙන් ශුන්යයට සමාන විය හැක (විශේෂයෙන්, පූර්ව කොන්දේසියක් සහිත ලූප සඳහා). VBA විසින් සංවර්ධකයින්ට කොන්දේසි සහිත ලූප සංවිධානය කිරීම සඳහා පාලන ව්‍යුහයන් කිහිපයක් ඉදිරිපත් කරයි:

  • පරීක්ෂා කරන තත්ත්ව වර්ගය සහ මෙම චෙක්පත සම්පූර්ණ කිරීමට ගතවන කාලය අනුව වෙනස් වන Do..Loops වර්ග හතරක්.
  • Continous loop while... Wend.

Do while... Loop සාමාන්‍ය වේ පූර්ව කොන්දේසිය සහිත ලූප්. ලූපයේ සිරුර ක්රියාත්මක කිරීමට පෙර තත්ත්වය පරීක්ෂා කරනු ලැබේ. එය තෙක් චක්රය එහි කාර්යය දිගටම කරගෙන යයි<условие>ක්‍රියාත්මක වේ (එනම් සත්‍ය අගය ඇත). චෙක්පත ආරම්භයේ දී සිදු කරන බැවින්, ලූපයේ සිරුර කිසි විටෙක ක්රියාත්මක කළ නොහැක. කරන අතරතුර... ලූප් ආකෘතිය:

අතරතුර කරන්න<условие>

<блок операторов>

ලූප්

ලැයිස්තුගත කිරීම 2. Do while... Loop

කාර්යය: පරිශීලක ආදානය අවශ්‍ය වැඩසටහනක් සාදන්න

‘අත්තනෝමතික සංඛ්‍යා අනුපිළිවෙලක්. ආදානය අවසන් කළ යුතුය

‘ ඇතුළත් කළ ඔත්තේ සංඛ්‍යාවල එකතුව 100 ඉක්ම වූ පසුව පමණි.

උප සාම්පල 8()

Dim OddSum පූර්ණ සංඛ්‍යා ලෙස ඔත්තේ සංඛ්‍යා එකතුව

Dim OddStr As String ‘ඔත්තේ අංක සහිත තන්තුවක්

ඇතුළත් කළ අංක පිළිගැනීමට Dim Num

OddStr = "" 'ප්‍රතිදාන තන්තු ආරම්භ කිරීම

OddSum = 0 'OddSum ආරම්භ කරන්න

OddSum අතරතුර කරන්න< 100 ‘начало цикла

Num = InputBox ("අංකයක් ඇතුලත් කරන්න:")

නම් (සංඛ්‍යා මාදිලිය 2)<>0 ඉන්පසුව 'සමානාත්මතාවය පරීක්ෂා කරන්න

OddSum = OddSum + Num ‘ඔත්තේ සංඛ්‍යා එකතුවෙහි සමුච්චය

OddStr = OddStr සහ Num & ””

නම් අවසන්

ලූප්

‘ඔත්තේ අංක සහිත නූලක් මුද්‍රණය කරන්න

MsgBox විමසුම:=”ඔත්තේ අංක: ” & OddStr

අවසානය උප

Do...Loop while Statementසංවිධානය සඳහා නිර්මාණය කර ඇතපසු තත්ත්‍වය සහිත ලූපය. අවම වශයෙන් එක් වරක් ලූපයේ සිරුර ක්රියාත්මක කිරීමෙන් පසුව තත්ත්වය පරීක්ෂා කරනු ලැබේ. දක්වා චක්රය එහි කාර්යය දිගටම කරගෙන යයි<условие>සත්‍යව පවතී. කරන්න... ලූප් වෙද්දී ෆෝමැට්:

කරන්න<блок операторов>ලූප් වෙද්දී<условие>

ලැයිස්තුගත කිරීම 3. පසු තත්ත්‍වය සහිත ලූප්

කාර්යය: "අංකය අනුමාන කරන්න" ක්‍රීඩාව සඳහා වැඩසටහනක් සාදන්න. වැඩසටහන අහඹු විය යුතුය

1 සිට 1000 දක්වා පරාසයක අංකයක් උත්පාදනය කිරීමේ මාර්ගය, පරිශීලකයා කළ යුතුය

"මෙම අංකය අනුමාන කරන්න. මෙම වැඩසටහන ඇතුලත් කරන ලද එක් එක් අංකය සඳහා ඉඟියක් පෙන්වයි

' "වැඩි හෝ අඩු".

උප සාම්පල 8()

සසම්භාවී ටයිමරය සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍රය ආරම්භ කරන්න

Dim msg As String ‘ පණිවිඩ තන්තුව

රහස් අංකය දිගු, පරිශීලක අංකය ප්‍රභේදයක් ලෙස අඳුරු කරන්න

ආරම්භය: SecretNumber = Round(Rnd * 1000) ‘පරිගණක ජනනය කළ අංකය

UserNumber = පරිශීලකයා විසින් ඇතුලත් කර ඇති හිස් ‘ අංකය

ක්‍රීඩාව කරන්න

Case True තෝරන්න

Case IsEmpty(UserNumber): msg = "අංකයක් ඇතුලත් කරන්න"

Case UserNumber > SecretNumber: msg = "ගොඩක්!"

නඩු පරිශීලක අංකය< SecretNumber: msg = “Слишком мало!”

අවසන් තේරීම

UserNumber = InputBox(prompt:=msg, Title:="අංකය අනුමාන කරන්න")

පරිශීලක අංකය අතරතුර ලූප් කරන්න<>රහස් අංකය

' විභාගය

MsgBox නම් ("නැවත සෙල්ලම් කරන්න?", vbYesNo + vbQuestion, "ඔබ එය අනුමාන කළා!") = vbYes එවිට

GoTo Begin

නම් අවසන්

අවසානය උප

Loops Do Until... Loop and Do... Loop Until කලින් සාකච්ඡා කළ කොන්දේසි සහිත ලූපවල ප්‍රතිලෝම වේ. සාමාන්‍යයෙන්, ඒවා සමාන ලෙස ක්‍රියා කරයි, කොන්දේසිය අසත්‍ය නම් ලූපයේ සිරුර ක්‍රියාත්මක වේ (i.e.<условие>= බොරු). ලූප් ආකෘතිය තෙක් කරන්න:

දක්වා කරන්න<условие> <блок операторов>ලූප්

කරන්න... ලූප් තෙක් ලූප් ආකෘතිය:

<блок операторов>

ලූප් දක්වා<условие>

ප්රායෝගික කාර්යය:ප්‍රතිලෝම ලූප ප්‍රකාශ භාවිතයෙන් ලැයිස්තු 10 සහ 11 හි වැඩසටහන් නැවත ලියන්න.

Loop while...Wend කොන්දේසි සහිත ලූප සඳහා ද අදාළ වේ. මෙම ක්රියාකරු Do while... Loop ව්‍යුහය සමඟ සම්පුර්ණයෙන්ම අනුකූල වේ. අතරතුර...Wend loop ආකෘතිය:

අතර<условие>

<блок операторов>

වෙන්ඩ්

මෙම ක්රියාකරුගේ සුවිශේෂී ලක්ෂණය වන්නේ නොහැකියාවයි බලහත්කාරයෙන් අවසන් කිරීම(බාධා කරමින්) ලූපයේ සිරුර (Exit Do ක්‍රියාකරු while ... Wend loop තුළ ක්‍රියා නොකරයි).

චක්රයකට බාධා කිරීම

පුනරාවර්තනයක් කලින් අවසන් කිරීමට සහ ලූපයෙන් පිටවීමට, පිටවීමේ ප්‍රකාශය භාවිතා වේ. මෙම ක්‍රියාකරු විට... වෙන්ඩ් හැර ඕනෑම චක්‍රීය ව්‍යුහයකට අදාළ වේ. ලූපයක් බිඳීමට Exit භාවිතා කිරීම සඳහා වන සාමාන්‍ය වාක්‍ය ඛණ්ඩය වන්නේ:

<начало_цикла>

[<блок операторов1>]

පිටවීම (සඳහා | කරන්න)

[<блок операторов2>]

<конец_цикла>

පිටවීමේ ප්‍රකාශය ක්‍රියාත්මක කළ විට, ලූපය බාධා වන අතර ප්‍රකාශයෙන් පසුව ප්‍රකාශය වෙත පාලනය මාරු කරනු ලැබේ.<конец_цикла>. ලූපයක සිරුරේ පිටවීමේ ප්‍රකාශ කිහිපයක් තිබිය හැක.

ලැයිස්තුගත කිරීම 4. ලූපයෙන් පිටවීමට බල කරන්න

උප සාම්පල9()

i = 1 සිට 10000000 දක්වා

i = 10 නම් Exit For ‘ කවුන්ටරය 10ට ළඟා වූ විට ලූපයෙන් පිටවන්න

ඊළඟ




ඉහල