زنگ

کسانی هستند که قبل از شما این خبر را می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه دوست دارید زنگ را بخوانید
بدون هرزنامه

ممکن است شرایطی پیش بیاید که لازم باشد یک بلوک کد را چندین بار اجرا کنید. به طور کلی، دستورات به صورت متوالی اجرا می شوند: اولین دستور در تابع ابتدا، سپس دوم و غیره اجرا می شود.

زبان های برنامه نویسی ساختارهای کنترلی مختلفی را ارائه می دهند که مسیرهای اجرایی پیچیده تری را ارائه می دهند.

دستور حلقه به ما این امکان را می دهد که یک دستور یا گروهی از دستورات را چندین بار اجرا کنیم. در زیر نمای کلی دستور حلقه در VBA آورده شده است.

VBA انواع حلقه های زیر را برای رسیدگی به الزامات حلقه ارائه می دهد. برای بررسی جزئیات آنها روی لینک های زیر کلیک کنید.

برای حلقه

حلقه for یک ساختار کنترلی تکرار است که به توسعه‌دهنده اجازه می‌دهد تا حلقه‌ای را بنویسد که باید چندین بار اجرا شود.

نحو

در زیر سینتکس حلقه for در VBA آمده است.

برای شمارنده = شروع به پایان .... .... بعد

نمودار جریان

در زیر جریان کنترل در حالت حلقه آمده است -

  • مرحله اول در حال انجام است. این مرحله به شما امکان می دهد تا هر متغیر کنترل حلقه را مقداردهی اولیه کنید و متغیر شمارنده گام را افزایش دهید.
  • دوم، شرایط ارزیابی می شود. اگر درست باشد، بدنه حلقه اجرا می شود. اگر نادرست باشد، بدنه حلقه اجرا نمی شود و جریان کنترل بلافاصله پس از حلقه For به دستور بعدی ادامه می یابد.
  • پس از اجرای حلقه for، جریان کنترل به دستور بعدی منتقل می شود. این عبارت به شما امکان می دهد هر متغیر کنترل حلقه را به روز کنید. بر اساس مقدار شمارنده گام به روز می شود.
  • وضعیت اکنون دوباره ارزیابی می شود. اگر این درست باشد، حلقه اجرا می شود و فرآیند تکرار می شود (بدنه حلقه، سپس مرحله افزایش می یابد و دوباره شرط). پس از false شدن شرط، حلقه For به پایان می رسد.

مثال

یک دکمه اضافه کنید و تابع زیر را اضافه کنید.

زیر خصوصی Constant_demo_Click() Dim a به عنوان عدد صحیح a = 10 برای i = 0 به مرحله 2 MsgBox "مقدار i است: " & i زیر انتهای بعدی

هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.

مقدار i است: 0
مقدار i است: 2
مقدار i است: 4
مقدار i است: 6
مقدار i است: 8
مقدار i است: 10

دنباله ای از عبارات را چندین بار اجرا می کند و کد کنترل متغیر حلقه را کوتاه می کند.

برای ... حلقه

برای هر حلقه برای اجرای یک دستور یا گروهی از دستورات روی هر عنصر در یک آرایه یا مجموعه استفاده می شود.

برای هر حلقه مشابه For Loop است. با این حال، حلقه برای هر عنصر در آرایه یا گروه اجرا می شود. بنابراین، شمارنده گام در این نوع حلقه وجود نخواهد داشت. بیشتر با آرایه ها استفاده می شود یا در زمینه اشیاء سیستم فایل برای کار بازگشتی استفاده می شود.

نحو

در زیر سینتکس یک حلقه برای هر حلقه در VBA آمده است.

برای هر عنصر در گروه .... بعدی

مثال

Private Sub Constant_demo_Click() "fruits یک آرایه است میوه ها = آرایه("سیب"، "پرتقال"، "گیلاس") نام میوه کم رنگ به عنوان متغیر "تکرار با استفاده از هر حلقه. برای هر مورد در میوه‌ها نام‌های میوه = نام‌های میوه و کالا و Chr(10) MsgBox بعدی نام‌های میوه پایان زیر

هنگامی که کد بالا اجرا می شود، همه نام میوه ها را با یک عنصر در هر خط چاپ می کند.

سیب
نارنجی
گیلاس

این در صورتی اجرا می شود که حداقل یک عنصر در گروه وجود داشته باشد و برای هر عنصر در گروه تکرار شود.

در حالی که..وند حلقه

در حلقه Wend while ...، اگر شرط True باشد، تمام عبارات تا زمانی که با کلمه کلیدی Wend مواجه شود اجرا می شوند.

اگر شرط نادرست باشد، حلقه به پایان می رسد و کنترل به دستور بعدی بعد از کلمه کلیدی Wend منتقل می شود.

نحو

در زیر سینتکس حلقه while..Wend در VBA آمده است.

در حالی که شرط (ها) ... Wend

نمودار جریان

مثال

زیر خصوصی Constant_demo_Click() Dim Counter: Counter = 10 while Counter< 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...whil زمانی استفاده می شود که بخواهیم مجموعه ای از عبارات را در حالی که یک شرط درست است تکرار کنیم. شرایط را می توان در ابتدای حلقه یا در انتهای حلقه بررسی کرد.

