Корисна інформація в рядку стану

Комусь подобається, але мені особисто рядок стану потрібен тільки в 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
  • Як зробити складні формули більш наочними

залишити коментар