Расчет расстояния между верхом окна и строкой 1 (Microsoft Excel)
Когда он создает UserForm, Луи устанавливает для свойства Top UserForm значение 222, которое он определил методом проб и ошибок как расстояние в пикселях между верхней границей активного окна и верхней частью первой строки данных на листе. Он задается вопросом, есть ли способ вычислить это расстояние программно, учитывая, что расстояние может варьироваться в зависимости от того, какая часть ленты отображается, и высоты строки формул.
Если вам нужно получить высоту области ленты, вы можете проверить свойство Height объекта CommandBars («Ribbon») следующим образом:
iHt = CommandBars("Ribbon").Height
Это, конечно, даст вам только часть информации, которая вам в конечном итоге понадобится. Информация о расположении для UserForm основывается на верхнем левом углу окна программы. Таким образом, вам необходимо учитывать толщину границы окна (если есть граница), высоту ленты (упомянутая выше, но только при работе в версии Excel, в которой используется лента), высоту строки формул. , любое пространство, отведенное для линейки, и так далее.
У большинства из этих вещей нет свойств высоты, которые вы можете проверить, поэтому позиционирование UserForm может быть процессом проб и ошибок по порядку.
После того, как вы правильно разместите UserForm в вашей системе, нет гарантии, что она будет размещена правильно, если будет отображаться в чужой системе.
Лучшее решение, которое мы нашли, — это (в данном случае) не изобретать велосипед. Чип Пирсон на своем веб-сайте создал то, что он называет «позиционером формы», который избавляет от догадок при позиционировании UserForm. Вы можете найти информацию об этом здесь:
http://www.cpearson.com/Excel/FormPosition.htm
Нет никакой оплаты; это бесплатно. Он позволяет размещать пользовательскую форму относительно любой ячейки на экране. Если вы разрабатываете макросы, основанные на UserForms, вы захотите проверить, что Chip может предложить.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2309) применим к Microsoft Excel 2007, 2010, 2013 и 2016.