ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
31 visibility
موضوع: آفیس توسط:

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

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

شاید ساده ترین راه برای بررسی خالی بودن یک کاربرگ استفاده از شی UsedRange برای تعیین آنچه در کاربرگ وجود دارد باشد:

With ActiveSheet.UsedRange
    IsSheetEmpty = .Rows.Count = 1 And _
      .Columns.Count = 1 And _
      .Cells(1,1) = ""
End With

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

بسته به ویژگی های داده های خود، ممکن است بتوانید کد را حتی بیشتر کوتاه کنید:

With ActiveSheet.UsedRange
    IsSheetEmpty = .Count = 1 And .Cells(1,1) = ""
End With

در این نسخه شما به سادگی بررسی می کنید که آیا تعداد سلول ها در شی UsedRange 1 است و آیا آن سلول خاص خالی است.

اگر یک ردیف سرصفحه (یا دو) در کاربرگ خود دارید، می‌توانید این تکنیک را به هر تعداد ردیف و ستونی که در آن سرصفحه‌ها دارید، تنظیم کنید. به عنوان مثال، اگر هدرهایی در محدوده A1:F4 دارید، ممکن است تکنیک را به این صورت تنظیم کنید:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=4 _
  AND ActiveSheet.UsedRange.Columns.Count=6

در این نمونه نیازی به بررسی محتویات A1 ​​نیست زیرا از قبل می‌دانید که آن (و چندین سلول دیگر) حاوی اطلاعاتی هستند - هدرهای شما. شما فقط می خواهید همه چیز را در آن هدرها نادیده بگیرید تا مشخص شود که آیا اطلاعات اضافی در کاربرگ وجود دارد یا خیر.

اگر کاربرگ کاملاً خالی است (هیچ اطلاعات سرصفحه‌ای که اضافه کرده‌اید وجود ندارد)، می‌توانید از تابع کاربرگ CountA برای تجزیه و تحلیل سلول‌های کاربرگ استفاده کنید. اگر نتیجه تابع بزرگتر از صفر باشد، کاربرگ خالی نیست. به عنوان مثال، اجازه دهید بگوییم که کاربرگ مورد نظر برای تجزیه و تحلیل توسط شی sht مشخص شده است. می توانید از این تکنیک به این صورت استفاده کنید:

IsSheetEmpty = Application.WorksheetFunction.CountA(sht.Cells) = 0

البته این امکان وجود دارد که یک کاربرگ حاوی مواردی غیر از اطلاعات در سلول ها باشد. اگر مشکوک هستید که این نوع اشیاء را در یک کاربرگ دارید (چیزهایی مانند AutoShapes، گرافیک، یا نمودارهای جاسازی شده)، پس آزمایش شما برای "تهی بودن" باید کاملتر باشد. هر یک از این موارد در مجموعه‌هایی قرار دارند که در VBA قابل دسترسی هستند، و می‌توانید ویژگی Count را برای هر مجموعه بررسی کنید تا ببینید صفر است یا خیر.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 51 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 30 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 30 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 40 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

294 نفر آنلاین
2 عضو و 292 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 6672
بازدید دیروز: 25180
بازدید کل: 20344025
...