Коллеги, добрый день нигде не нашел решения: в листе Excel есть UserForm, с выставленными значениями Top и Left форма привязана таким образом к общей структуре листа, встроена в нужные строки/столбцы но при прокрутке листа вниз форма тоже едет вниз, чего очень нежелательно - лишается смысла её тщательно подобранное местоположение вот как эту UserForm "приклеить" к конкретным столбцам/строкам - чтобы пользователь при прокрутке потерял её из виду и встретил вторую, третью в нужных местах и т.д? "Окно - разделить" - не годится - это разовая операция, а нужно несколько форм, приклеенных к конкретным местам в листе (а не на экране!!) буду признателен за подсказки Спасибо!
Изменено: anti - 09.06.2019 14:15:39(Указание модератора)
Андрей VG, файл по ссылке если неправильно использовал дефиницию "внедренный", простите великодушно) https://yadi.sk/i/8ocMdZEt6OQYBAЮрий М, пробелы удалил противоречия не нашел форма едет вниз вместе с прокруткой и всё время видна - а надо, чтобы пользователь "потерял" её, чтобы она осталась вверху, за пределами видимого окна
Форма (если это Userform), привязана не к листу, а к монитору. Поэтому, она может передвигаться либо самостоятельно, в пределах монитора, либо вместе с ним.
так в этом-то и вся беда UserForm ездит, правильно сказали, вместе с монитором - привязана к нему, а не к листу а надо к листу к конкретным сочетаниям Rows / Columns или так не бывает?((
anti, тщательно подобранные значения оказываются бесполезными, если поиграть с масштабом листа, развернуть excel не на весь экран …. Хотя я не совсем соглашусь с фразой
ибо это терминологически некорректно, но смысл именно такой. Зачем вам именно форма? Все тоже можно , а в вашем случае и должно, нарисовать просто на листе, в области той таблички, что нужно. Все будет ездить, масштабироваться …….
там вот в чём дело - Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом, только в UserForm и получается, что "нажатым" может быть только один элемент OptionButton на листе а надо не так - группы, в каждой свой "нажатый" OptionButton хотя, возможно я где-то туплю с Frame - м.б. его можно как-то на лист без использования UserForm?
anti, просто группу придется обрабатывать по событию каждого объекта и переключать остальные два при выборе одно из них. Но тут или шашечки, или ехать. Сильно спутал с HTA.
anti написал: Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом
Что вы подразумеваете под необходимым для вас функционалом? Чуть сложнее связывать обработку событий вложенных во Frame элементов (на форуме уже обсуждалось, между прочим) с методами обработчиками, чем в ситуации, когда Frame вложен в UserForm. Впрочем и задачка с позиционированием формы у нужного номера столбца/строки. Так как события изменения видимой области в Excel нет, то организуем прослушивание состояния по таймеру, например. Далее, проверяем, находится ли в видимой области данная строка/столбец. Если да, то бинарным поиском, используя Window.RangeFromPoint, находим координату размещения верхнего левого угла ячейки привязки. Ну, и туда перемещаем форму. Если ячейка привязки не видна, то скрываем.
anti написал: что "нажатым" может быть только один элемент OptionButton на листе Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом
anti написал: противоречия не нашел форма едет вниз вместе с прокруткой и всё время видна - а надо, чтобы пользователь "потерял" её
А я всё же вижу противоречие: если бы форма "ехала" вниз, то она бы в определённый момент исчезла из видимости, что Вам и требуется )) Просто беда с формулировкой, но теперь хоть понятно.
Отставить сложности! ) Есть же события листа. Например, двойной клик на ячейке столбца вызывает форму... Не надо - закрыли (unload) или скрыли (hide). А ещё "свернуть" можно - уменьшить размер, в левом верхнем углу кнопка "развернуть".
Коллеги благодарю за участие в вопросе взвесив все предложенные варианты, остановился на решении пользователя sokol92, ранее также предложенным пользователем БМВ UserForm, действительно, недостаточно гибкое решение элементы управления формы в моем примере более удобны всем большое спасибо вопрос решен, тема закрыта