مجموعه Worksheets در VBA

در این بخش از آموزش های ماکرونویسی در اکسل با نحوه کار با صفحات یک کاربرگ در VBA بیشتر آشنا خواهیم شد. برای کار با صفحات در VBA مجموعه ای به نام Worksheets در شیء Workbook اکسل تعبیه شده است. در این آموزش با استفاده از یک مثال با این مجموعه بیشتر آشنا خواهیم شد.

مدت زمان تخمینی مطالعه: 5 دقیقه

آیا می‌دانید:

آیا می‌دانید که ماکرونویسی در اکسل به شما این امکان را می‌دهد که با استفاده از دستورات VBA، به‌سرعت کارهای پیچیده را انجام دهید و در عین حال آموزش ویژوال بیسیک در اکسل می‌تواند شما را در ایجاد ماکروهای پیشرفته یاری کند؛ به‌طوری که با تسلط بر این مهارت‌ها، می‌توانید به‌راحتی از نمونه کدهای VBA در اکسل بهره‌برداری کنید و کارایی فرآیندهای خود را به حداکثر برسانید؟

معرفی مجموعه 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 کلیک نمایید.

نتیجه اجرای ماکرو

ماکروی ما در نهایت پنجره پیغام را به شکل زیر نمایش خواهد داد. برای تمرین بیشتر صفحات اکسل را حذف یا اضافه نمایید و مجدداً ماکرو را اجرا نمایید تا نتیجه را مشاهده نمایید.

دانلود فایل مثال

دیدگاهتان را بنویسید