Содержание:
Кому как, но лично мне статус-бар нужен только в 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
- Как сделать сложные формулы более наглядными