نحو

در زیر سینتکس Do...While در VBA آمده است.

Do while شرط ...... حلقه

نمودار جریان

مثال

مثال زیر از یک حلقه Do ... while برای بررسی وضعیت در ابتدای حلقه استفاده می کند. دستورات داخل حلقه فقط در صورتی اجرا می شوند که شرط True شود.

Private Sub 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 while شرط

مثال

مثال زیر از یک حلقه Do ... while برای بررسی وضعیت در انتهای حلقه استفاده می کند. دستورات داخل حلقه حداقل یک بار اجرا می شوند، حتی اگر شرط False باشد.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "مقدار i است: " و i Loop while i< 3 "Condition is false.Hence loop is executed once. End Sub

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 11 است

دستورات do..While تا زمانی که شرط True باشد اجرا خواهند شد. (یعنی) حلقه باید تا زمانی که شرط False شود تکرار شود.

انجام.. حلقه داخل

زمانی که بخواهیم مجموعه ای از عبارات را در حالی که شرط نادرست است تکرار کنیم، حلقه intil Do ... استفاده نخواهد شد. شرایط را می توان در ابتدای حلقه یا در انتهای حلقه بررسی کرد.

نحو

در زیر سینتکس حلقه Do..Until در VBA آمده است.

انجام دهید تا شرط ... ... حلقه

نمودار جریان

مثال

مثال زیر از Do ... Before Loop برای آزمایش یک شرط در ابتدای حلقه استفاده می کند. دستورات داخل حلقه فقط در صورتی اجرا می شوند که شرط نادرست باشد. وقتی شرط درست شد از حلقه خارج می شود.

زیر خصوصی Constant_demo_Click() i = 10 انجام دهید تا i>15 "شرط نادرست است. از این رو حلقه 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 برای بررسی یک شرط در انتهای حلقه استفاده می کند. دستورات داخل حلقه حداقل یک بار اجرا می شوند، حتی اگر شرط True باشد.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "مقدار i است: " & i Loop Until i more15 "شرط True است. بنابراین حلقه یک بار اجرا می شود. پایان Sub

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 11 است

انجام دهید..تا زمانی که شرط False باشد دستورات اجرا خواهند شد. (یعنی) حلقه باید تا زمانی که شرط درست باشد تکرار شود.

سوابق کنترل حلقه

دستورات کنترل حلقه اجرا را از دنباله عادی خود تغییر می دهند. وقتی اجرا از محدوده خارج می شود، تمام دستورات حلقه دیگر اجرا نمی شوند.

بیانیه کنترل و توضیحات

خروج اپراتور

خروجی for زمانی استفاده می شود که بخواهیم بر اساس معیارهای خاصی از حلقه For خارج شویم. هنگامی که Exit For اجرا می شود، کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

نحو

در زیر دستور Exit For Statement در VBA آمده است.

نمودار جریان

مثال

مثال زیر از Exit For استفاده می کند. اگر تعداد به 4 برسد، حلقه For به پایان می رسد و کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 برای i = 0 به مرحله 2 "i متغیر شمارنده است و 2 MsgBox افزایش می یابد ("مقدار i است: " & i) اگر i = 4 سپس i = i * 10 "این فقط در صورتی اجرا می شود که i=4 MsgBox ("مقدار i است: " & i) خروج برای "خروج زمانی که i=4 پایان می یابد اگر زیر پایان بعدی

هنگامی که کد بالا اجرا می شود، خروجی زیر را در کادر پیام چاپ می کند.

مقدار i است: 0
مقدار i است: 2
مقدار i است: 4
مقدار i است: 40

دستور حلقه For را پایان می دهد و اجرا را بلافاصله بعد از حلقه به دستور منتقل می کند

از Do خارج شوید

دستور Exit Do زمانی استفاده می شود که بخواهیم بر اساس معیارهای خاصی از Do Loops خارج شویم. می توان از آن در هر دو حلقه Do Do ... while و Do ... Before استفاده کرد.

هنگامی که یک Exit Do اجرا می شود، کنترل بلافاصله پس از حلقه Do به دستور بعدی منتقل می شود.

نحو

در زیر دستور Exit Do در VBA آمده است.

مثال

مثال زیر از Exit Do استفاده می کند. اگر شمارنده به 10 برسد، خط خروجی Do به پایان می رسد و کنترل بلافاصله پس از حلقه For به دستور بعدی منتقل می شود.

Private Sub Constant_demo_Click() i = 0 Do while i<= 100 If i >10 سپس از Do خارج شوید " حلقه خارج می شود اگر i>10 پایان اگر MsgBox ("مقدار i است: " & i) i = i + 2 حلقه پایان فرعی

هنگامی که کد بالا اجرا می شود، خروجی زیر را در یک جعبه پیام چاپ می کند.

مقدار i برابر با 0 است
مقدار i این است: 2
مقدار i برابر است با 4
مقدار i برابر است با: 6
مقدار i برابر با 8 است
مقدار i برابر است با 10

یک دستور Do while را پایان می دهد و اجرا را بلافاصله بعد از حلقه به دستور منتقل می کند

