VBA ۾ لوپ

اهڙيون حالتون آهن جڏهن هڪ VBA پروگرام جي عملن جي ساڳئي سيٽ کي هڪ قطار ۾ ڪيترائي ڀيرا انجام ڏيڻ جي ضرورت آهي (يعني، ڪوڊ جي ساڳئي بلاڪ کي ڪيترائي ڀيرا ورجائي ٿو). اهو ڪري سگهجي ٿو VBA لوپ استعمال ڪندي.

VBA لوپ شامل آهن:

اڳيون، اسان انهن مان هر هڪ چڪر تي هڪ ويجهي نظر ڪنداسين.

Visual Basic ۾ لوپ آپريٽر لاءِ

لوپ آپريٽر جي جوڙجڪ هن Visual Basic ۾ ٻن شڪلن مان ھڪڙي ۾ منظم ٿي سگھي ٿو: لوپ جي طور تي لاءِ... اڳيون يا هڪ لوپ جي طور تي هر هڪ لاءِ.

سائيڪل ”لاءِ … اڳيون“

سائيڪل لاءِ... اڳيون هڪ متغير استعمال ڪري ٿو جيڪو ترتيب سان ڏنل حد مان قدر وٺندو آهي. متغير جي قيمت جي هر تبديلي سان، چڪر جي جسم ۾ بند ٿيل عمل ڪيا ويا آهن. اهو هڪ سادي مثال مان سمجهڻ آسان آهي:

I لاءِ = 1 کان 10 Total = Total + iArray(i) اڳيون i

هن سادي لوپ ۾ لاءِ... اڳيون variable استعمال ڪيو ويندو آهي i، جيڪو ترتيب سان 1، 2، 3، … 10 قدر کڻندو آهي، ۽ انهن مان هر هڪ لاءِ، لوپ اندر VBA ڪوڊ لڳايو ويندو آهي. اهڙيء طرح، هي لوپ صف جي عناصر کي گڏ ڪري ٿو. iArray متغير ۾ ڪل.

مٿين مثال ۾، لوپ جي واڌ جي وضاحت نه ڪئي وئي آهي، تنهنڪري متغير کي وڌائڻ لاء i 1 کان 10 تائين، ڊفالٽ هڪ واڌارو آهي 1… بهرحال، ڪجهه حالتن ۾ اهو ضروري آهي ته لوپ لاءِ مختلف واڌ ويجهه استعمال ڪرڻ گهرجن. اهو لفظ استعمال ڪندي ڪري سگهجي ٿو قدمجيئن هيٺ ڏنل سادي مثال ۾ ڏيکاريل آهي.

ڊي لاءِ = 0 کان 10 مرحلا 0.1 dTotal = dTotal + d اڳيون ڊي

جيئن ته مٿين مثال ۾، واڌ وارو قدم برابر ڪيو ويو آهي 0.1، پوءِ variable ڊي ڪل چڪر جي هر ورهاڱي لاءِ 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 جي قيمتن تي لڳندي آهي.

لوپ "هر هڪ لاء"

سائيڪل هر هڪ لاءِ هڪ چڪر وانگر لاءِ... اڳيون, پر ان جي بدران ڳڻپيوڪر متغير لاءِ قدرن جي تسلسل تي، لوپ هر هڪ لاءِ شين جي مخصوص گروپ ۾ هر اعتراض لاء عملن جو هڪ سيٽ انجام ڏئي ٿو. هيٺين مثال ۾، لوپ استعمال ڪندي هر هڪ لاءِ موجوده ايڪسل ورڪ بڪ ۾ سڀني شيٽ کي ڳڻپ ڪري ٿو:

ڊم wSheet as Worksheet for each wsheet in Worksheets MsgBox "Nайден лист: " & wSheet. Name Next wSheet

لوپ مداخلت جو بيان ”نڪري لاءِ“

آپريٽر لاءِ نڪرڻ سائيڪل ۾ مداخلت ڪرڻ لاء استعمال ڪيو ويو. جيئن ئي هي بيان ڪوڊ ۾ اچي ٿو، پروگرام لوپ جي عمل کي ختم ڪري ٿو ۽ بيانن جي عمل کي اڳتي وڌائي ٿو جيڪي ڪوڊ ۾ موجود آهن هن لوپ کان فوري طور تي. اهو استعمال ڪري سگهجي ٿو، مثال طور، هڪ صف ۾ مخصوص قدر ڳولڻ لاء. هن کي ڪرڻ لاء، لوپ استعمال ڪندي، صف جي هر عنصر کي اسڪين ڪيو ويو آهي. جيترو جلد گهربل عنصر مليو، باقي ڏسڻ جي ڪا ضرورت ناهي - چڪر ۾ مداخلت ڪئي وئي آهي.

آپريٽر ايپليڪيشن لاءِ نڪرڻ هيٺ ڏنل مثال ۾ ڏيکاريل آهي. هتي لوپ 100 کان مٿي صفن جي اندراج کي ٻيهر ڏئي ٿو ۽ هر هڪ کي متغير جي قيمت سان مقابلو ڪري ٿو ڊيوال… جيڪڏهن هڪ ميچ مليو آهي، پوء لوپ ختم ڪيو ويو آهي:

i = 1 کان 100 لاءِ جيڪڏهن dValues(i) = dVal پوءِ IndexVal = i Exit for End جيڪڏھن اڳيون i

The Do while Loop in Visual Basic

سائيڪل وقت تي ڪريو ڪوڊ جي هڪ بلاڪ تي عمل ڪري ٿو جيستائين مخصوص شرط ملي ٿي. هيٺ ڏنل عمل جو هڪ مثال آهي سب، جنهن ۾ لوپ استعمال ڪندي وقت تي ڪريو Fibonacci انگ 1000 کان وڌيڪ نه آهن ترتيب وار ڏيکاريا ويا آهن:

'سب پروسيس آئوٽ ڪري ٿو Fibonacci انگ 1000 کان وڌيڪ نه هجن Sub Fibonacci() Dim i As Integer 'ڪائونٽر ۾ عنصر جي پوزيشن کي ظاهر ڪرڻ لاءِ تسلسل Dim iFib As Integer' ترتيب جي موجوده قيمت کي اسٽور ڪري ٿو Dim iFib_Next As Integer' ايندڙ قيمت کي اسٽور ڪري ٿو. جي تسلسل Dim iStep As Integer 'Stors size of next increment' initialize variables i ۽ iFib_Next i = 1 iFib_Next = 0 'Do while لوپ تيستائين عمل ڪندو جيستائين 'موجوده فبونيڪي نمبر جي قيمت 1000 کان وڌيڪ نه ٿئي Do while iFib_Next = 1000 if <1 1 پوءِ 'پهرين عنصر لاءِ خاص ڪيس iStep = 0 iFib = 1 Else' اوور رائٽنگ ڪرڻ کان اڳ ايندڙ واڌ جي ماپ کي محفوظ ڪريو 'حاصل جي موجوده قيمت iStep = iFib iFib = iFib_Next End If' ڪالم A جي موجوده فبونيڪي نمبر کي پرنٽ ڪريو. فعال ورڪ شيٽ 'انڊيڪس i سيلز (i , 1) سان قطار ۾. Value = iFib' ايندڙ فبونيڪي نمبر کي ڳڻيو ۽ عنصر پوزيشن انڊيڪس کي 1 iFib_Next = iFib + iStep i = i + XNUMX لوپ جي آخر ۾ وڌو.

ڏنل مثال ۾، حالت iFib_Next <1000 لوپ جي شروعات ۾ چيڪ ڪيو. تنهن ڪري، جيڪڏهن پهريون قدر iFib_Next جيڪڏهن 1000 کان وڌيڪ هئا، ته لوپ ڪڏهن به عمل نه ڪيو ويندو.

لوپ کي لاڳو ڪرڻ جو ٻيو طريقو وقت تي ڪريو - حالت کي شروع ۾ نه رکو، پر لوپ جي آخر ۾. انهي حالت ۾، لوپ کي گهٽ ۾ گهٽ هڪ ڀيرو عمل ڪيو ويندو، قطع نظر ته شرط مليل آهي.

Schematically، اهڙي چڪر وقت تي ڪريو شرط سان آخر ۾ چڪاس ڪيو ويندو هن طرح نظر ايندو:

ڪريو ... لوپ جڏهن ته iFib_Next <1000

بصري بنيادي ۾ "جيستائين ڪريو".

سائيڪل تائين ڪريو سائيڪل سان بلڪل ملندڙ جلندڙ وقت تي ڪريو: لوپ جي جسم ۾ ڪوڊ جو بلاڪ بار بار تي عمل ڪيو ويندو آهي جيستائين مخصوص شرط پورا نه ٿئي (شرطي اظهار جو نتيجو آهي سچ پچ ته). ايندڙ عمل ۾ سب هڪ سائيڪل استعمال ڪندي تائين ڪريو ھڪڙي ڪالمن ۾ سڀني سيلن مان قيمتون حاصل ڪريو A ورڪ شيٽ جيستائين ڪالمن کي خالي سيل سان ملندو:

iRow = 1 ڪريو جيستائين IsEmpty(Cells(iRow, 1)) 'موجوده سيل جو قدر dCellValues ​​dCellValues(iRow) = Cells(iRow, 1) ۾ محفوظ ٿيل آهي. قدر iRow = iRow + 1 لوپ

مٿين مثال ۾، حالت خالي آهي (سيلز (iRow، 1)) ساخت جي شروعات ۾ واقع آهي تائين ڪريو، تنهنڪري لوپ کي گهٽ ۾ گهٽ هڪ ڀيرو عمل ڪيو ويندو جيڪڏهن ورتو ويو پهريون سيل خالي نه آهي.

بهرحال، جيئن لوپ مثالن ۾ ڏيکاريل آهي وقت تي ڪريو, ڪجهه حالتن ۾ اهو ضروري آهي ته لوپ کي گهٽ ۾ گهٽ هڪ ڀيرو عمل ڪيو وڃي، بغير مشروط اظهار جي شروعاتي نتيجي جي. انهي حالت ۾، مشروط اظهار کي لوپ جي آخر ۾ رکڻ گهرجي، جهڙوڪ:

ڪريو... لوپ جيستائين خالي نه ٿئي (سيلز(iRow, 1))

جواب ڇڏي وڃو