Karthi خاطرنشان می کند که اغلب برای انتخاب سلول های قابل مشاهده در یک انتخاب، نیاز به استفاده از Go To Special دارد. این باعث میشود که او به این فکر کند که آیا راهی وجود دارد که بتوان چنین سلولهایی را در یک ماکرو انتخاب کرد.
راههای زیادی وجود دارد که فقط سلولهای قابل مشاهده را میتوان بدون ماکرو انتخاب کرد، اما در اینجا به آنها اشاره نمیشود. فرض این است که شما می خواهید سلول های قابل مشاهده را به عنوان بخشی از یک ماکرو بزرگتر که ممکن است ایجاد کنید انتخاب کنید. به عنوان مثال، ممکن است لازم باشد قبل از انجام نوعی قالب بندی یا قبل از اینکه سلول ها را به روش دیگری پردازش کنید، سلول های قابل مشاهده را انتخاب کنید.
برای انتخاب فقط سلول های قابل مشاهده از محدوده سلول های انتخاب شده، می توانید از خط کد زیر استفاده کنید:
Selection.SpecialCells(xlCellTypeVisible).Select
اگر قبل از انتخاب زیرمجموعه قابل مشاهده آن سلول ها نیاز به کار بر روی محدوده اولیه دیگری از سلول ها دارید، تنها کاری که باید انجام دهید این است که بخش "انتخاب" خط را تغییر دهید. به عنوان مثال، می توانید سلول های قابل مشاهده در محدوده مورد استفاده کاربرگ را با استفاده از این خط انتخاب کنید:
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select
به طور مشابه، می توانید با استفاده از این خط، تمام سلول های قابل مشاهده در کل کاربرگ را انتخاب کنید:
Cells.SpecialCells(xlCellTypeVisible).Select
به خاطر داشته باشید که تکنیکهایی که تاکنون توضیح داده شد، تمام سلولهای قابل مشاهده را انتخاب میکنند، حتی اگر خارج از صفحه باشند. به عبارت دیگر، تکنیک ها هر سلول غیرمخفی در کاربرگ را انتخاب می کنند. اگر واقعاً میخواهید فقط سلولهای غیرمخفی را انتخاب کنید که در زمان کنونی روی صفحه قابل مشاهده هستند، میتوانید از تکنیک دیگری استفاده کنید:
Intersect(MyRange, ActiveWindow.VisibleRange).SpecialCells(xlCellTypeVisible)
کد فقط با انتخاب سلولهایی شروع میشود که محدوده مشخصی (در این مورد MyRange) با محدوده قابل مشاهده سلولها در پنجره فعال تلاقی میکند. این سلولها با استفاده از مجموعه SpecialCells بیشتر شناسایی میشوند تا مطمئن شوند که فقط سلولهای غیرمخفی استفاده میشوند.