چرخه یک ساختار الگوریتمی است،که با کمک آن تکرار چندگانه یک بلوک از دستورات اجرا می شود.

عبارت حلقه با شمارنده (برای … بعدی)

عبارت For … Next به شما امکان می دهد مجموعه ای از دستورالعمل ها (گزاره ها) را تعداد مشخصی بار حلقه بزنید. نحو دستورالعمل:

برای شمارنده = مقدار_شروعبه ارزش_پایانی

[دستورالعمل ها]

[دستورالعمل ها]

بعد[ پیشخوان]

پارامتر پیشخوانیک متغیر عددی است که به طور خودکار مقدار خود را با مقدار تغییر می دهد گامبعد از هر بار تکرار چرخه چرخه تا زمانی اجرا می شود پیشخوان£ ارزش_پایانیبا مقدار مثبت پارامتر گامیا تا زمانی که پیشخوان³ ارزش_پایانیبا مقدار منفی پارامتر گام. بنابراین، اگر یک مقدار گام مثبت باشد، حلقه هرگز اجرا نخواهد شد مقدار_شروعبیشتر از ارزش_پایانی. اگر پارامتر Step گامحذف می شود، سپس به طور پیش فرض افزایش متغیر شمارنده روی 1 تنظیم می شود.

دستور Exit For اجرای حلقه را "به زودی" خاتمه می دهد و کنترل را به دستور زیر دستور حلقه منتقل می کند. Exit For معمولاً در یک دستور شرطی قرار می گیرد، به عنوان مثال:

اگر وضعیتسپس Exit For

توجه داشته باشید. با توجه به نحو دستور For، پارامتر پیشخوان- یک متغیر حسابی از هر نوع، باز هم بهتر است از نوع صحیح متغیر استفاده شود، زیرا قسمت کسری مقدار یک متغیر از نوع واقعی معمولاً دارای خطا است. این مربوط به نحوه ذخیره اعداد در رایانه است.

مثال 1

مجموع اولی را بیابید 10 اعداد طبیعی: S = 1 + 2 + 3 + ...+ 10 . قطعه برنامه:

Dim I به عنوان عدد صحیح، S به عنوان عدد صحیح

S=0 " صفر کردن مقدار متغیر S

برای i = 1 تا 10 " شروع چرخه. مقادیر شروع و پایان را تنظیم کنید
"پارامتر حلقه. مرحله پیش فرض حلقه 1 است.

S = S + i " عملگر انتساب هر بار اجرا می شود
" اجرای حلقه، در این مثال 10 بار

بعدی منم " پایان چرخه. مقدار پارامتر چرخه افزایش می یابد.

در این قطعه برنامه، حلقه دقیقا 10 بار اجرا می شود.

مثال 2

در ستون 1 کاربرگ (از سطر 2 شروع می شود) مقادیر x را در محدوده 0 تا 3.2 با گام 0.4 نمایش دهید.

برگه فرعی عمومی ()

Dim x به عنوان تک، i به عنوان عدد صحیح

برای x = 0 تا 3.2 مرحله 0.4

اگرچه طول فاصله دقیقاً بر مرحله 0.4 تقسیم می شود، نتیجه در کاربرگ به صورت زیر است:

چه باید کرد؟

1. می توانید مقدار نهایی را کمی افزایش دهید، در این مثال به جای 3.2، 3.201 را بنویسید.

2-تعداد تکرارهای chicle را تعیین کنید و یک حلقه روی یک شمارنده نوع صحیح بنویسید.

در این حالت برنامه به صورت زیر خواهد بود:

Public Sub Tab1()

Dim x به عنوان تک، i به عنوان عدد صحیح، n به عنوان عدد صحیح

n = CINT((3.2 - 0) / 0.4)

برای i = 0 تا n مرحله 1

سلول (i + 2، 1) = x

برای هر … بیانیه حلقه بعدی

حلقه For Every … Next به شما امکان می دهد اجرای گروهی از دستورات را برای هر عنصر از یک آرایه یا خانواده تکرار کنید. این دستورالعمل دارای نحو زیر است:

برای هر عنصرکه در گروه

[دستورالعمل ها]

[دستورالعمل ها]

بعد[ عنصر]

پارامتر عنصرمتغیری است که عنصری از یک خانواده یا آرایه را نشان می دهد. بحث و جدل گروهنام آرایه یا خانواده است. دستورات فقط یک بار برای هر یک از اعضای گروه اجرا می شوند. استفاده از عبارت راحت است زیرا نیازی به دانستن تعداد عناصر در یک آرایه یا خانواده ندارید. متغیر عنصرباید از نوع Variant باشد.

مثال 1

میانگین حسابی همه عناصر محدوده انتخاب شده را بیابید

میانگین تابع عمومی (محدوده به عنوان محدوده) به عنوان دو برابر

عنصر کم نور به عنوان یک متغیر

حجم کم به عنوان دو برابر

عدد کم نور به عنوان عدد صحیح

مقدار = 0

برای هر عنصر در محدوده

مبلغ = مبلغ + آیتم

مقدار = کمیت + 1

عنصر بعدی

میانگین = مقدار / مقدار

