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

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

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

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

"For...Next" Loop එක

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

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

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

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

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 සඳහා වැඩ පත්‍රිකාවක් ලෙස අඳුරු කරන්න

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

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

ක්රියාකරු යෙදුම සඳහා පිටවන්නපහත උදාහරණයේ පෙන්වා ඇත. මෙහිදී ලූපය අරාවේ ඇතුළත් කිරීම් 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 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 හි කවුන්ටරයක් ​​(පරාමිතික) සහ කොන්දේසියක් සහිත ලූප (පුනරාවර්තනය) සහිත ලූප ලූප ප්රධාන වර්ග දෙකක් ඇත.

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

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

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

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

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

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

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

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

ඊළඟ [Loop_Parameter]

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

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

Start_Value චක්‍ර පරාමිතියෙහි ආරම්භක අගය සඳහන් කරන අංකයක්;

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

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

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

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

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

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

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

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

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

සෘණ;

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

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

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

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

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

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

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

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

පියවර 4 ලූප් ශරීරය ක්රියාත්මක වේ.

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

සටහන.

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

උදාහරණ 1

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

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

උදාහරණ 2

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

Dim j As Integer

S=2

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

S = S + j

S > 6 නම් එවිට

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

නම් අවසන්

ඊළඟ ජ

MsgBox(S)

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

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

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

වාක්‍ය ඛණ්ඩ:

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

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

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

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

<условие>තාර්කික ප්‍රකාශනය, එහි සත්‍යය පරීක්ෂා කරනු ලැබේ

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

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

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

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

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

උදාහරණ 1

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

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

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

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

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

subsumma()

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

Dim i As Integer

S=0

i = 1

මම කරන අතරතුර කරන්න<= 10

S=S+i^2

i = i + 1

ලූපය

MsgBox(S)

අවසාන උප

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

subsumma()

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

Dim i As Integer

S=0

i = 1

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

S=S+i^2

i = i + 1

ලූපය

MsgBox(S)

අවසාන උප

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

subsumma()

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

Dim i As Integer

S=0

i = 1

S=S+i^2

i = i + 1

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

MsgBox(S)

අවසාන උප

5 ව්‍යාපෘතියේ සම්මත මොඩියුලයේ පහත සඳහන් පරිශීලක ක්‍රියා පටිපාටිය ටයිප් කරන්න, පසු කොන්දේසියක් සහිත ලූපයක් භාවිතා කරන්නතුරු :

subsumma()

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

Dim i As Integer

S=0

i = 1

S=S+i^2

i = i + 1

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

MsgBox(S)

අවසාන උප

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

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

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

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

ලූප් සඳහා

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

වාක්‍ය ඛණ්ඩය

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

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

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

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

  • පළමු පියවර සිදු කරමින් පවතී. මෙම පියවර මඟින් ඔබට ඕනෑම ලූප් පාලන විචල්‍යයක් ආරම්භ කිරීමට සහ පියවර කවුන්ටර විචල්‍යය වැඩි කිරීමට ඉඩ සලසයි.
  • දෙවනුව, තත්වය ඇගයීමට ලක් කෙරේ. සත්‍ය නම්, ලූපයේ සිරුර ක්‍රියාත්මක වේ. එය අසත්‍ය නම්, ලූපයේ බඳ ක්‍රියාත්මක නොවන අතර පාලන ප්‍රවාහය සඳහා ලූපයෙන් පසුව ඊළඟ ප්‍රකාශය වෙත ඉදිරියට යයි.
  • for 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 හි වාක්‍ය ඛණ්ඩයයි.

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

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

උදාහරණයක්

පුද්ගලික උප 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 සඳහා විකල්ප වාක්‍ය ඛණ්ඩයක් ද ඇත, එය ලූපයේ අවසානයේ ඇති තත්වය පරීක්ෂා කරයි. මෙම සින්ටැක්ස් දෙක අතර ඇති ප්‍රධාන වෙනස පහත උදාහරණයෙන් පැහැදිලි කෙරේ.

Do ... ... Loop while condition

උදාහරණයක්

පහත උදාහරණය ලූපයේ අවසානයේ තත්ත්වය පරීක්ෂා කිරීමට Do ... while loop භාවිතා කරයි. Condition එක False උනත් loop එක ඇතුලේ තියන statements එක පාරක් හරි execute වෙනවා.

පුද්ගලික උප 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

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

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

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

වාක්‍ය ඛණ්ඩය

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

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

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

උදාහරණයක්

