آرایه VBA در اکسل چیست و چگونه برنامه نویسی کنیم

VBA سالهاست که بخشی از مجموعه Microsoft Office بوده است. در حالی که عملکرد و قدرت کامل یک برنامه VB کامل را ندارد، VBA به کاربران (VBA)آفیس(Office) انعطاف‌پذیری برای ادغام محصولات آفیس(Office) و خودکارسازی کارهایی که در آنها انجام می‌دهید، ارائه می‌دهد.

یکی از قدرتمندترین ابزارهای موجود در VBA ، توانایی بارگذاری کل محدوده داده در یک متغیر واحد به نام آرایه است. با بارگذاری داده‌ها به این روش، می‌توانید به روش‌های مختلفی روی آن محدوده از داده‌ها دستکاری یا محاسبات انجام دهید.

بنابراین آرایه VBA چیست؟ (VBA)در این مقاله به این سوال پاسخ خواهیم داد و به شما نشان خواهیم داد که چگونه از یکی در اسکریپت VBA خود(your own VBA script) استفاده کنید .

آرایه VBA چیست؟

استفاده از یک آرایه VBA در (VBA)اکسل(Excel) بسیار ساده است، اما درک مفهوم آرایه ها می تواند کمی پیچیده باشد اگر هرگز از آن استفاده نکرده باشید.

آرایه(Think) ای را مانند یک جعبه با بخش هایی در داخل آن در نظر بگیرید. آرایه یک بعدی، جعبه ای با یک خط از بخش است. آرایه دو بعدی جعبه ای است با دو خط بخش.

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

در ابتدای اسکریپت VBA ، باید این "جعبه" را با تعریف آرایه VBA خود تعریف کنید. (VBA)بنابراین برای ایجاد یک آرایه که بتواند یک مجموعه داده (آرایه یک بعدی) را در خود نگه دارد، خط زیر را بنویسید.

Dim arrMyArray(1 To 6) As String

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

arrMyArray(1) = "Ryan Dube"

با استفاده از خط زیر می توانید یک آرایه دو بعدی ایجاد کنید.

Dim arrMyArray(1 To 6,1 to 2) As Integer

عدد اول نشان دهنده سطر و عدد دوم ستون است. بنابراین آرایه فوق می تواند محدوده ای با 6 سطر و 2 ستون را در خود جای دهد.

شما می توانید هر عنصر از این آرایه را با داده ها به صورت زیر بارگذاری کنید.

arrMyArray(1,2) = 3

این یک عدد 3 را در سلول B1 بارگذاری می کند.

یک آرایه می تواند هر نوع داده ای را به عنوان یک متغیر معمولی نگهداری کند، مانند رشته ها، بولی، اعداد صحیح، شناورها و غیره.

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

نحوه برنامه نویسی یک آرایه VBA در اکسل

بیایید نگاهی به یک برنامه ساده بیندازیم که در آن ممکن است بخواهید اطلاعات را از یک صفحه گسترده در یک آرایه چند بعدی بارگذاری کنید.

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

توجه داشته باشید که در VBA هنگامی که به سطرها یا ستون‌ها ارجاع می‌دهید، سطرها و ستون‌ها(rows and columns) را از بالا سمت چپ از 1 می‌شمارید. بنابراین ستون rep 3، ستون آیتم 4 و ستون کل 7 است.

برای بارگذاری این سه ستون در تمام 11 ردیف، باید اسکریپت زیر را بنویسید.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

متوجه خواهید شد که برای رد شدن از ردیف سرصفحه، شماره ردیف در For look اول باید به جای 1 از 2 شروع شود. این بدان معناست که هنگام بارگیری مقدار سلول باید 1 را برای مقدار ردیف آرایه کم کنید. به آرایه با استفاده از سلول های(Cells) (i، j).Value.

کجا اسکریپت آرایه VBA خود را وارد کنید(Your VBA Array Script)

برای قرار دادن برنامه یک اسکریپت VBA در (VBA)اکسل(Excel) ، باید از ویرایشگر VBA استفاده کنید. (VBA)با انتخاب منوی Developer و انتخاب (Developer)View Code در قسمت Controls روبان می توانید به این مورد دسترسی داشته باشید .

اگر برنامه‌نویس(Developer) را در منو نمی‌بینید ، باید آن را اضافه کنید. برای انجام این کار، File and Options را انتخاب کنید تا پنجره Excel Options باز شود.

دستورات انتخاب را از منوی کشویی به همه دستورات(All Commands) تغییر دهید . از منوی سمت چپ Developer را انتخاب کنید و دکمه Add را انتخاب کنید تا به صفحه سمت راست منتقل شود. چک باکس را برای فعال کردن آن انتخاب کنید و برای(OK) اتمام، تأیید را انتخاب کنید.

هنگامی که پنجره کد ویرایشگر(Code Editor) باز می شود، مطمئن شوید که برگه ای که داده های شما در آن است در قسمت سمت چپ انتخاب شده است. کاربرگ(Worksheet) را در منوی سمت چپ انتخاب کنید و در سمت راست Activate را انتخاب کنید . این یک زیربرنامه جدید به نام Worksheet_Activate () ایجاد می کند.

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

این اسکریپت در 12 ردیف کار می کند و نام تکرار را از ستون 3، مورد از ستون 4، و فروش کل را از ستون 7 بارگیری می کند.

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

دستکاری آرایه ها در Excel VBA

فرض کنید می‌خواهید 5 درصد مالیات بر فروش را برای همه قیمت‌های فروش نهایی اعمال کنید و سپس همه داده‌ها را در یک برگه جدید بنویسید.

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

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

این کار کل آرایه را در Sheet2 "تخلیه" می کند ، با یک ردیف اضافی حاوی کل در 5٪ برای مقدار مالیات ضرب می شود.

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

همانطور که می بینید، آرایه های VBA در (VBA)اکسل(Excel) بسیار مفید و به اندازه هر ترفند دیگر اکسل(any other Excel trick) همه کاره هستند . 

مثال بالا یک کاربرد بسیار ساده برای یک آرایه است. می‌توانید آرایه‌های بسیار بزرگ‌تری ایجاد کنید و مرتب‌سازی، میانگین‌گیری یا بسیاری از عملکردهای دیگر را در مقابل داده‌هایی که در آنها ذخیره می‌کنید انجام دهید.

اگر می‌خواهید خلاقیت واقعی داشته باشید، حتی می‌توانید دو آرایه حاوی طیف وسیعی از سلول‌ها(containing a range of cells) از دو صفحه مختلف ایجاد کنید و محاسباتی را بین عناصر هر آرایه انجام دهید.

برنامه ها فقط با تخیل شما محدود می شوند.



About the author

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



Related posts