کاربرد. محدوده انتخاب شده از سلول های مجاور باید شامل اعداد باشد. اعداد در سلول های خالی 0 در نظر گرفته می شوند. متن در سلول منجر به خطا می شود.

اگر ... پایان اگر، انتخاب ... مورد، برای ... بعدی، برای هر ... عبارات بعدی فهرست شده در بالا گروهی از دستورات کنترل هستند که ترتیب اجرای دستورات را تغییر می دهند. دستورالعمل های کنترل را می توان به هر ترتیبی تو در تو قرار داد.

در این درس، کار با یک چرخه را در نظر خواهیم گرفت برایدر VBA نمونه ای از کار با حلقه For نیز نمونه ای از ایجاد فرمول در اکسل با استفاده از ماکروها را نشان می دهد.

چرخه برایبر اساس اصل شمارنده کار می کند. برایدر مواردی که لازم است برخی از اقدامات را به تعداد از پیش تعیین شده تکرار کنید استفاده می شود. به عنوان مثال، چرخه برایاغلب هنگام خواندن آرایه ها استفاده می شود.

چرخه برایدارای نحو زیر است:
برای پیشخوان = شروع چرخه به پایان چرخه [گام گام]
گروهی از عملگرها، دستورات و غیره
خروج برای
بعد پیشخوان

  • "پیشخوان" -متغیری که به مقدار مشخص شده تغییر می کند "گام".اگر مرحله مشخص نشده باشد، به طور پیش فرض یکی برداشته می شود.
  • "شروع چرخه", "پایان چرخهاعداد یا متغیرهایی که حد پایین شمارنده و حد بالایی را نشان می دهند. چرخه زمانی که متوقف می شود "کنترل" >"پایان چرخه" (یا اگر چرخه معکوس شود، یعنی. با مرحله -1، سپس "پیشخوان"< "پایان چرخه").
  • خروج برای-دستور برای مجبور کردن چرخه به توقف. در مواردی استفاده می شود که رویدادی رخ داده است، پس از آن لازم است اجرای دستورات در حلقه متوقف شود یا از بروز خطا جلوگیری شود.

بیایید به چند مثال از استفاده از یک حلقه نگاه کنیم برای. در آینده، ما اغلب با این چرخه ملاقات خواهیم کرد.

مثال 1
با توجه به دو ستون C و E پر از اعداد:

شما باید اعداد ستون C را با اعداد ستون E به صورت زیر اضافه کنید:
C2+E21, C3+E20, ..., C21+E2. خروجی نتیجه را در ستون D به صورت فرمول به عنوان مثال. محتوای سلول نتیجه باید "=C2+E21" باشد.

کد ماکرو به این شکل است (ما می خوانیم که کجا کد را بنویسیم):

زیر Loop_For()
"ثابتی که حد چرخه را نشان می دهد، یعنی تا چه مقدار چرخه باید اجرا شود
Const n=21
برای i = 2 به n
"یک فرمول رشته ای ایجاد کنید و آن را در یک سلول ذخیره کنید
سلول (i، 4) = "=C" و CStr(i) & "+E" & CStr((n - i) + 2)
"ادامه هنگام اجرا در یک حلقه
بعدمن
" بقیه کد برنامه
پایان فرعی

بیایید کد نوشته شده را تجزیه و تحلیل کنیم:

  • Const n = 21 - توصیف ثابت n با مقدار 21، یعنی. تعداد خطوطی که باید از طریق آنها حلقه بزنید برای;
  • برای i = 2 به n - i شمارنده ای است که با هر تکرار حلقه 1 تغییر می کند. شمارنده از 2 شروع می شود و با i>n به پایان می رسد.
  • سلول ها (i، 4) - سلول اختصاصی sheet، i شماره ردیف است، 4 شماره ستونی است که نتیجه در آن نمایش داده می شود. توجه داشته باشید که شمارنده i ما شماره ردیف صفحه اکسل را نشان می دهد.
  • بعدی منم-عملگر برای بستن حلقه و انتقال اشاره گر به برای.همه چیز در این بین برایو بعددر یک حلقه اجرا می شود.
  • CStr-تابعی که یک عدد را به متن تبدیل می کند.

ما فرمول ایجاد شده را به صورت زیر به سلول اختصاص می دهیم "=C" و CStr(i) & "+E" & CStr((n - i) + 2). علامت و - "چسباندن" کاراکترها، خطوط. در نتیجه، فرمول "=Cn+E((n - i) + 2)" را دریافت می کنیم که در آن n = 21، i شمارنده است.
ترسناک؟ فقط به نظر می رسد :)

همه. پس از اجرای ماکرو، ستون زیر (هایلایت شده) و در هر سلول فرمول را دریافت می کنیم:

مثال 2
اکنون یک چرخه با مرحله نشان داده شده در نظر بگیرید. پس از محاسبه آخرین ماکرو، سه ستون دریافت کردیم، اکنون باید D را از ستون E کم کنیم و فرمول های تفریق را در ستون F نمایش دهیم. کد ماکرو به صورت زیر است:

