Страницы: 1
RSS
При прокрутке листа UserForm должна оставаться прикрепленной к строке
 
Коллеги, добрый день
нигде не нашел решения:
в листе Excel есть UserForm, с выставленными значениями Top и Left
форма привязана таким образом к общей структуре листа, встроена в нужные строки/столбцы
но при прокрутке листа вниз форма тоже едет вниз, чего очень нежелательно - лишается смысла её тщательно подобранное местоположение
вот как эту UserForm "приклеить" к конкретным столбцам/строкам - чтобы пользователь при прокрутке потерял её из виду и встретил вторую, третью в нужных местах и т.д?
"Окно - разделить" - не годится - это разовая операция, а нужно несколько форм, приклеенных к конкретным местам в листе (а не на экране!!)
буду признателен за подсказки
Спасибо!
Изменено: anti - 09.06.2019 14:15:39 (Указание модератора)
 
Доброе время суток.
Цитата
anti написал:
в листе Excel есть UserForm
Можете продемонстрировать внедрённую в лист UserForm? Ни разу подобного не видел, очень хочется понять, как это можно сделать.
 
anti, противоречите сами себе:
Цитата
anti написал:
чтобы пользователь при прокрутке потерял её из виду
Цитата
anti написал:
при прокрутке листа вниз форма тоже едет вниз, чего очень нежелательно
И приведите в порядок своё сообщение.
 
Андрей VG,
файл по ссылке
если неправильно использовал дефиницию "внедренный", простите великодушно)
https://yadi.sk/i/8ocMdZEt6OQYBA Юрий М,
пробелы удалил
противоречия не нашел
форма едет вниз вместе с прокруткой и всё время видна - а надо, чтобы пользователь "потерял" её, чтобы она осталась вверху, за пределами видимого окна
Изменено: anti - 09.06.2019 14:24:15 (коррекция)
 
Форма (если это Userform), привязана не к листу, а к монитору. Поэтому, она может передвигаться либо самостоятельно, в пределах монитора, либо вместе с ним.
 
RAN,

так в этом-то и вся беда
UserForm ездит, правильно сказали, вместе с монитором - привязана к нему, а не к листу
а надо к листу
к конкретным сочетаниям  Rows / Columns
или так не бывает?((
 
anti, тщательно подобранные значения оказываются бесполезными, если поиграть с масштабом листа, развернуть excel не на весь экран ….  Хотя я не совсем соглашусь с фразой
Цитата
RAN написал:
а к монитору
ибо это терминологически некорректно, но смысл именно такой.  
Зачем вам именно форма? Все тоже можно , а в вашем случае и должно, нарисовать просто на листе, в области той таблички, что нужно. Все будет ездить, масштабироваться …….
По вопросам из тем форума, личку не читаю.
 
Присмотритесь к меню Разработчик/Вставить "Элементы управления формы" и "Элементы ActiveX".
Владимир
 
БМВ,

там вот в чём дело - Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом, только в UserForm
и получается, что "нажатым" может быть только один элемент OptionButton на листе
а надо не так - группы, в каждой свой "нажатый" OptionButton
хотя, возможно я где-то туплю с Frame - м.б. его можно как-то на лист без использования UserForm?
 
anti, просто группу придется обрабатывать по событию каждого объекта и переключать остальные два при выборе одно из них. Но тут или шашечки, или ехать.
Сильно спутал с HTA.
Изменено: БМВ - 09.06.2019 18:25:22
По вопросам из тем форума, личку не читаю.
 
Цитата
anti написал:
Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом
Что вы подразумеваете под необходимым для вас функционалом? Чуть сложнее связывать обработку событий вложенных во Frame элементов (на форуме уже обсуждалось, между прочим) с методами обработчиками, чем в ситуации, когда Frame вложен в UserForm.
Впрочем и задачка с позиционированием формы у нужного номера столбца/строки. Так как события изменения видимой области в Excel нет, то организуем прослушивание состояния по таймеру, например. Далее, проверяем, находится ли в видимой области данная строка/столбец. Если да, то бинарным поиском, используя Window.RangeFromPoint, находим координату размещения верхнего левого угла ячейки привязки. Ну, и туда перемещаем форму. Если ячейка привязки не видна, то скрываем.
Изменено: Андрей VG - 09.06.2019 18:36:38
 
Андрей VG,

сложновато(
попробую разобраться
 
Цитата
anti написал:
что "нажатым" может быть только один элемент OptionButton на листе
Frame прямо на лист, как я понял, не вставить со всем необходимым функционалом
Посмотрите здесь.
Изменено: sokol92 - 09.06.2019 19:33:07
Владимир
 

Да просто выделить те что в группу должны входить и в свойствах дать название группы,

По вопросам из тем форума, личку не читаю.
 
Цитата
anti написал:
противоречия не нашел форма едет вниз вместе с прокруткой и всё время видна - а надо, чтобы пользователь "потерял" её
А я всё же вижу противоречие: если бы форма "ехала" вниз, то она бы в определённый момент исчезла из видимости, что Вам и требуется ))
Просто беда с формулировкой, но теперь хоть понятно.
 
Отставить  сложности! )
Есть же события листа.  Например, двойной клик на ячейке столбца вызывает форму... Не надо - закрыли (unload)   или скрыли (hide). А ещё "свернуть" можно -  уменьшить размер,  в левом верхнем углу кнопка "развернуть".
 
Коллеги
благодарю за участие в вопросе
взвесив все предложенные варианты, остановился на решении пользователя sokol92, ранее также предложенным пользователем БМВ
UserForm, действительно, недостаточно гибкое решение
элементы управления формы в моем примере более удобны
всем большое спасибо
вопрос решен, тема закрыта
Страницы: 1
Наверх