зміст
Комусь подобається, але мені особисто рядок стану потрібен тільки в 2-3 випадках:
- після фільтрації відображає кількість значень, що залишилися після вибору
- коли діапазон вибрано, він відображає суму, середнє значення та кількість вибраних клітинок
- у випадку важких файлів ви можете побачити прогрес у перерахунку формул у книзі.
Не так багато для рядка, який займає майже всю ширину екрану і весь час висить на ньому. Давайте спробуємо розширити цей скромний список і додати до нього ще кілька корисних функцій 🙂
Загальні принципи управління рядком стану
Керувати рядком стану за допомогою Visual Basic дуже легко. Щоб відобразити в ньому ваш текст, ви можете використовувати простий макрос:
Sub MyStatus() Application.StatusBar = "Привіт!" Кінець Під
Після запуску ми отримуємо:
Для відновлення початкового стану рядка стану знадобиться той же короткий «антимакрос»:
Sub MyStatus_Off() Application.StatusBar = False End Sub
У базовій версії, як бачите, все дуже просто. А тепер спробуємо розвинути ідею…
Адреса вибраного діапазону в рядку стану
У верхньому лівому куті вікна Excel в рядку формул завжди можна побачити адресу поточної клітинки. Але якщо виділений цілий діапазон, то, на жаль, адреси виділення ми там не побачимо – відображається та сама єдина активна комірка:
Щоб вирішити цю проблему, можна скористатися простим макросом, який відобразить адресу вибраної області в рядку стану. Крім того, цей макрос повинен запускатися автоматично, при будь-якій зміні виділення на будь-якому аркуші – для цього ми розмістимо його в обробнику події SelectionChange наша книга.
Відкрийте редактор Visual Basic за допомогою однойменної кнопки на вкладці розробник (розробник) або комбінації клавіш Ліва клавіша Alt+F11. Знайдіть свою книгу у верхньому лівому куті панелі «Проект» і подвійним клацанням відкрийте в ній модуль Ця книга (Цей робочий зошит):
У вікні, що відкриється, скопіюйте та вставте наступний код макросу:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Виделено: " & Selection.Address(0, 0) End Sub
Тепер, коли вибрано будь-який діапазон (включаючи більше одного!), його адреса буде відображатися в рядку стану:
Щоб запобігти об’єднанню адрес кількох діапазонів, виділених за допомогою Ctrl, ви можете додати невелике вдосконалення – скористайтеся функцією Замінити, щоб замінити кому на кому з пробілом:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Виділено: " & Replace(Selection.Address(0, 0), ",", ", ") End Sub
Кількість виділених клітинок у рядку стану
Коли вибрано будь-який діапазон, кількість непорожніх виділених комірок за замовчуванням відображається в правій частині рядка стану. Іноді потрібно знати кількість виділених. Це завдання також можна виконати за допомогою простого макросу для обробки події книги SelectionChange, як у попередньому прикладі. Вам знадобиться такий макрос:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim CellCount As Variant, rng As Range For Every rng In Selection.Areas 'Повторити всі виділення RowsCount = rng.Rows.Count 'кількість рядків ColumnsCount = rng.Columns . Count 'кількість стовпців CellCount = CellCount + RowsCount * ColumnsCount 'накопичувати загальну кількість клітинок Next 'відобразити в рядку стану Application.StatusBar = "Вибрано: " & CellCount & "cells" End Sub
Цей макрос перебирає всі вибрані Ctrl області (якщо їх більше однієї), зберігає кількість рядків і стовпців у кожній області в змінних RowsCount і ColumnsCount і накопичує кількість клітинок у змінній CellCount, яка потім відображається у рядку стану. На роботі це буде виглядати так:
Звичайно, ви можете поєднати цей і попередній макроси, щоб одночасно відобразити адресу вибраного діапазону та кількість клітинок. Вам потрібно лише змінити один передостанній рядок на:
Application.StatusBar = "Вибрано: " & Replace(Selection.Address(0, 0), ",", ", ") & " - загальна кількість " & CellCount & "cell"
Тоді картина вийде досить чудовою:
Гадаю, ви зрозуміли. Пропонуйте в коментарях – що ще корисно було б відобразити в рядку стану?
- Що таке макроси, як вони працюють, як їх використовувати та створювати
- Зручний вибір координат на аркуші Excel
- Як зробити складні формули більш наочними