Полезная информация в статус-баре

Кому как, но лично мне статус-бар нужен только в 2-3 случаях:

  • после фильтрации отображает количество значений, оставшихся после выделения
  • когда диапазон выбран, он отображает сумму, среднее значение и количество выбранных ячеек.
  • в случае тяжелых файлов прогресс пересчета формул можно увидеть в книге.

Не так уж и много для строки, которая занимает почти всю ширину экрана и все время на нем висит. Попробуем расширить этот скромный список и добавить к нему еще несколько полезных функций 🙂

Общие принципы управления статус-баром

Управлять строкой состояния с помощью Visual Basic очень просто. Чтобы отобразить в нем свой текст, вы можете использовать простой макрос:

Sub MyStatus() Application.StatusBar = "Привет!" Конец субтитра  

После запуска получаем:

Полезная информация в статус-баре

Чтобы восстановить исходное состояние статус-бара, вам понадобится тот самый короткий «антимакрос»:

Sub MyStatus_Off() Application.StatusBar = Ложный конец Sub  

В базовой версии, как видите, все очень просто. Теперь попробуем развить мысль…

Адрес выбранного диапазона в строке состояния

 В левом верхнем углу окна Excel в строке формул всегда можно увидеть адрес текущей ячейки. А вот если выделен целый диапазон, то адреса выбора мы там, к сожалению, не увидим — отображается та же одна-единственная активная ячейка:

Полезная информация в статус-баре

Чтобы решить эту проблему, вы можете использовать простой макрос, который будет отображать адрес выбранной области в строке состояния. Причем этот макрос должен запускаться автоматически при любом изменении выделения на любом листе — для этого поместим его в обработчик событий. ВыборИзменить Наша книга.

Откройте редактор 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 = "Выделено: " & Заменить(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 для каждого rng ​​в Selection.Areas 'Итерация по всем выбранным значениям RowsCount = rng.Rows.Count 'количество строк ColumnsCount = rng.Columns . Count 'количество столбцов CellCount = CellCount + RowsCount * ColumnsCount' накапливает общее количество ячеек Next 'отображает в строке состояния Application.StatusBar = "Выбрано: " & CellCount & " ячейки" End Sub  

Этот макрос проходит по всем областям, выделенным с помощью Ctrl (если их несколько), сохраняет количество строк и столбцов в каждой области в переменных RowsCount и ColumnsCount и накапливает количество ячеек в переменной CellCount, которая затем отображается в строке состояния. В работе это будет выглядеть так:

Полезная информация в статус-баре

Конечно, вы можете объединить этот и предыдущий макросы, чтобы одновременно отображать и адрес выбранного диапазона, и количество ячеек. Вам нужно изменить только одну предпоследнюю строку на:

Application.StatusBar = "Выбрано: " & Заменить(Selection.Address(0, 0), ",", ", ") & " - всего " & CellCount & " ячеек"  

Тогда картина будет совсем чудесной:

Полезная информация в статус-баре

Ну, я думаю, вы поняли. Подскажите в комментариях — что еще было бы полезно отобразить в статус-баре?

  • Что такое макросы, как они работают, как их использовать и создавать
  • Удобный выбор координат на листе Excel
  • Как сделать сложные формулы более наглядными

Оставьте комментарий