کار با آرایه ها در vba اکسل
با نام و یاد خداوند بخشنده و مهربان، با یک مقاله آموزشی دیگر با عنوان کار با آرایه ها در vba اکسل خدمت شما عزیزان و علاقه مندان به یادگیری مباحث شیرینی ماکرونویسی در اکسل هستیم.
آرایه های ثابت(Static) در ویبیای اکسل
به زبان بسیار بسیار ساده، آرایه ها در ماکرونویسی همان متغیرها هستند! با این تفاوت که قادر به ذخیره سازی بیش از یک مقدار هستند.
به منظور درک بهتر به ماکرویی که در ادامه آورده شده است دقت نمایید:
1 2 3 4 5 |
Sub Macro1() Dim iName As String iName = "Masoud" MsgBox iName End Sub |
در ماکروی فوق یک متغیر به نام iName تعریف گردیده است که یک داده از نوع رشته (String) درون خود جای داده است.
حال با درنظر گرفتن ماکروی قبل، به ماکروی دیگری که در ادامه آورده شده است توجه فرمایید:
1 2 3 4 5 6 7 |
Sub Macro1() Dim iName(1 To 3) As String iName(1) = "Masoud" iName(2) = "Ali" iName(3) = "Ramin" MsgBox iName(1) End Sub |
در ماکروی فوق ما آرایه ای به نام iName تعریف نمودیم که شامل 3 داده به ترتیب اسامی فوق می باشد.
در ادامه روش دیگری را برای تعریف فضای آرایه بررسی خواهیم نمود. به ماکروی زیر دقت کنید:
1 2 3 4 5 6 7 |
Sub Macro1() Dim iName(2) As String iName(0) = "Masoud" iName(1) = "Ali" iName(2) = "Ramin" MsgBox iName(0) End Sub |
در ماکروی فوق آرایه ای به نام iName تعریف نمودیم که از 3 عضو تشکیل شده است. نکته ای که در این بخش حائز اهمیت می باشد این است که در این نوع تعریف آرایه، شروع جایگاه از عدد 0 خواهد بود. در ادامه تصویری از فضای آرایه فوق را مشاهده خواهید نمود:

همچنین در صورت استفاده از روش فوق، می توانید شروع جایگاه آرایه ها را توسط Option Base از عدد 1 تعیین نمایید:

با درج دستور Option Base 1 در ابتدای ماژول، شروع جایگاه آرایه ها از عدد 1 خواهد بود.
البته به منظور تکمیل این بخش باید اضافه کنم که شما قادر به تعریف چندین فضا در یک آرایه بصورت زیر نیز خواهید بود:
1 2 3 4 5 |
Sub Macro1() Dim iName(1 To 3, 1 To 5) As String iName(2, 4) = "Masoud" MsgBox iName(2, 4) End Sub |
در ادامه تجسم آرایه فوق را خواهیم داشت:

حال تا به این لحظه یاد گرفتیم که چگونه آرایه های ثابت(Static) در ویبیای اکسل تعریف کنیم. در ادامه نحوه تعریف آرایه های پویا(Dynamic) را به شما خواهیم آموخت.
آرایه های پویا(Dynamic) در ویبیای اکسل
آرایه های پویا برخلاف آرایه های ثابت، فضای ثابتی ندارند و درطول اجرای ماکرو منعطف تر و قابل تغییر هستند.
به منظور درک بهتر به آرایه ای که در ادامه تعریف گردیده است، دقت کنید:
1 2 3 4 5 6 7 8 |
Sub Macro1() Dim iName() As String ReDim iName(2) iName(0) = "Masoud" iName(1) = "Ali" iName(2) = "Ramin" MsgBox iName(1) End Sub |
در ماکروی فوق، آرایه iName از نوع پویا تعریف گردیده است که تعیین فضای آن توسط دستور ReDim در سطر دوم صورت گرفته است.
آرایه های دوبعدی در ماکرونویسی
آرایه هایی که تا به این لحظه مورد بحث قرار گرفتند، جزو آرایه های یک بعدی محسوب می شدند. شما می توانید اقدام به تعریف آرایه های 2 بعدی کنید.
به ماکروی زیر دقت کنید:

ماکروی فوق یک ماکروی 2 بعدی محسوب می شود. به منظور درک بهتر از این نوع آرایه به تصویر زیر دقت کنید:

و یا تصویر زیر نمونه ای از آرایه 2 بعدی iName(2,4) خواهد بود:

البته تعریف آرایه ها توسط تابع Array نیز امکان پذیر است. به عنوان مثال:
1 2 3 4 5 |
Sub Macro1() Dim iName() As Variant iName = Array("Masoud", "Ali", "Ramin") MsgBox iName(1) End Sub |
با توجه به ماکروی فوق، توسط تابع Array اقدام به مقداردهی و سپس فراخوانی آرایه iName نمودیم. در این نوع مقداردهی توجه فرمایید که نوع فضای آرایه می بایست از نوع Variant تعریف گردد.
به مثالی که در آورده شده است دقت کنید:

در ماکروی فوق، آرایه ای از روزهای هفته تعریف نمودیم که توسط تابع Array مقداردهی شده است. در پایان توسط تابع Msgbox مقدار جایگاه شماره 4 آن را فراخوانی نمودیم که قطعا روز “چهارشنبه” خواهد بود.

در پایان امیدواریم مقاله آموزشی کار با آرایه ها در vba اکسل مورد تایید و استفاده شما عزیزان قرار گرفته باشد لذا در صورت وجود هرگونه انتقاد و پیشنهاد می توانید آن را در قسمت نظرات بری ما ارسال نمایید. همچنین بنده برای تهیه این مقاله آموزشی از سایت های مفیدی همانند مایکروسافت، educba.com و automateexcel.com استفاده نمودم.