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

Вход

Регистрация

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

 

= Мир MS Excel/Выпадающий список без блокировки ручного ввода - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выпадающий список без блокировки ручного ввода (Формулы/Formulas)
Выпадающий список без блокировки ручного ввода
Rikh Дата: Вторник, 30.07.2019, 15:50 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день, подскажите пожалуйста как сделать так чтобы в любой из ячеек зеленой области таблицы можно было как выбрать наименование из выпадающего списка, так и написать что-то своё.
В текущей версии таблицы при попытке ввода текста выдаёт ошибку.
К сообщению приложен файл: _111.xls (42.0 Kb)
 
Ответить
СообщениеДобрый день, подскажите пожалуйста как сделать так чтобы в любой из ячеек зеленой области таблицы можно было как выбрать наименование из выпадающего списка, так и написать что-то своё.
В текущей версии таблицы при попытке ввода текста выдаёт ошибку.

Автор - Rikh
Дата добавления - 30.07.2019 в 15:50
_Boroda_ Дата: Вторник, 30.07.2019, 15:56 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Выделите ячейки, Данные - Проверка данных - на вопрос ответьте "да" - вылезет окошко проверки - перейдите на вкладку "Сообщение об ошибке", снимите галку "Выводить сообщение об ошибке"
Или в окошке "Вид" поставьте "Предупреждение" или "Сообщение"
К сообщению приложен файл: _111_1.xls (56.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВыделите ячейки, Данные - Проверка данных - на вопрос ответьте "да" - вылезет окошко проверки - перейдите на вкладку "Сообщение об ошибке", снимите галку "Выводить сообщение об ошибке"
Или в окошке "Вид" поставьте "Предупреждение" или "Сообщение"

Автор - _Boroda_
Дата добавления - 30.07.2019 в 15:56
Rikh Дата: Вторник, 30.07.2019, 16:02 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Огромное спасибо)
 
Ответить
СообщениеОгромное спасибо)

Автор - Rikh
Дата добавления - 30.07.2019 в 16:02
krosav4ig Дата: Вторник, 30.07.2019, 17:05 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
вариант с UDF c автонаполнением списка
в диспетчере имен именованная формула список
Код
=DropDownList(Sheet1!$B$42)

в проверке данных Источник
Код
=Список
, будет ругаться на ошибку, жмем ок
Сообщение об ошибке можно не отключать
[vba]
Код

Function DropDownList(r As Range) As Range
    
    Dim r0 As Range, r1 As Range
    Static b As Boolean

    If b Then: b = False: Exit Function
   
    Application.Volatile False
    Set r0 = Application.Caller
    If IsEmpty(r(2)) Then
        Set r1 = r
    Else
        Set r1 = r.Parent.Range(r, r.End(xlDown))
    End If
    Set DropDownList = r1
    If r1.Find(r0, , xlValues, xlWhole) Is Nothing And Not IsEmpty(r0) Then
        If MsgBox("Введеное начение не надено." & vbCr & _
                  "Добавить его в cписок?", vbQuestion Or vbYesNo) = vbYes Then
            r1.Offset(r1.Rows.Count)(1, 1) = r0
        Else
            b = True: Exit Function
        End If
    End If
End Function
[/vba]
К сообщению приложен файл: 2065150.xls (72.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 30.07.2019, 21:58
 
Ответить
Сообщениевариант с UDF c автонаполнением списка
в диспетчере имен именованная формула список
Код
=DropDownList(Sheet1!$B$42)

в проверке данных Источник
Код
=Список
, будет ругаться на ошибку, жмем ок
Сообщение об ошибке можно не отключать
[vba]
Код

Function DropDownList(r As Range) As Range
    
    Dim r0 As Range, r1 As Range
    Static b As Boolean

    If b Then: b = False: Exit Function
   
    Application.Volatile False
    Set r0 = Application.Caller
    If IsEmpty(r(2)) Then
        Set r1 = r
    Else
        Set r1 = r.Parent.Range(r, r.End(xlDown))
    End If
    Set DropDownList = r1
    If r1.Find(r0, , xlValues, xlWhole) Is Nothing And Not IsEmpty(r0) Then
        If MsgBox("Введеное начение не надено." & vbCr & _
                  "Добавить его в cписок?", vbQuestion Or vbYesNo) = vbYes Then
            r1.Offset(r1.Rows.Count)(1, 1) = r0
        Else
            b = True: Exit Function
        End If
    End If
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 30.07.2019 в 17:05
Rikh Дата: Вторник, 30.07.2019, 17:41 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
krosav4ig, очень сложно для меня, буду разбираться, спасибо)
 
Ответить
Сообщениеkrosav4ig, очень сложно для меня, буду разбираться, спасибо)

Автор - Rikh
Дата добавления - 30.07.2019 в 17:41
krosav4ig Дата: Вторник, 30.07.2019, 21:59 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
дополнил код в своем посте, не учел один ньюанс


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениедополнил код в своем посте, не учел один ньюанс

Автор - krosav4ig
Дата добавления - 30.07.2019 в 21:59
wepp Дата: Понедельник, 17.08.2020, 13:48 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
krosav4ig, спасибо за код! Хочу добавить переход на лист со списком, чтобы после автоматического добавления недостающей позиции пользователь сразу видел, что нужно заполнить дополнительные колонки вручную.

Эту строку:
  r1.Offset(r1.Rows.Count)(1, 1) = r0


Поменял на такую:
Код
r1.Offset(r1.Rows.Count)(1, 1) = r0: Sheets(Лист2).Select


Пробовал с полным именем листа, тоже не переходит. С VBA пытаюсь разбираться, пока только на уровне чужой код посмотреть. Если получится помочь, буду признателен.
 
Ответить
Сообщениеkrosav4ig, спасибо за код! Хочу добавить переход на лист со списком, чтобы после автоматического добавления недостающей позиции пользователь сразу видел, что нужно заполнить дополнительные колонки вручную.

Эту строку:
  r1.Offset(r1.Rows.Count)(1, 1) = r0


Поменял на такую:
Код
r1.Offset(r1.Rows.Count)(1, 1) = r0: Sheets(Лист2).Select


Пробовал с полным именем листа, тоже не переходит. С VBA пытаюсь разбираться, пока только на уровне чужой код посмотреть. Если получится помочь, буду признателен.

Автор - wepp
Дата добавления - 17.08.2020 в 13:48
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выпадающий список без блокировки ручного ввода (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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