زیر Loop_For_with_step()
Const n=21
برای i = n به 2 گام -1
سلول (i، 6) = "=E" و CStr(شناسه" & CStr(من)
بعدمن
پایان فرعی

در این مورد، همه چیز یکسان است، فقط حلقه اکنون نه از 2، بلکه از 21 به 2 با یک مرحله (Step) -1 "اجرا می شود".
نتیجه اجرا به صورت زیر خواهد بود:

چرخه برای، در VBA، یک حلقه واحد نیست. در آینده، چند گزینه دیگر برای حلقه ها در نظر گرفته خواهد شد که هنگام نوشتن ماکروها در اکسل ضروری هستند.

الگوریتم حلقه For….Next در شکل نشان داده شده است. 5.28.

پیشخوان – هر متغیر عددی VBA، معمولاً متغیری از نوع Integer یا Long.

شروع کنید - هر عبارت عددی و مقدار اولیه را برای متغیر Counter تعریف می کند.

پایان - یک عبارت عددی که مقدار نهایی متغیر را تعیین می کند پیشخوان .

بیانیه - یک، چند یا بدون اپراتور. این دستورات بدنه حلقه را اجرا می کنند. VBA هر یک از این دستورات را با هر بار اجرای حلقه اجرا می کند.

کلمه کلیدی بعد

Counter=counter+StepSise

شکل 9.28. برای….الگوریتم حلقه بعدی

کلمه کلیدی بعد به VBA می گوید که به انتهای حلقه رسیده است. متغیر Counter اختیاری بعد از کلمه کلیدی Next باید همان متغیر Counter باشد که بعد از کلمه کلیدی For در ابتدای ساختار حلقه مشخص شده است.

نحو:

برای شمارنده = شروع تا پایان

هنگام اجرای یک حلقهبرایبعد VBAبه شرح زیر پیش می رود:

مقدار نمایش داده شده را اختصاص می دهد ستاره , متغیر از جانب بیرون .

تمام عبارات نشان داده شده توسط را اجرا می کند بیانیه تا به کلمه کلیدی برسد بعد . کلمه کلیدی بعد به VBA نشان می دهد که به انتهای بدنه حلقه رسیده است.

یک متغیر را تغییر می دهد از جانب بیرون توسط مقدار اندازه گام (اگر کلمه اختیاری Step گنجانده شود) اگر Step تعریف نشده باشد، VBA متغیر شمارنده را 1 افزایش می دهد.

به ابتدای حلقه برمی گردد و مقدار فعلی متغیر را مقایسه می کند از جانب بیرون با مقدار نشان داده شده توسط End. اگر ارزش از جانب بیرون ارزش کمتر پایان ، VBA از اولین دستور بعد از کلمه کلیدی به اجرا ادامه می دهد بعد .

9.2.4. ورودی-خروجی آرایه های یک بعدی و دو بعدی

آرایه (آرایه) مجموعه ای از متغیرهایی است که نام و نوع پایه مشترک دارند. یک آرایه روشی مناسب برای ذخیره چندین مورد داده مرتبط در یک ظرف واحد برای راحتی و کارایی بیشتر برنامه‌نویسی است. تمام عناصر داده ذخیره شده در یک آرایه باید از یک نوع باشند.

یک آرایه به شما اجازه می دهد تا تعداد زیادی از داده ها را از طریق یک متغیر ذخیره و دستکاری کنید. علاوه بر کاهش تعداد کل نام متغیرهای مختلف که نیاز به پیگیری دارند، یکی دیگر از مزایای اصلی استفاده از آرایه ها این است که می توانید از حلقه ها برای پردازش آسان عناصر مختلف آرایه ها استفاده کنید. با ترکیب آرایه ها و ساختارهای حلقه (معمولاً For….Next) می توانید تعداد کمی دستور بنویسید که حجم زیادی از داده را پردازش می کند. انجام کارهای مشابه با استفاده از متغیرهای فردی ممکن است نیازمند نوشتن صدها عبارت باشد.

ابعاد آرایه

زبان های برنامه نویسی معمولاً از آرایه های یک بعدی و چند بعدی استفاده می کنند که برخی از آنها اشیاء نسبتاً ساده را توصیف می کنند در حالی که برخی دیگر اشیاء پیچیده تر را توصیف می کنند.

آرایه های تک بعدی

نمونه ای از یک آرایه یک بعدی در جدول 9.9 نشان داده شده است.

جدول شماره 9.9

در برنامه نویسی معمولاً از شماره گذاری مبتنی بر صفر استفاده می شود.

برای دسترسی به داده های ذخیره شده در یک عنصر خاص از یک آرایه، نام آرایه را به همراه یک عدد مشخص می کنید که به آن شاخص عنصر می گویند. شاخص در داخل پرانتز قرار گرفته است. به عنوان مثال، اگر آرایه در جدول 1.1 DoubleArray نام داشته باشد، عبارت زیر عدد 45 را به DoubleAny اختصاص می دهد.

DoubleAny = DoubleArray (3)

در این عبارت عدد 3 شاخص آرایه است. از آنجایی که شماره گذاری عناصر از صفر شروع می شود، عنصری که عملگر به آن ارجاع می دهد، در واقع چهارمین عنصر آرایه DoubleArray است.

هنگام اجرای دستور DoubleArray، VBA مقدار 45 را انتخاب می کند و آن مقدار را در متغیر DoubleArray ذخیره می کند.

هنگام ذخیره داده ها در یک آرایه می توان از همان عملگر استفاده کرد:

DoubleArray (5)=12.

هنگامی که این دستور اجرا می شود، VBA مقدار 12 را در عنصر آرایه مشخص شده قرار می دهد و جایگزین محتویات قبلی آن عنصر می شود.

آرایه های یک بعدی معمولا برای نمایش لیست های مختلف داده ها استفاده می شوند.

آرایه های چند بعدی

در مواقعی که نیاز به ارائه جداول داده های سازماندهی شده در ردیف ها و ستون ها باشد، برای این کار از آرایه های چند بعدی استفاده می شود.

در یک آرایه دو بعدی، آدرس هر سلول از دو عدد تشکیل شده است: شماره ردیف (شاخص اول) و شماره ستون (شاخص دوم). در VBA می توانید آرایه هایی تا 60 بعد ایجاد کنید.

اگر تعداد عناصر آرایه تغییر نکند، چنین آرایه ای استاتیک نامیده می شود.

آرایه های استاتیک و پویا

اگر بتوانید تعداد عناصر یک آرایه را در حین اجرای یک برنامه VBA تغییر دهید، آنگاه چنین آرایه هایی پویا نامیده می شوند. عملگر ReDim برای تغییر اندازه یک آرایه پویا استفاده می شود.

VBA تا زمانی که متغیر نوع آرایه وجود داشته باشد، یک ناحیه ذخیره شده از حافظه را برای همه عناصر یک آرایه نگه می دارد. چنین آرایه هایی استاتیک نامیده می شوند زیرا تعداد عناصر آرایه تغییر نمی کند.

اپراتورگزینه پایه

به طور معمول، VBA از آرایه های مبتنی بر صفر استفاده می کند. دستور Option Base به شما امکان می دهد 0 یا 1 را به عنوان دانه پیش فرض برای شاخص های آرایه مشخص کنید. اگر اپراتور گزینه پایه استفاده نشده است، VBA شماره گذاری شاخص را از 0 شروع می کند (پیش فرض). قبل از اعلام هر متغیر، ثابت یا رویه، باید یک عبارت Option Base را در ناحیه اعلان یک ماژول قرار دهید. شما نمی توانید یک عبارت Option Base را در داخل یک رویه قرار دهید. شما می توانید تنها یک عبارت Option Base در یک ماژول داشته باشید.

نحو:

گزینه پایه 0|1

اعلام آرایه

اعلان آرایه با عملگر کم نوردستور زیر را دارد.

نحو:

DimVarName()

Dim VarName (بالا، بالا]….)[ مانند نوع],

