آرایه ها در ویژوال بیسیک برای کاربرد

آرایه‌ها در Visual Basic for Application ساختارهایی هستند که معمولاً مجموعه‌هایی از متغیرهای مرتبط از یک نوع را ذخیره می‌کنند. ورودی های آرایه با شاخص عددی آنها قابل دسترسی هستند.

به عنوان مثال، یک تیم 20 نفره وجود دارد که نام آنها برای استفاده بعدی در کد VBA باید ذخیره شود. می توان به سادگی 20 متغیر را برای هر نام اعلام کرد، مانند:

Dim Team_Member1 As String Dim Team_Member2 As String ... Dim Team_Member20 As String

اما می‌توانید از روشی بسیار ساده‌تر و سازمان‌دهی‌شده‌تر استفاده کنید - فهرستی از نام‌های اعضای تیم را در آرایه‌ای از ۲۰ متغیر مانند ذخیره کنید. رشته:

Dim Team_Members(1 تا 20) به عنوان رشته

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

Team_Members(1) = "جان اسمیت"

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

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

برای i = 1 تا 20 سلول (i,1). ارزش = اعضای_تیم (i) بعدی i

بدیهی است که کار با آرایه‌ای که 20 نام را ذخیره می‌کند، بسیار دشوارتر و دقیق‌تر از استفاده از 20 متغیر جداگانه است. اما اگر این نام ها 20 نفر نباشند، 1000 باشند چه؟ و اگر علاوه بر این لازم است نام خانوادگی و نام خانوادگی را جداگانه نگه دارید؟! واضح است که به زودی مدیریت چنین حجمی از داده در کد VBA بدون کمک آرایه کاملاً غیرممکن خواهد شد.

آرایه های چند بعدی در اکسل ویژوال بیسیک

آرایه های ویژوال بیسیک که در بالا مورد بحث قرار گرفت، یک بعدی در نظر گرفته می شوند. این بدان معنی است که آنها یک لیست ساده از نام ها را ذخیره می کنند. با این حال، آرایه ها می توانند ابعاد متعددی داشته باشند. برای مثال، یک آرایه دو بعدی را می توان با شبکه ای از مقادیر مقایسه کرد.

فرض کنید می خواهید ارقام فروش روزانه ژانویه را برای 5 تیم مختلف ذخیره کنید. این به یک آرایه دو بعدی متشکل از 5 مجموعه معیار برای 31 روز نیاز دارد. بیایید آرایه ای مانند این را اعلام کنیم:

Dim Jan_Sales_Figures(1 تا 31، 1 تا 5) به عنوان ارز

برای دسترسی به عناصر آرایه جان_فروش_ارقام، باید از دو شاخص استفاده کنید که روز ماه و شماره فرمان را نشان می دهد. به عنوان مثال، آدرس یک عنصر حاوی ارقام فروش برای 2-اوه تیم ها برای چهاردهم ژانویه به این صورت نوشته می شود:

Jan_Sales_Figures(15, 2)

به همین ترتیب، می‌توانید آرایه‌ای را با 3 بعد یا بیشتر اعلام کنید - فقط ابعاد اضافی را به اعلان آرایه اضافه کنید و از شاخص‌های اضافی برای ارجاع به عناصر این آرایه استفاده کنید.

اعلان آرایه ها در اکسل ویژوال بیسیک

قبلاً در این مقاله، چندین نمونه از اعلان آرایه ها در VBA را بررسی کردیم، اما این موضوع شایسته نگاه دقیق تر است. همانطور که نشان داده شده است، یک آرایه یک بعدی را می توان به صورت زیر اعلام کرد:

Dim Team_Members(1 تا 20) به عنوان رشته

چنین اعلانی به کامپایلر VBA می گوید که آرایه اعضای تیم از 20 متغیر تشکیل شده است که در شاخص های 1 تا 20 قابل دسترسی هستند. با این حال، ممکن است فکر کنیم که متغیرهای آرایه خود را از 0 تا 19 شماره گذاری کنیم، در این صورت آرایه باید به این صورت اعلام شود:

Dim Team_Members(0 تا 19) به عنوان رشته

در واقع به طور پیش فرض شماره گذاری عناصر آرایه از 0 شروع می شود و در اعلان آرایه ممکن است اصلاً اندیس اولیه مشخص نشود مانند این:

Dim Team_Members(19) به عنوان رشته

کامپایلر VBA با چنین ورودی به عنوان یک آرایه از 20 عنصر با شاخص های 0 تا 19 برخورد می کند.

قوانین یکسانی در هنگام اعلان آرایه های ویژوال بیسیک چند بعدی اعمال می شود. همانطور که قبلاً در یکی از مثال ها نشان داده شده است ، هنگام اعلام یک آرایه دو بعدی ، شاخص های ابعاد آن با کاما از هم جدا می شوند:

Dim Jan_Sales_Figures(1 تا 31، 1 تا 5) به عنوان ارز

با این حال، اگر یک شاخص شروع برای هر دو بعد آرایه مشخص نکنید و آن را به صورت زیر اعلام کنید:

Dim Jan_Sales_Figures(31, 5) به عنوان ارز

سپس این ورودی به عنوان یک آرایه دو بعدی در نظر گرفته می شود که بعد اول آن شامل 32 عنصر با شاخص های 0 تا 31 و بعد دوم آرایه شامل 6 عنصر با شاخص های 0 تا 5 است.

آرایه های پویا

همه آرایه‌های مثال‌های بالا دارای تعداد ثابتی از ابعاد هستند. با این حال، در بسیاری از موارد ما از قبل نمی دانیم که آرایه ما باید چه اندازه باشد. ما می توانیم با اعلام یک آرایه عظیم که اندازه آن مطمئناً بزرگتر از آنچه برای وظیفه ما لازم است، از وضعیت خارج شویم. اما چنین راه حلی به حافظه اضافی زیادی نیاز خواهد داشت و می تواند برنامه را کند کند. راه حل بهتری وجود دارد. ما می‌توانیم از یک آرایه پویا استفاده کنیم - این آرایه‌ای است که اندازه آن را می‌توان هر تعداد بار در طول اجرای یک ماکرو تنظیم و تغییر داد.

یک آرایه پویا با پرانتزهای خالی اعلام می شود، مانند این:

Dim Team_Members() به عنوان رشته

بعد، باید بعد آرایه را در حین اجرای کد با استفاده از عبارت اعلام کنید ReDim:

ReDim Team_Members (1 تا 20)

و اگر در حین اجرای کد دوباره باید اندازه آرایه را تغییر دهید، می توانید دوباره از عبارت ReDim استفاده کنید:

اگر Team_Size > 20 سپس ReDim Team_Members(1 To Team_Size) پایان دهید اگر

به خاطر داشته باشید که تغییر اندازه یک آرایه پویا به این روش منجر به از دست رفتن تمام مقادیر ذخیره شده در آرایه می شود. برای ذخیره داده های موجود در آرایه، باید از کلمه کلیدی استفاده کنید حفظهمانطور که در زیر نشان داده شده است:

اگر Team_Size > 20 سپس ReDim Preserve Team_Members(1 To Team_Size) پایان اگر

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

پاسخ دهید