Добрый день! Нашел на одном сайте очень полезный макрос для возможности множественного выбора из списка в одной ячейке. Привязал к этим значениям свою формулу суммы. Все посчиталось, как надо. Затем заметил, что один из элементов попал в список случайно и решил его оттуда убрать, чтоб формула пересчиталась. Не тут-то было - выскакивает ошибка о невозможности правки. Макрос не позволяет или список? Как это исправить - сделать возможной правку списка?
Добрый день! Нашел на одном сайте очень полезный макрос для возможности множественного выбора из списка в одной ячейке. Привязал к этим значениям свою формулу суммы. Все посчиталось, как надо. Затем заметил, что один из элементов попал в список случайно и решил его оттуда убрать, чтоб формула пересчиталась. Не тут-то было - выскакивает ошибка о невозможности правки. Макрос не позволяет или список? Как это исправить - сделать возможной правку списка?Мурад
Список не позволяет. Почему-то макросу можно записывать данные в ячейку с проверкой данных, а пользователю нет. По идее и макрос не должен записывать в ячейку данные, которых нет в списке. Какая-то дыра в Excelе.
Сообщение отключается так: вкладка Данные - Проверка данных - вкладка Сообщение об ошибке - снимите флажок Выводить сообщение об ошибке. Но в Вашем случае это не поможет, т.к. при изменении будет запускаться макрос, который испортит данные.
Список не позволяет. Почему-то макросу можно записывать данные в ячейку с проверкой данных, а пользователю нет. По идее и макрос не должен записывать в ячейку данные, которых нет в списке. Какая-то дыра в Excelе.
Сообщение отключается так: вкладка Данные - Проверка данных - вкладка Сообщение об ошибке - снимите флажок Выводить сообщение об ошибке. Но в Вашем случае это не поможет, т.к. при изменении будет запускаться макрос, который испортит данные.Karataev
Сообщение отредактировал Karataev - Вторник, 29.12.2015, 13:33
Karataev, Олег, пользователь тоже без проблем может вставлять неверные данные в список - скопируйте их (неверные данные) откуда-нибудь и вставьте в ячейку со списком значением. Проверка данных сохранится, а значение там будет неверное.
Karataev, Олег, пользователь тоже без проблем может вставлять неверные данные в список - скопируйте их (неверные данные) откуда-нибудь и вставьте в ячейку со списком значением. Проверка данных сохранится, а значение там будет неверное._Boroda_
Мурад, попробуйте такое решение (посмотрите прикрепленный файл). Перед тестированием отключите вывод сообщений об ошибках: вкладка Данные - Проверка данных - вкладка Сообщение об ошибке - снимите флажок Выводить сообщение об ошибке. В этом коде я добавил такой фрагмент (остальное все осталось Ваше, я только внешний вид изменил и местами переставил): [vba]
Код
If InStr(Target.Value, ", ") > 0 Then Exit Sub End If
[/vba] Макрос будет правильно работать, когда Вы хотите удалить ненужный пункт, если в B11 три и более пункта. Если только два пункта, то будет неправильный результат. Но если у Вас только 2 пункта, то можно, наверное и заново выбрать.
Мурад, попробуйте такое решение (посмотрите прикрепленный файл). Перед тестированием отключите вывод сообщений об ошибках: вкладка Данные - Проверка данных - вкладка Сообщение об ошибке - снимите флажок Выводить сообщение об ошибке. В этом коде я добавил такой фрагмент (остальное все осталось Ваше, я только внешний вид изменил и местами переставил): [vba]
Код
If InStr(Target.Value, ", ") > 0 Then Exit Sub End If
[/vba] Макрос будет правильно работать, когда Вы хотите удалить ненужный пункт, если в B11 три и более пункта. Если только два пункта, то будет неправильный результат. Но если у Вас только 2 пункта, то можно, наверное и заново выбрать.Karataev
Karataev, благодарю! Согласен, для 2 значений проще выбрать заново. Только надо будет написать предупреждающую надпись большими буквами для тех сотрудников, кто будет заполнять похожий реестр
Karataev, благодарю! Согласен, для 2 значений проще выбрать заново. Только надо будет написать предупреждающую надпись большими буквами для тех сотрудников, кто будет заполнять похожий реестр Мурад
Есть такая мысль - чтобы сотруднику было удобно удалять ненужные, можно сделать второй макрос. Сотрудник будет кликать 2 раза по B11, если захочет удалить какой-нибудь пункт, будет появляться форма, на которой будет ListBox. В этом ListBoxе сотрудник выделит те пункты, которые нужно удалить, и данные из ListBox будут вставлены в B11. Во время вставки можно отключить события, чтобы не запускался первый макрос.
Есть такая мысль - чтобы сотруднику было удобно удалять ненужные, можно сделать второй макрос. Сотрудник будет кликать 2 раза по B11, если захочет удалить какой-нибудь пункт, будет появляться форма, на которой будет ListBox. В этом ListBoxе сотрудник выделит те пункты, которые нужно удалить, и данные из ListBox будут вставлены в B11. Во время вставки можно отключить события, чтобы не запускался первый макрос.Karataev
Сообщение отредактировал Karataev - Вторник, 29.12.2015, 14:33
Karataev, этот вариант еще лучше! Единственное, надо ставить запрет на ручную правку ячейки B11. Иначе, если случайно залезть внутрь этой ячейки, то все - попал Даже отмена Escape для выхода из ячейки приводит к удваиванию содержимого ячейки. Попробую это исправить
Karataev, этот вариант еще лучше! Единственное, надо ставить запрет на ручную правку ячейки B11. Иначе, если случайно залезть внутрь этой ячейки, то все - попал Даже отмена Escape для выхода из ячейки приводит к удваиванию содержимого ячейки. Попробую это исправитьМурад
Не самый удобный вариант для пользователя. Во избежание ошибок, я бы сделал так. Да и в случае выбора не того что надо, просто снять галку и снова ткнуть в кнопку.
PS: и вообще, вес товара, что всегда будет постоянный? Может правильней будет ставить нужный вес на против товара и потом считывать?
Не самый удобный вариант для пользователя. Во избежание ошибок, я бы сделал так. Да и в случае выбора не того что надо, просто снять галку и снова ткнуть в кнопку.
PS: и вообще, вес товара, что всегда будет постоянный? Может правильней будет ставить нужный вес на против товара и потом считывать?Wasilich
Wasilic, спасибо! я привел упрощенный вариант своей задачи. на работе при ведении огромных реестров (товаров, договоров и т.д.) возникает необходимость указывать несколько признаков в одной ячейке для одной записи (строки). Заранее неизвестно, сколько признаков будет у новой записи. Но не будем ведь мы создавать с запасом 10 и более дополнительных столбцов или строк для возможности указания всех допустимых признаков записи? это растянет таблицу по горизонтали или вертикали
Wasilic, спасибо! я привел упрощенный вариант своей задачи. на работе при ведении огромных реестров (товаров, договоров и т.д.) возникает необходимость указывать несколько признаков в одной ячейке для одной записи (строки). Заранее неизвестно, сколько признаков будет у новой записи. Но не будем ведь мы создавать с запасом 10 и более дополнительных столбцов или строк для возможности указания всех допустимых признаков записи? это растянет таблицу по горизонтали или вертикалиМурад
Karataev, запрет на правку ячейки установлен, есть возможность удобной правки неверно введенных значений Добавлю сюда макрос добавления новых значений в список и можно будет с этим работать по самому широкому кругу задач
Karataev, запрет на правку ячейки установлен, есть возможность удобной правки неверно введенных значений Добавлю сюда макрос добавления новых значений в список и можно будет с этим работать по самому широкому кругу задачМурад