VarName هر نامی برای آرایه ای است که قوانین VBA برای نام گذاری شناسه ها را برآورده می کند.

اشتراک ها - بعد آرایه.

به عنوان نوع - نوع داده.

پایین تر - کران پایینی مقدار شاخص.

بالا - حد بالایی مقدار شاخص.

نوع - نوع داده

اگر نوع را حذف کنید، همه عناصر آرایه از نوع Variant خواهند بود. VBA عناصر آرایه های عددی را صفر و عناصر آرایه های رشته ای را به رشته های خالی مقدار دهی می کند.

Dim str_array (1 تا 100) به عنوان رشته

Dim variant_array()

Dim str_Multiplication (0 تا 15، 0 تا 15) به عنوان رشته

استفاده از آرایه ها

برای دسترسی به یک عنصر آرایه، باید نام آرایه و به دنبال آن مقدار شاخص، داخل پرانتز را مشخص کنید.

دسترسی به یک عنصر آرایه دارای نحو زیر است.

نحو.

آرایه نام (validIndex1، ....)

validIndex نام آرایه است.

validIndex1 یک مقدار شاخص معتبر برای بعد اول آرایه است.

validIndex2 یک مقدار شاخص معتبر برای بعد دوم آرایه است.

هر بار که به هر عنصر آرایه دسترسی پیدا می کنید، باید یک مقدار شاخص برای هر بعد آرایه ارائه کنید.

ورودی/خروجی آرایه های یک بعدی

هنگام وارد کردن یک آرایه تک بعدی، باید به ترتیب 1، 2 و غیره را وارد کنید. عناصر آرایه، به طور مشابه خروجی را انجام می دهند. برای ورودی یا خروجی یک آرایه، باید یک حلقه را سازماندهی کنید. استفاده از یک الگوریتم با استفاده از یک حلقه بدون قید و شرط برای ورودی و خروجی یک آرایه یک بعدی راحت تر است.

الگوریتم ورودی/خروجی برای یک آرایه تک بعدی در شکل 5.29 نشان داده شده است.

روش کار در زیر توضیح داده شده است.

آرایه فرعی () - نام رویه.

Dim Mas (5) به عنوان عدد صحیح - یک آرایه یک بعدی با 5 عنصر، نوع عدد صحیح اعلام شده است.

Dim s As String - یک متغیر کاری برای خروجی نهایی داده از آرایه در کادر محاوره ای اعلام کرد. As String نوع داده ای است که در متغیر ذخیره می شود.

