Страницы: 1
RSS
Не срабатывают события листа при удалении первой строки "Умной таблицы"
 
Коллеги, привет.

У меня на листе расположена умная таблица, а в самом коде листа зашит макрос , который реагирует на события листа и выполняет некоторые действия.
Когда я изменяю данные на листе , а также удаляю несколько строк - все работает отлично.

Проблемы начинаются, когда в умной таблице всего 1 запись и именно ее нужно удалить. В этом случае событие листа не срабатывает вообще.

Во вложении файл с примером, если оставить только 1 строчку с id=9 и попытаться ее удалить - то ничего не произойдет..
Не могу понять с чем это может быть связано и как это можно обойти, очень надеюсь на вашу помощь!
 
Цитата
EternalStudent написал:
с чем это может быть связано
Со свойствами умной таблицы.
Цитата
EternalStudent написал:
как это можно обойти,
переписать макрос так, чтобы он работал с умной таблицей как с умной таблицей, а не как с ячейками листа.
 
удаляйте содержимое ячеек, а не строку таблицы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
RAN, не совсем понимаю, что вы имеете ввиду - мне нужно отловить действия пользователя по удалению первой строки.
Как заставить события срабатывать? Или мне необходимо использовать другие события листа для этих целей?
 
Цитата
EternalStudent написал:
мне нужно отловить действия пользователя по удалению первой строки
Как то с этим не сталкивался, но, оказывается, при удалении DataBodyRange таблицы события Worksheet_Change не возникает, и, соответственно, отследить именно это действие нельзя.
 
Цитата
RAN: при удалении DataBodyRange таблицы события Worksheet_Change не возникает
удаляю кнопкой "Удалить строки с листа" и событие возникает
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
У меня при нажатии данной кнопки событие работает только, когда строк больше чем 1
 
Цитата
EternalStudent: только, когда строк больше чем 1
а если в строке данные?
UPD: проверил - пофиг событию на данные и в таблице, и вне неё в 1ой строке - при удалении строки ТАБЛИЦЫ, данные в строке ВНЕ таблицы ОСТАЮТСЯ…  :sceptic:
Изменено: Jack Famous - 04.03.2021 15:09:29
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
О том и речь... В общем встрял я с этой фичей(а может багом) умных таблиц...

Даже не знаю, как решение переписать теперь с учётом этого.. нужно как-то отловить удаление 1 строки
 
Цитата
Jack Famous написал:
удаляю кнопкой "Удалить строки с листа" и событие возникает
Позвольте оспорить это утверждение.
 
RAN, так оспорили уже  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
В общем вроде удалось обойти данную фичу - при срабатывании события на изменение листа проверяю - сколько строк остается в таблице и если =1 , то откатываю изменения и выдаю пользователю предупреждение(что таблица может быть либо пустая, либо иметь минимум  2 записи)
 
Цитата
EternalStudent написал:
при срабатывании события на изменение листа проверяю - сколько строк остается в таблице и если =1 , то откатываю изменения
а если пользователь просто изменит значение в таблице? Получается, что это будет невозможным? Это точно правильно?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Если мы говорим про ситуацию, что пользователь вставит 1 строку и будет ее просто редактировать, то в этом случае ... для пользователя действительно это будет не удобно..

Но макрос будет использоваться для массового редактирования/удаления/добавления записей, а потом это все будет синхронизироваться с бд, поэтому ситуация с 1 строкой это редкость .. и я думаю можно здесь пожертвовать комфортом пользователя для стабилизации решения

К сожалению,я пока  не нашел другой способ, как обойти данную проблему. Если у Вас есть идеи - предлагайте)
 
Цитата
EternalStudent написал:
Если у Вас есть идеи
они не самые лучшие. Можно использовать элемент TextBox из ActiveX - так себе вариант, особенно для распространения и длительного использования. Эти элементы не самые надежные в последнее время.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх