در این بخش از آموزش های ماکرونویسی در اکسل با نحوه کار با صفحات یک کاربرگ در VBA بیشتر آشنا خواهیم شد. برای کار با صفحات در VBA مجموعه ای به نام Worksheets در شیء Workbook اکسل تعبیه شده است. در این آموزش با استفاده از یک مثال با این مجموعه بیشتر آشنا خواهیم شد.
مدت زمان تخمینی مطالعه: 5 دقیقه
معرفی مجموعه Worksheets
مجموعه Worksheets حاوی تمام صفحات موجود در کاربرگ هدف می باشد. هر فایل اکسل فقط می تواند حاوی یک کاربرگ می باشد. این به این معناست که چند کاربرگ را نمی توانید در یک فایل ذخیره نمایید. هر کاربرگ می تواند شامل چندین صفحه یا sheet یا worksheet باشد.
در VBA صفحات یا sheet های یک کاربرگ در مجموعه Worksheets که یکی از خواص شیء کاربرگ می باشد، نگهداری و ذخیره می شوند. برای درک بیشتر موضوع به مثال زیر توجه نمایید.
مثال
ماکروی زیر با استفاده از مجموعه Worksheets موجود در شیء Workbook اطلاعات تمامی صفحات اکسل را در پنجره پیغام نمایش خواهد داد.
- یک فایل اکسل جدید باز کنید و سه صفحه با نام های دلخواه در آن ایجاد نمایید.
- از سربرگ توسعه دهنده اکسل روی گزینه Visual Basic کلیک نمایید تا ویرایشگر VBA باز گردد.
- روی شیء ThisWorkbook دو بار کلیک نمایید تا صفحه ویرایش آن باز شود. در صفحه ویرایش کد زیر را کپی نمایید.
Sub getSheetsInfo()
Dim shCount As Integer
Dim sh As Worksheet
Dim shInfo As String
shCount = Me.Worksheets.Count
shInfo = "اين کاربرگ شامل " & shCount & " صفحه به نام هاي "
For Each sh In Me.Worksheets
shInfo = shInfo & sh.Name & " و "
Next
shInfo = Left(shInfo, Len(shInfo) - 2)
shInfo = shInfo & " مي باشد."
MsgBox shInfo, vbMsgBoxRtlReading
End Sub
تحلیل کد مثال
خطوط 1 و 14 بدنه ماکروی ما می باشند. در این مثال ماکروی ما یک روال از نوع sub می باشد. مهمترین خاصیت روال سابروتین در VBA این است که این روال مقدار بازگشتی ندارد و فقط یک سری عملیات را روی داده ها انجام می دهد. خط 1 شروع روال و خط 14 پایان روال را مشخص می کند.
خطوط 2، 3 و 4 متغیرهای موردنیاز روال می باشند. متغیر اول از نوع داده عددی integer، متغیر دوم متغیر شیء صفحه worksheet و متغیر سوم از نوع داده رشته ای string می باشد.
خط 6 مقدار متغیر shCount که آن را برای تعداد صفحات موجود در کاربرگ (فایل اکسل) در نظر گرفته ایم را تعیین می نماید. کلمه کلیدی Me در این خط نمایانگر شیء ThisWorkbook می باشد. برای VBA فرقی ندارد اگر در این خط از ThisWorkbook بجای Me استفاده می کردیم، نتیجه یکی خواهد بود.
ThisWorkbook یک شیء Workbook می باشد و بنابراین تمامی خواص و متدهای آن را به ارث می برد. خاصیت Worksheets در این خط خودش یک شیء است که دارای خواص و متدهای خاص خودش می باشد. در این خط ما از خاصیت Count این شیء استفاده کرده ایم که تعداد صفحات کاربرگ را در خود نگهداری می نماید.
در خط 7 مقدار اولیه متغیر shInfo را تعیین کرده ایم. این خط یک رشته داینامیک است که مقدار آن با توجه به مقدار shCount متغیر خواهد بود. عملگر & برای جمع رشته ها در VBA کاربرد دارد.
خطوط 8 تا 10 یک حلقه تکرار VBA می باشند. در خط 8 به VBA گفته ایم که برای هر شیء sh موجود در مجموعه Me.Worksheets عملیات خط 9 را تکرار نماید. در این مثال خط 9 سه بار (به اندازه تعداد صفحات کاربرگ) تکرار خواهد شد. در خط 9 نام صفحه با استفاده از خاصیت Name شیء worksheet استخراج و به متغیر shInfo اضافه خواهد شد.
در خط 11 با توجه به اینکه در تکرار خط 9 دو کاراکتر مازاد به رشته shInfo اضافه شده اند، آنها را با استفاده از دستور Left حذف می کنیم.
در خط 12 جمله ای که توسط رشته shInfo ذخیره می شود را کامل نموده ایم.
در خط 13 جمله را توسط تابع Msgbox به کاربر نمایش می دهیم.
اجرای ماکرو
برای اجرای ماکرو از سربرگ توسعه دهنده روی گزینه macros کلیک نمایید. در صفحه ای که باز می شود روی نام ماکرو getSheetsInfo کلیک و سپس روی کلید run کلیک نمایید.
نتیجه اجرای ماکرو
ماکروی ما در نهایت پنجره پیغام را به شکل زیر نمایش خواهد داد. برای تمرین بیشتر صفحات اکسل را حذف یا اضافه نمایید و مجدداً ماکرو را اجرا نمایید تا نتیجه را مشاهده نمایید.