برای i = 1 تا 5 - رویه در اولین حلقه For….Next اعداد صحیح را از 1 تا 5 می گیرد و آنها را در یک آرایه قرار می دهد.

Mas (i) = InputBox (i) - یک عدد صحیح برای عنصر i-ام وارد کنید.

بعدی - انتقال به چرخه دوم (عناصر آرایه در یک رشته وارد شده و با استفاده از عملگر MsgBox در یک کادر محاوره ای نمایش داده می شوند).

برای i = 1 تا 5 - عناصر در ردیف از 1 تا 5.

s = s & Mas(i) & “ ;” - تشکیل یک رشته از عناصر آرایه. آرایه در یک خط نمایش داده می شود. عناصر آرایه با کاراکتر ";" از هم جدا می شوند.

MsgBox s - خروجی آرایه وارد شده قبلی.

شکل 5.27. الگوریتم I/O یک بعدی

برنج. 9.29. الگوریتم و روش ورودی-خروجی یک آرایه تک بعدی

ورودی/خروجی آرایه دو بعدی

الگوریتم و روش برای ورودی و خروجی یک آرایه دو بعدی در شکل 5.30 نشان داده شده است.

شرح این روش:

آرایه فرعی () - نام رویه

اعلان متغیرهایی که در این روش استفاده می شوند:

Dim Mas (5، 5) به عنوان Integer - یک آرایه دو بعدی با 5 ستون و پنج ردیف اعلام کرد، نوع اعداد اعداد صحیح است.

Dim s As String - یک متغیر کاری برای خروجی نهایی داده از آرایه در کادر محاوره ای اعلام کرد. به عنوان رشته - نوع داده در متغیر برای ذخیره

i بعدی - پایان عملیات انتساب متغیر

وارد کردن عناصر آرایه در حافظه کامپیوتر:

برای i = 1 تا 5 - ورودی از اولین عنصر خط اول، سپس از دوم و غیره انجام می شود.

برای j = 1 تا 5 تا انتهای خط اول، سپس از عنصر اول خط دوم و به همین ترتیب.

Mas(i,j) = InputBox(i,j) – عملگر برای وارد کردن عناصر آرایه در حافظه کامپیوتر

برنج. 9.30 الگوریتم و روش ورودی-خروجی یک آرایه دو بعدی

الگوریتم های ترتیب آرایه

به عنوان مثال، الگوریتم و روش مرتب سازی یک آرایه یک بعدی را با استفاده از روش "حباب" ارائه می کنیم.

خروجی عناصر آرایه وارد شده از حافظه کامپیوتر:

برای i = 1 تا 5 - خروجی مشابه ورودی انجام می شود

s = s & Mas(i,j) & “ ; ”

s = s & Chr (13) - تغذیه خط (خروجی نه در یک خط، بلکه در چندین، مانند آرایه ورودی)

i بعدی - پایان عبارت For….Next

MsgBox s - آرایه وارد شده قبلی را در کادر محاوره ای نمایش می دهد

End Sub - پایان روش.

عبارات حلقه

در VBA دو نوع اصلی حلقه حلقه با شمارنده (پارامتری) و حلقه با شرط (تکرار) وجود دارد.

حلقه های دارای شمارنده در مواردی استفاده می شود که لازم است برخی از اقدامات را تعداد معینی بار انجام دهید.

حلقه های شرطی زمانی استفاده می شوند که برخی از اقدامات در برنامه باید تکرار شوند تا زمانی که یک شرط خاص برآورده شود.

چرخه با یک پارامتربرای بعدی

ساختار چرخه:

برای Loop_Parameter = Initial_Valueبه ارزش_نهایی

[مرحله گام]

اپراتورها

[خروج برای]

بعد [Loop_Parameter]

جایی که برای کلمه کلیدی VBA (از)، نشان دهنده آغاز چرخه؛

متغیر loop_parameter که به عنوان شمارنده حلقه تعریف شده است.

Start_Value عددی که مقدار اولیه پارامتر چرخه را مشخص می کند.

به کلمه کلیدی VBA (قبل از) تقسیم کردن

Start_Value و End_Knowledge.

End_Value عددی که مقدار پارامتر حلقه را مشخص می‌کند،

که در آن چرخه به پایان می رسد؛

کلمه کلیدی مرحله VBA (مرحله) مورد استفاده برای

تخصیص مرحله حلقه، آرگومان اختیاری.

Step عددی است که مرحله چرخه را مشخص می کند، یعنی. ارزشی که به آن

مقدار پارامتر را افزایش (یا کاهش) می دهد

در هر مرحله دوچرخه سواری کنید. این عدد می تواند باشد

منفی؛

خروج برای عملگر خروج زود هنگام حلقه (اختیاری)؛

بعد کلمه کلیدی VBA (بعدی) نشان دهنده

پایان چرخه.

چرخه کار:

مرحله 1 ابتدا پارامتر حلقه تعیین می شود و مقادیر شروع و پایان این متغیر محاسبه و ذخیره می شود.

مرحله 2 به پارامتر حلقه یک مقدار اولیه اختصاص داده می شود.