පහත උදාහරණය ලූපයේ ආරම්භයේ කොන්දේසියක් පරීක්ෂා කිරීමට 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 Loop ලූප් අවසානයේ ඇති කොන්දේසියක් පරීක්ෂා කිරීමටයි. කොන්දේසිය සත්‍ය වුවද, ලූපය තුළ ඇති ප්‍රකාශයන් අවම වශයෙන් එක් වරක්වත් ක්‍රියාත්මක වේ.

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

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

i හි අගය: 11

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

ලූප් පාලන වාර්තා

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

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

ක්රියාකරු පිටවීම

for Loop එකකින් යම් යම් නිර්ණායක මත පදනම්ව පිටවීමට අවශ්‍ය වූ විට for exit භාවිතා වේ. 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 හි ඇති ලූප් ප්‍රකාශයන් කොන්දේසිය හැර පළමු දෙකට බෙහෙවින් සමාන ය නැතලූපය අවම වශයෙන් එක් වරක් ක්‍රියාත්මක වන තෙක් ඇගයීමට ලක් කෙරේ.

මෙම ලූපවල වාක්‍ය ඛණ්ඩ වලදී, ඔබට ලූපයෙන් කොන්දේසි විරහිතව පිටවීමේ ක්‍රියාකරුවන් භාවිතා කළ හැකිය Exit For සහ Exit Do, එමඟින් ඔබට ලූපය පිටුපස ක්‍රියාකරු වෙත පාලනය මාරු කිරීමට ඉඩ සලසයි. උදාහරණයක් ලෙස, පහත වැඩසටහන් ඛණ්ඩයේ, C හි ආරම්භක අගය >50 නම්, ලූපය වහාම නතර වේ.



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

MsgBox "ආරම්භ කරන්න. අගය අවසරයට වඩා වැඩිය", "ආදාන දෝෂය"

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

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

<Операторы>

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

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

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

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

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

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

ස්ථාවර සයිකල්

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

මීළඟ ප්‍රකාශය සඳහා එය ලබා දී ඇති පුනරාවර්තන සංඛ්‍යාවක් සිදු කරන කවුන්ටරයක් ​​සහිත සාමාන්‍ය ලූපයකි. For … ඊළඟ ප්‍රකාශයේ වාක්‍ය ඛණ්ඩය වන්නේ:

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

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

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

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

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

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

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

' ප්රතිඵල එකතුව පෙන්වයි.

උප සාම්පල7()

Dim i As Integer ‘ලූප් කවුන්ටරය

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. එකතු කිරීම් සඳහා මූලික වශයෙන් අදාළ වේවස්තූන් මෙන්ම අරා . අරාවේ හෝ එකතුවේ ඇති මූලද්‍රව්‍ය ගණනට අනුරූප වන ලූපයේ සිරුර ස්ථාවර වාර ගණනක් ක්‍රියාත්මක වේ. For each … ඊළඟ ප්‍රකාශයේ ආකෘතිය වන්නේ:

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

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

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

  • ලූප් වර්ග හතරක් Do..Loop, පරීක්ෂා කරන තත්ත්වය සහ මෙම චෙක්පත ක්‍රියාත්මක කරන වේලාව අනුව වෙනස් වේ.
  • බාධාවකින් තොරව… වෙන්ඩ් ලූපයක්.

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

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

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

ලූපය

ලැයිස්තුගත කිරීම 2. කරන්න... ලූප්

' අරමුණ: පරිශීලක ආදානය පිළිගන්නා වැඩසටහනක් ලියන්න

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

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

උප සාම්පල 8()

Dim OddSum Integer ලෙස

ඔත්තේ සංඛ්‍යා සහිත String 'string' ලෙස Dim OddStr

ආදාන අංක පිළිගැනීමට Dim Num

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

OddSum = 0 'OddSum එකතුව ආරම්භ කිරීම

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

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

නම් (සංඛ්‍යා මාදිලිය 2)<>0 එවිට ‘පරම සමානාත්මතාවය

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

OddStr = OddStr සහ Num & ””

නම් අවසන්

ලූපය

ඔත්තේ සංඛ්‍යා සහිත තන්තුවක් ප්‍රතිදානය කරන්න

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

අවසාන උප

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

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

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

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

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

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

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

උප සාම්පල 8()

Randomize Timer’ සසම්භාවී සංඛ්‍යා උත්පාදකයේ ආරම්භය

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 එවිට

ආරම්භයට යන්න

නම් අවසන්

අවසාන උප

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

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

Do … Loop Until loop හි ආකෘතිය වන්නේ:

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

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

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

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

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

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

වෙන්ඩ්

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

ලූප් බාධාව

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

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

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

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

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

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

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

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

උප සාම්පල9()

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

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

ඊළඟ




ඉහල