Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/как создать выпадающий список с возмож-ю изменения в ячейке - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
как создать выпадающий список с возмож-ю изменения в ячейке
lok888 Дата: Понедельник, 06.03.2017, 02:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
нашел макрос, который подходит нам для выполнения целей:
создать в каждой ячейке одного столбца некий выпадающий список с выбором ограниченного количества формулировок?
т.е. должна быть возможность в ячейку добавлять формулировки из выпадающего списка, но и чтоб в ручную их дополнять. вот пример - красным я выделил формулировки выпадающего списка. а черным то что будут дописывать вручную:
пример текстом тут:
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/
а если еще выбрать другой вариант из списка и внести изменения ексель добавляет эти же формулировки в двойне.

и вот вопрос:
как сделать возможность выпадающего списка в каждой ячейке с накоплением и возможностью внесения изменений в этих выпадающих списках?
там дело в макросе если я правильно понял. но в них я не разбираюсь совсем((
хелп ми))
К сообщению приложен файл: 9512584.xlsx (11.9 Kb)


Сообщение отредактировал lok888 - Понедельник, 06.03.2017, 07:33
 
Ответить
Сообщениенашел макрос, который подходит нам для выполнения целей:
создать в каждой ячейке одного столбца некий выпадающий список с выбором ограниченного количества формулировок?
т.е. должна быть возможность в ячейку добавлять формулировки из выпадающего списка, но и чтоб в ручную их дополнять. вот пример - красным я выделил формулировки выпадающего списка. а черным то что будут дописывать вручную:
пример текстом тут:
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
Дата добавления - 06.03.2017 в 02:44
китин Дата: Понедельник, 06.03.2017, 07:18 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
lok888, код в тэги бы...... Кнопочка # в режиме редактирования


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеlok888, код в тэги бы...... Кнопочка # в режиме редактирования

Автор - китин
Дата добавления - 06.03.2017 в 07:18
lok888 Дата: Понедельник, 06.03.2017, 07:33 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
сделал )) я просто не знал как это сделать )
 
Ответить
Сообщениесделал )) я просто не знал как это сделать )

Автор - lok888
Дата добавления - 06.03.2017 в 07:33
Pelena Дата: Понедельник, 06.03.2017, 09:05 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19511
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
Не уверена, что правильно поняла. Проверьте.
[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]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНе уверена, что правильно поняла. Проверьте.
[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]

Автор - Pelena
Дата добавления - 06.03.2017 в 09:05
lok888 Дата: Понедельник, 06.03.2017, 10:42 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не уверена, что правильно поняла. Проверьте.

урааа!!! работает. вы спасительница )))
Спасибо большое!!!!


Сообщение отредактировал lok888 - Вторник, 07.03.2017, 04:05
 
Ответить
Сообщение
Не уверена, что правильно поняла. Проверьте.

урааа!!! работает. вы спасительница )))
Спасибо большое!!!!

Автор - lok888
Дата добавления - 06.03.2017 в 10:42
Pelena Дата: Понедельник, 06.03.2017, 10:44 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19511
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
Цитировать весь пост не надо, замечание схлопочете. Исправьте


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЦитировать весь пост не надо, замечание схлопочете. Исправьте

Автор - Pelena
Дата добавления - 06.03.2017 в 10:44
lok888 Дата: Вторник, 07.03.2017, 04:06 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
простите за совсем наглость =) можно ли добавить как то в макрос команду alt+enter после вставленной фразы (чтоб с нового абзаца была следующая фраза из выпадающего списка )?
 
Ответить
Сообщениепростите за совсем наглость =) можно ли добавить как то в макрос команду alt+enter после вставленной фразы (чтоб с нового абзаца была следующая фраза из выпадающего списка )?

Автор - lok888
Дата добавления - 07.03.2017 в 04:06
lok888 Дата: Вторник, 07.03.2017, 04:38 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
во.. сам путем тыка сделал:

[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
[/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
[/vba]

но вам спасибо все равно )

Автор - lok888
Дата добавления - 07.03.2017 в 04:38
lok888 Дата: Вторник, 07.03.2017, 09:53 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
можно ли в этой же теме задать другой вопрос ?:

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

и т.к. я делал его и вносил выпадающий список - у меня файл работает (точнее макрос).
у других сотрудников не работает. пишет что-то типа того что я на скрине выложил.



у меня офис 2013 года.
у других сотрудников старше.
возможно в этом проблема, но как её решить чтоб файл работал у всех с разными офисами?


Сообщение отредактировал lok888 - Вторник, 07.03.2017, 09:54
 
Ответить
Сообщениеможно ли в этой же теме задать другой вопрос ?:

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

и т.к. я делал его и вносил выпадающий список - у меня файл работает (точнее макрос).
у других сотрудников не работает. пишет что-то типа того что я на скрине выложил.



у меня офис 2013 года.
у других сотрудников старше.
возможно в этом проблема, но как её решить чтоб файл работал у всех с разными офисами?

Автор - lok888
Дата добавления - 07.03.2017 в 09:53
Pelena Дата: Вторник, 07.03.2017, 11:55 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19511
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
можно ли в этой же теме задать другой вопрос ?

Встречный вопрос: а в Правилах форума по этому поводу что написано?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
можно ли в этой же теме задать другой вопрос ?

Встречный вопрос: а в Правилах форума по этому поводу что написано?

Автор - Pelena
Дата добавления - 07.03.2017 в 11:55
lok888 Дата: Пятница, 10.03.2017, 07:29 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, подскажите пожалуйста в данном исходном коде, что вы написали и я внедрил в наш файл, прописано автосохранение файла при любом выходе из ячейки ?

сейчас обнаружил проблему: если что-товвел в ячейку (любую) и вышел из неё ексель автоматом сохраняет изменения. И если вдруг окажется что ты "некорректно" что-то внес, то вернуться и исправить уже нельзя будет((((

правда я в этом коде еще добавил один столбик Range("W:W;AB:AB")) - навряд ли из-за этого автосохранение такое появилось.
 
Ответить
СообщениеPelena, подскажите пожалуйста в данном исходном коде, что вы написали и я внедрил в наш файл, прописано автосохранение файла при любом выходе из ячейки ?

сейчас обнаружил проблему: если что-товвел в ячейку (любую) и вышел из неё ексель автоматом сохраняет изменения. И если вдруг окажется что ты "некорректно" что-то внес, то вернуться и исправить уже нельзя будет((((

правда я в этом коде еще добавил один столбик Range("W:W;AB:AB")) - навряд ли из-за этого автосохранение такое появилось.

Автор - lok888
Дата добавления - 10.03.2017 в 07:29
buchlotnik Дата: Пятница, 10.03.2017, 07:35 | Сообщение № 12
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
прописано автосохранение файла
это не автосохранение, а результат работы макроса - после его выполнения откат невозможен (только из файла выходить без сохранения изменений)
 
Ответить
Сообщение
Цитата
прописано автосохранение файла
это не автосохранение, а результат работы макроса - после его выполнения откат невозможен (только из файла выходить без сохранения изменений)

Автор - buchlotnik
Дата добавления - 10.03.2017 в 07:35
lok888 Дата: Пятница, 10.03.2017, 07:59 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Блин. это плохо очень.
я теперь и в исходную строку захожу но она не редактируется совсем (((( даже курсор не ставится
 
Ответить
СообщениеБлин. это плохо очень.
я теперь и в исходную строку захожу но она не редактируется совсем (((( даже курсор не ставится

Автор - lok888
Дата добавления - 10.03.2017 в 07:59
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!