مرحله 3 مقدار شروع پارامتر حلقه با مقدار پایان مقایسه می شود.

اگر پارامتر حلقه بزرگتر از مقدار پایانی باشد، برنامه بلافاصله از حلقه خارج شده و به خط کدی که حلقه را دنبال می کند می پرد.

مرحله 4 بدنه حلقه اجرا می شود.

مرحله 5 پس از اجرای بدنه حلقه، مقدار بعدی به پارامتر حلقه اختصاص داده می شود. به مرحله 3 بروید.

توجه داشته باشید.

1. اگر از کلمه کلیدی استفاده شودگام ، سپس پارامتر چرخه با توجه به عدد مشخص شده بعد از این کلمه تغییر می کند. اگر کلمهگام از دست رفته، مقدار گام برابر با یک است.

مثال 1

برای I = 0 تا 10 مرحله 2 (مقدار I 2 افزایش می یابد)

2. برای… حلقه بعدی در صورت رسیدن به هر شرایطی می توان پیش از موعد خاتمه داد. برای انجام این کار، در جای مناسب در حلقه، باید اپراتور را قرار دهیدخروج برای .

مثال 2

Dim S به عنوان عدد صحیح

Dim j به عنوان عدد صحیح

S=2

برای j = 1 تا 10

S = S + j

اگر S > 6 سپس

خروج برای (اگر مقدار از حلقه خارج شوید S > 6)

پایان اگر

j بعدی

MsgBox(S)

حلقه های شرطی (تکرار شونده)

اگر یک عمل (چند عمل) باید چندین بار انجام شود، اما از قبل مشخص نیست که چند بار انجام شود و بستگی به شرایط خاصی دارد، باید از یک حلقه با پیش شرط یا پس شرط استفاده کنید.

در VBA دو چرخه اصلی وجود دارد DO...LOOP با شرط وارد شده توسط کلمه کلیدیدر حالی که ، و با شرط معرفی شده توسط کلمه کلیدیتا زمان . هر دو می توانند پیش شرط یا پس شرط باشند.

نحو:

کجا انجام دهید کلمه کلیدی (انجام)؛

در حالی که کلمه کلیدی (هنوز)؛

تا زمان کلمه کلیدی (تا زمانی که)؛

حلقه یک کلمه کلیدی که نشان دهنده پایان چرخه است.

<условие>بیان منطقی که صحت آن بررسی می شود

در ابتدای هر اجرای بدنه حلقه؛

<тело_цикла>توالی دلخواه عملگرها؛

انجام ... در حین ساخت و ساز می‌خواند: در حالی که شرط وجود دارد انجام دهید. در طراحیانجام ... در حالی که برای

Do … تا زمانی که ساختار می‌خواند: این کار را تا برآورده شدن شرایط ادامه دهید. در طراحیانجام دهید… تا زمانی که برای افزایش گام، باید یک عملگر مخصوص بنویسید، زیرا در آن، بر خلاف طراحیبرای ، این کار به صورت خودکار انجام نمی شود.

شرط نوشته شده بعد از کلمه کلیدیتا زمان ، در پایان هر تکرار (پس از اجرای بدنه حلقه) بررسی می شود. توجه داشته باشید که در اینجا کاملاً مانند حلقه کار نمی کنددر حالی که . اگر شرط درست باشد (درست است، واقعی ، سپس حلقه به پایان می رسد. در صورت عدم تحقق شرط (نادرست استنادرست ، سپس بدنه حلقه دوباره اجرا می شود.

مثال 1

فرمول بندی مسئله. مجموع یک سری محدود را با استفاده از روش زیر روال محاسبه کنید.

تکنولوژی اجرای وظایف:

1. داده های اولیه:من Z

نتیجه: S  R .

2. رویه کاربر زیر را با استفاده از یک حلقه با پیش شرط در ماژول استاندارد پروژه تایپ کنیددر حالی که:

subsumma()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

انجام دهید در حالی که من<= 10

S=S+i^2

i = i + 1

حلقه

MsgBox(S)

پایان فرعی

3. رویه کاربر زیر را با استفاده از یک حلقه با پیش شرط در ماژول استاندارد پروژه تایپ کنیدتا زمان :

subsumma()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

تا i > 10 انجام دهید

S=S+i^2

i = i + 1

حلقه

MsgBox(S)

پایان فرعی

4 در ماژول استاندارد پروژه، رویه کاربری زیر را با استفاده از یک حلقه با یک شرط پست تایپ کنیددر حالی که:

subsumma()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

S=S+i^2

i = i + 1

حلقه در حالی که i<= 10

MsgBox(S)

پایان فرعی

5 در ماژول استاندارد پروژه، رویه کاربری زیر را با استفاده از یک حلقه با یک شرط پست تایپ کنیدتا زمان :

subsumma()

Dim S به عنوان عدد صحیح

Dim i به عنوان عدد صحیح

S=0

i = 1

S=S+i^2

i = i + 1

حلقه تا i > 10

MsgBox(S)

پایان فرعی

زنگ

کسانی هستند که قبل از شما این خبر را می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه دوست دارید زنگ را بخوانید
بدون هرزنامه