Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Фиксация положения формы в окне Excel

    Автоматическая фиксация положения формы в окне Excel с помощью кода VBA. Фиксация положения формы с кнопками часто используемых макросов.

    Для чего это нужно?

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

    Наиболее подходящим местом для закрепления формы, по моему мнению, является верхний правый угол.

    Я использовал такую кнопочную форму:

    Кнопочная форма в окне Excel

    Фиксация положения формы

    Разместите следующие процедуры в указанных программных модулях:

    1️⃣ В стандартный модуль:

    Числовые коэффициенты отодвигают форму от краев окна. Сверху — чтобы не были закрыты кнопки управления окном приложения, а справа — просто так, для лучшего вида.

    2️⃣ В модуль листа «Лист1»:


    3️⃣ В модуль книги:

    Как это работает?

    • При открытии книги, если активным является «Лист1», форма автоматически загружается и размещается в правом верхнем углу.
    • В открытой книге: при выборе листа «Лист1» — форма отображается, при выборе любого другого листа — форма закрывается.
    • При изменении размеров окна активной книги открытая форма будет перемещаться вслед за правым верхнем углом.

    Примечания

    • При перемещении окна Книги в пределах экрана вручную, форма будет оставаться неподвижной. Чтобы вернуть ее в свой правый верхний угол, достаточно выбрать другой лист и вернуться на «Лист1».
    • Замените в процедурах имя «Лист1» на имя своего листа.
    • Для непредвиденных случаев на листе с формой разместите кнопку для прямого вызова этой формы.
    • Проверено в Excel 2016. Я работал с такой формой в Excel 2000, но там устанавливал расположение кнопочной формы вручную (которое сохранялось при следующих вызовах), выбрав в свойствах формы: StartupPosition = 0 - Manual.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.