Страницы: 1
RSS
Скрытие / отображение строк с флажками.
 
Уважаемые формумчане, вот и настал тот день)

Уже два месяца я пишу один проектик для своей кафедры по автоматизации расчёта учебной нагрузки и уже практически его закончил (не без чтения этого чудного форума, надо сказать).
И вот я уже думал, что всё сделаю без прямого обращения к более опытным товарищам, но в  самом  конце всё-таки запнулся. А именно, у меня не получается корректно скрыть строки с чекбоксами. Когда я скрываю строки (не важно, макросом или вручную), в которых находятся флажки, всё на первый взгляд выглядит хорошо - флажок также скрывается вместе со строкой. Затем, если я отображаю скрытые строки, то всё опять же хорошо - флажки появляются.
Но! Когда я скрываю строки и закрываю документ excel, то после открытия документа и попытки отобразить скрытые строки, строки отображаются, но флажки остаются как бы "сбитыми в кучу" - похоже на то, как если бы флажки "забывали" какой строчке они ранее принадлежали. Теперь конкретнее. Флажки использовал как элементы формы, так и ActiveX - разницы нет. На флажках стоит галочка "перемещать, но не изменять размеры". Пробовал ставить "перемещать объект, и изменять вместе с ячейками" - результат тот же, только флажок после отображения строки остается не только смещённым, но и сжатым.

Использую версию Microsoft Excel 2010.

ЗЫ. Если ничего не удастся решить, я мог бы использовать вместо флажков другой элемент управления, например выпадающий список (да / нет). Но для бинарных данных флажок выглядит более уместно, да и макросы уже написаны для флажков, а так не хочется ничего переделывать. Заранее благодарю !
Изменено: Рубен - 26.10.2019 11:48:28
 
Попробуйте вместо элементов управления использовать псевдо-флажки. Пример можно посмотреть в "Приемах" в этой статье.
 
Юрий М,вау, выглядит прикольно.
 
Давно делал, мог забыть нюансы. Кажется так.
Перед скрытием строк нужно скрыть флажки в этих строках.
После отображения строк отобразить флажки.
Тогда они остаются на своих местах.
Делал это только по той причине, что копия листа должна была работать без макросов.
 
RAN, Интересное замечание. Сам бы не догадался даже попробовать. Однако уже переписал код с учетом рекомендаций Юрия - всё получилось. Правда, работает чуть медленнее, т.к. вызов макроса, обрабатывающего данные в строках теперь происходит не через чекбоксы, а через события листа. По задумке установление флажка должно дублировать строку, на которой был установлен флажок, а все строки таблицы, ниже строки с вновь установленным флажком должны сместиться на одну строку вниз. Но новые строки я создавать не хочу, поэтому я просто смещаю вниз сами данные -- то есть, все флажки, все формулы, все выпадающие списки, и пустые ячейки. Всё-всё-всё, что было, я смещаю на строку вниз. А когда всё сместил, вновь определяю пустые строки и скрываю их. Снятие флажка, соответственно, всё возвращает на прежнее место. В итоге всё это вышло довольно тяжеловесным. Теперь у меня клик по ячейке вызывает обработчик событий листа, который ставит галочку и вызывает макрос, сдвигающий данные вниз, затем этот макрос вызывает другой макрос, который скрывает открытые строки, ставшие пустыми, и наоборот - показывает скрытые строки, в которых появились данные после смещения. Но как бы это жутко не звучало, это работает.  Юрий М, спасибо ! ))
Страницы: 1
Наверх