Робота з об'єктом range (частина 2) - макроси і програми vba - excel - каталог статей - perfect excel

Продовжуємо нашу розмову про об'єкт Excel Range. розпочатий в першій частині. Розберемо ще кілька типових задач і одну розважальну. До речі, в процесі написання другої частини я доповнив і розширив першу, тому рекомендую її подивитися ще раз.

приклади коду

Типові завдання

Перебір осередків діапазону (варіант 4)

Для колекції додав четвертий варіант перебору осередків. Як бачите, можна вибирати, як перебирається діапазон - по стовпцях або по рядках. Зверніть увагу на використання властивості колекції Cells. Не плутайте: властивість Cells робочого листа містить всі осередки листа, а властивість Cells діапазону (Range) складається з ячейок тільки цього діапазону. В даному випадку ми отримуємо все осередки шпальти чи рядки.

Робота з поточної областю

Excel вміє автоматично визначати поточну область навколо активної комірки. Відповідна команда на аркуші викликається через Ctrl + A. Через ActiveCell ми за допомогою властивості Worksheet легко виходимо на лист поточної комірки, а вже через нього можемо експлуатувати властивість UsedRange. яке і є посиланням на Range поточної області. Щоб зрозуміти, який діапазон ми отримали, ми міняємо колір осередків. Функція GetRandomColor не є стандартною, вона визначена в модулі файлу прикладу.

Визначення меж поточної області

Виділення стовпців / рядків поточної області

Тут немає нічого нового, ми все це обговорили в попередньому прикладі. Ми отримуємо посилання на стовпці / рядки, змінюючи їх колір для контролю результату роботи коду.

Скидання форматування діапазону

Для повернення діапазону до канонічного стерильному станом дуже просто і зручно використовувати властивість Style. і привласнити йому ім'я стилю "Normal". Цікаво, що всі інші стандартні стилі в локалізованому офісі мають російські імена, а у цього стилю залишили англомовне ім'я, що непогано.

Пошук останнього рядка стовпця (варіант 1)

Range має 2 властивості EntireColumn і EntireRow. повертають стовпці / рядки, на яких розташувався ваш діапазон, але повертають їх ПОВНІСТЮ. Тобто, якщо ви налаштували діапазон на D5. то Range ( "D5"). EntireColumn поверне вам посилання на D: D. а EntireRow - на 5: 5.

Йдемо далі - властивість End повертає вам найближчу осередок в певному напрямку, що стоїть на кордоні безперервного діапазону з даними. Як це працює ви можете побачити, натискаючи на аркуші комбінації клавіш Ctrl + стрілки. До речі, це одна з найбільш корисних гарячих клавіш в Excel. Напрямок задається стандартними константами xlUp. xlDown. xlToRight. xlToLeft.

Класична задача у Excel програміста - визначити, де кінчається таблиця або, в даному випадку, конкретний стовпець. Ідея полягає в тому, щоб встати на останню комірку стовпчика (рядок 1048576) і, стоячи в цьому осередку, перейти по Ctrl + стрілка вгору (що на мові VBA - End (xlUp)).

Пошук останнього рядка стовпця (варіант 2)

Ще один варіант.

Пошук "останньої" осередки листа

Тут показується, як знайти на аркуші клітинку, нижче і правіше якої знаходяться тільки порожні клітинки. Відповідно дані треба шукати в діапазоні від A1 до цього осередку. На цей осередок можна перейти через Ctrl + End. Як цим скористатися в VBA показано нижче:

Розбір кліп-генератора

Ну, і як розвага і розрядки погляньте на код кліп-генератора, який генерує кольорові квадрати в заданих межах екрану. На деяких це надає заспокійливий ефект :)

Робота з об'єктом range (частина 2) - макроси і програми vba - excel - каталог статей - perfect excel

За нашої теми в коді звертає на себе увагу використання властивості ReSize об'єкта Range. Як не важко здогадатися, властивість розширює (усікає) поточний діапазон до зазначених меж, при цьому лівий верхній кут діапазону зберігає свої координати. А також подивіться на 2 останні рядки коду, що реалізують очищення екрану. Там дуже показово використаний каскад властивостей End і Offset.

Читайте також: