Добрый день! Следующее задание:Создать инструмент для возможности внесения персональных данных в таблицу. Вся работа в Excel, работать с документом будут по всей стране люди с разным опытом работы с офисными приложениями и на разных аппаратных мощностях. Попытался максимально навешать условий на вводимые данные (чтобы юзверю меньше было возможностей на косарезы) и сделать всё без применения форм, а лишь с использованием инструментов: 1) "Данные"->"Проверка данных" 2) макроса в основном Worksheet_Change.
Получилось следующее - в документе 2 листа. На первом листе в первом столбике хранятся порядка 100 характеристик работника (от личных данных до его перемещений по карьерной лестнице) во втором столбике пустые ячейки с различными условиями для ввода характеристик (реализовано с помощью инструментов, описанных выше) в самом низу под таблицей кнопка "Добавить запись" На втором листе таблица с первого листа транспонирована горизонтально = характеристики (1я строка) и данные людей (со 2й и так далее строки). Соответственно сюда данные попадают после нажатия на первом листе кнопки "Добавить запись".
Проблема Обнаружился момент-если на первом листе оператор ввёл данные с ошибкой, увидел это и нажал на Delete, то макрос Worksheet_Change логично определяет это действие как изменение в ячейке и соответственно отрабатывает все заложенные в алгоритме условия if ... then .... end if. Вопрос Каким образом без формы, а лишь с голым по сути листом, мне перехватить нажатие Delete, чтобы закинуть его в условие отработки/неотработки if ... then .... end if? (повторюсь формы нет)
Добрый день! Следующее задание:Создать инструмент для возможности внесения персональных данных в таблицу. Вся работа в Excel, работать с документом будут по всей стране люди с разным опытом работы с офисными приложениями и на разных аппаратных мощностях. Попытался максимально навешать условий на вводимые данные (чтобы юзверю меньше было возможностей на косарезы) и сделать всё без применения форм, а лишь с использованием инструментов: 1) "Данные"->"Проверка данных" 2) макроса в основном Worksheet_Change.
Получилось следующее - в документе 2 листа. На первом листе в первом столбике хранятся порядка 100 характеристик работника (от личных данных до его перемещений по карьерной лестнице) во втором столбике пустые ячейки с различными условиями для ввода характеристик (реализовано с помощью инструментов, описанных выше) в самом низу под таблицей кнопка "Добавить запись" На втором листе таблица с первого листа транспонирована горизонтально = характеристики (1я строка) и данные людей (со 2й и так далее строки). Соответственно сюда данные попадают после нажатия на первом листе кнопки "Добавить запись".
Проблема Обнаружился момент-если на первом листе оператор ввёл данные с ошибкой, увидел это и нажал на Delete, то макрос Worksheet_Change логично определяет это действие как изменение в ячейке и соответственно отрабатывает все заложенные в алгоритме условия if ... then .... end if. Вопрос Каким образом без формы, а лишь с голым по сути листом, мне перехватить нажатие Delete, чтобы закинуть его в условие отработки/неотработки if ... then .... end if? (повторюсь формы нет)Al_brutal
Al_brutal, привет попробуйте добавить в Worksheet_Change вот такие условия (в самом начале) [vba]
Код
If Target.Count > 1 Then Exit Sub If Len(Target) = 0 Then Exit Sub
[/vba] [p.s.]Раздел не для прямых ответов, но решение очевидное и простое (если правильно понял)[/p.s.] [moder]Ответ перенесла из темы-дубля во фрилансе[/moder]
Al_brutal, привет попробуйте добавить в Worksheet_Change вот такие условия (в самом начале) [vba]
Код
If Target.Count > 1 Then Exit Sub If Len(Target) = 0 Then Exit Sub
[/vba] [p.s.]Раздел не для прямых ответов, но решение очевидное и простое (если правильно понял)[/p.s.] [moder]Ответ перенесла из темы-дубля во фрилансе[/moder]nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал Pelena - Среда, 27.09.2017, 08:15