нашел макрос, который подходит нам для выполнения целей: создать в каждой ячейке одного столбца некий выпадающий список с выбором ограниченного количества формулировок? т.е. должна быть возможность в ячейку добавлять формулировки из выпадающего списка, но и чтоб в ручную их дополнять. вот пример - красным я выделил формулировки выпадающего списка. а черным то что будут дописывать вручную: пример текстом тут: 1) определение о принятии иск.заявления в порядке упрощенного производства (код - _____) - 24.11.16. до 16.12.16 Ответчику предоставить Отзыв, до 13.01.17 Стороны вправе предоставить доп.документы; или - определение о принятии иска в общем порядке (дата) 2) Решение (резолют.часть) - иск удовлетворить в полном объеме - 23.01.17; или иск удовлетворить частично - дата 3) Ответчик подал ходатайство об изготовлении мотивированного решения - 25.01.17; 4) Мотивированное решение 01.02.17 - иск удовлетворить в полном объеме (опубликовано 02.02.17) или иск удовлетворить частично (дата) (еще пример в екселе прикреплю)
подошел этот: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
[/vba]
формулировки что красным я конечно сделал как выпадающий список и он добавляется через запятую в одну ячейку. а вот даты которые сотрудники самостоятельно добавляют к этим формулировкам в эту ячейку уже не добавляются, т.к. список ограничен :(((((
чтоб добавлять изменения (даты и прочую информацию кроме готовых формулировок) сделал так: Чтобы Excel позволил нам в будущем ввести в список и новые имена, снимем галочки на вкладках Сообщение для ввода (Input Message) и Сообщение об ошибке (Error Alert) и нажмем ОК.
теперь я могу добавить к выбранному из списка тексту дату например, НО ексель кроме этого полученного варианта через запятую снова добавляет выбранную формулировку(((
вот рисунок что получается в итоге. http://www.picshare.ru/view/7951174/ а если еще выбрать другой вариант из списка и внести изменения ексель добавляет эти же формулировки в двойне.
и вот вопрос: как сделать возможность выпадающего списка в каждой ячейке с накоплением и возможностью внесения изменений в этих выпадающих списках? там дело в макросе если я правильно понял. но в них я не разбираюсь совсем(( хелп ми))
нашел макрос, который подходит нам для выполнения целей: создать в каждой ячейке одного столбца некий выпадающий список с выбором ограниченного количества формулировок? т.е. должна быть возможность в ячейку добавлять формулировки из выпадающего списка, но и чтоб в ручную их дополнять. вот пример - красным я выделил формулировки выпадающего списка. а черным то что будут дописывать вручную: пример текстом тут: 1) определение о принятии иск.заявления в порядке упрощенного производства (код - _____) - 24.11.16. до 16.12.16 Ответчику предоставить Отзыв, до 13.01.17 Стороны вправе предоставить доп.документы; или - определение о принятии иска в общем порядке (дата) 2) Решение (резолют.часть) - иск удовлетворить в полном объеме - 23.01.17; или иск удовлетворить частично - дата 3) Ответчик подал ходатайство об изготовлении мотивированного решения - 25.01.17; 4) Мотивированное решение 01.02.17 - иск удовлетворить в полном объеме (опубликовано 02.02.17) или иск удовлетворить частично (дата) (еще пример в екселе прикреплю)
подошел этот: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
[/vba]
формулировки что красным я конечно сделал как выпадающий список и он добавляется через запятую в одну ячейку. а вот даты которые сотрудники самостоятельно добавляют к этим формулировкам в эту ячейку уже не добавляются, т.к. список ограничен :(((((
чтоб добавлять изменения (даты и прочую информацию кроме готовых формулировок) сделал так: Чтобы Excel позволил нам в будущем ввести в список и новые имена, снимем галочки на вкладках Сообщение для ввода (Input Message) и Сообщение об ошибке (Error Alert) и нажмем ОК.
теперь я могу добавить к выбранному из списка тексту дату например, НО ексель кроме этого полученного варианта через запятую снова добавляет выбранную формулировку(((
вот рисунок что получается в итоге. http://www.picshare.ru/view/7951174/ а если еще выбрать другой вариант из списка и внести изменения ексель добавляет эти же формулировки в двойне.
и вот вопрос: как сделать возможность выпадающего списка в каждой ячейке с накоплением и возможностью внесения изменений в этих выпадающих списках? там дело в макросе если я правильно понял. но в них я не разбираюсь совсем(( хелп ми))lok888
Не уверена, что правильно поняла. Проверьте. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newval = Target Application.Undo oldval = Target If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then Target = newval Else If Len(oldval) <> 0 And oldval <> newval Then Target = Target & "," & newval Else Target = newval End If End If If Len(newval) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
[/vba]
Не уверена, что правильно поняла. Проверьте. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newval = Target Application.Undo oldval = Target If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then Target = newval Else If Len(oldval) <> 0 And oldval <> newval Then Target = Target & "," & newval Else Target = newval End If End If If Len(newval) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
простите за совсем наглость =) можно ли добавить как то в макрос команду alt+enter после вставленной фразы (чтоб с нового абзаца была следующая фраза из выпадающего списка )?
простите за совсем наглость =) можно ли добавить как то в макрос команду alt+enter после вставленной фразы (чтоб с нового абзаца была следующая фраза из выпадающего списка )?lok888
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("W:W")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newval = Target Application.Undo oldval = Target If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then Target = newval Else If Len(oldval) <> 0 And oldval <> newval Then Target = Target & ";" & Chr(10) & " " & newval Else Target = newval End If End If If Len(newval) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
[/vba]
но вам спасибо все равно )
во.. сам путем тыка сделал:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("W:W")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newval = Target Application.Undo oldval = Target If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then Target = newval Else If Len(oldval) <> 0 And oldval <> newval Then Target = Target & ";" & Chr(10) & " " & newval Else Target = newval End If End If If Len(newval) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
файл в котором я создавал этот выпадающий список с данным макросом лежит на работе в папке общей локальной сети с общим доступом к этому файлу, т.к. в него вносят изменения несколько сотрудников.
и т.к. я делал его и вносил выпадающий список - у меня файл работает (точнее макрос). у других сотрудников не работает. пишет что-то типа того что я на скрине выложил.
у меня офис 2013 года. у других сотрудников старше. возможно в этом проблема, но как её решить чтоб файл работал у всех с разными офисами?
можно ли в этой же теме задать другой вопрос ?:
файл в котором я создавал этот выпадающий список с данным макросом лежит на работе в папке общей локальной сети с общим доступом к этому файлу, т.к. в него вносят изменения несколько сотрудников.
и т.к. я делал его и вносил выпадающий список - у меня файл работает (точнее макрос). у других сотрудников не работает. пишет что-то типа того что я на скрине выложил.
у меня офис 2013 года. у других сотрудников старше. возможно в этом проблема, но как её решить чтоб файл работал у всех с разными офисами?lok888
Сообщение отредактировал lok888 - Вторник, 07.03.2017, 09:54
Pelena, подскажите пожалуйста в данном исходном коде, что вы написали и я внедрил в наш файл, прописано автосохранение файла при любом выходе из ячейки ?
сейчас обнаружил проблему: если что-товвел в ячейку (любую) и вышел из неё ексель автоматом сохраняет изменения. И если вдруг окажется что ты "некорректно" что-то внес, то вернуться и исправить уже нельзя будет((((
правда я в этом коде еще добавил один столбик Range("W:W;AB:AB")) - навряд ли из-за этого автосохранение такое появилось.
Pelena, подскажите пожалуйста в данном исходном коде, что вы написали и я внедрил в наш файл, прописано автосохранение файла при любом выходе из ячейки ?
сейчас обнаружил проблему: если что-товвел в ячейку (любую) и вышел из неё ексель автоматом сохраняет изменения. И если вдруг окажется что ты "некорректно" что-то внес, то вернуться и исправить уже нельзя будет((((
правда я в этом коде еще добавил один столбик Range("W:W;AB:AB")) - навряд ли из-за этого автосохранение такое появилось.lok888
это не автосохранение, а результат работы макроса - после его выполнения откат невозможен (только из файла выходить без сохранения изменений)
Цитата
прописано автосохранение файла
это не автосохранение, а результат работы макроса - после его выполнения откат невозможен (только из файла выходить без сохранения изменений)buchlotnik