Страницы: 1
RSS
Как запись значения ComboBox в активную ячейку по нажатию клавиши Enter (UserForm)?
 
Вечер добрый, помогите разобраться, что не так. В VBA я новичок. Нашел хорошее решение с выпадающем списком (спасибо автору). Хотел применить в своем документе, но не понимаю почему код не работает корректно. В исходнике по нажатию Enter в определенной ячейке (желтым цветом) появляется UserForm. В списке выбирается значение и после нажатия повторно Enter, значение записывается в ячейку. Скопировав код в свой документ столкнулся с проблемой, выбрав из списка значение нажимая enter нечего не происходит, значение не записывается в ячейку. Еще при наборе в ComboBox первых букв появляется наиболее подходящий вариант очень удобно, но если при вводе на каком то символе не остается вариантов (полное совпадение) то автоматически значение записывается в ячейку без подтверждения. Помогите разобраться, что не так.  Можно ли реализовать при предлагаемом подходящем совпадении нажимая enter сначала  совпадение появлялось полностью в ComboBox, а при повторном уже записывалось в ячейку.
Спасибо.
Изменено: Alekcandrut - 03.04.2018 21:28:34
 
Alekcandrut, КомбоБокс на форме - и что? Что можно понять из такого названия темы? Предложите новое, раскрывающее суть проблемы - модераторы поменяют.
 
Как запись значения ComboBox в активную ячейку по нажатию клавиши Enter. Может так более развернуто будет.
Самое интересное, что в исходном файле все работает, а при переносе кода в другой лист, перестает работать корректно. Возможно, что то упустил, настройки формы или еще, что. Пытаюсь разобраться, но пока безрезультатно. Не знаток в этом. Но учусь.
 
В первом случае на форме есть кнопка, а во втором Вы её не создали :)
 
Точно, а я думаю, ну как так та. А вы кнопку спрятали (Ваш исходник если не ошибаюсь). Можно было догадаться по коду, а я зациклился и даже внимания не обращал (новичок). Спасибо Вам за все)). Подскажите еще пожалуйста, при вводе значения (имени например) вводя имя Гаянэ, написав первые три пуквы "Гая", сразу автоматически добавляется имя в ячейку, так как самое вероятное совпадение. Как запретить это действия, что бы значение добавлялось по нажатию кнопки Enter. К примеру вводя значения, набирая первые буквы, предлагается самый подходящий вариант, нажав Enter этот вариант появлялся полностью в ComboBox, а при повторном нажатии Enter ужу записывался в ячейку и форма дективируется. Если это возможно подскажите как реализовать. Спасибо за помощь.
 
Попробуйте закомментировать/удалить процедуру ComboBox1_Click()
 
Работает. Спасибо Вам. Пользуясь случаем хочу поинтересоваться, так как не могу понять вот эту запись в коде. Если Вам не сложно  прокомментируйте пожалуйста.
If Not Intersect(Target, Range("B:B")) Is Nothing Then
  RRR = 1
End If
Что имеется ввиду. Если не пересекаются заданные ячейки, то нечего и выполняется действие RRR =1, если я правильно понимаю. Что дает эта запись или может правельней, какие может повлечь последствия ее отсутствие. Спасибо.
Изменено: Alekcandrut - 03.04.2018 22:15:31
 
Честно говоря, я уже не помню почему и зачем я использовал эту перменную - давно это было ))  Там в коде есть проверка этой переменной, при выполнении которой форме присваивается заголовок и диапазон для первого КомБоБокса. Думаю, эту проверку можно удалить.
 
Спасибо очень помогли. Без Вашей помощи так бы за кнопку и не догадался)))). Буду изучать visual basic далее)).
 
Подскажите пожалуйста, хочу добавить еще одну форму (другую), только на другой диапазон ячеек, создал еще одну форму UserForm2  ну и соответственно добавил модуль с другим названием. А вот записать в листе этот код правильно не получается появляется только одна. Подскажите как правильно это оформить? Пытался записать таким образом:

< Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N
  If Intersect(Target, Range("AA:AA")) Is Nothing Then
     Application.OnKey "~"
     Application.OnKey "{ENTER}"
  Else
     Application.OnKey "~", "ShowForm"
     Application.OnKey "{ENTER}", "ShowForm"
  End If
  If Intersect(Target, Range("B:B")) Is Nothing Then
     Application.OnKey "~"
     Application.OnKey "{ENTER}"
  Else
     Application.OnKey "~", "ShowForm2"
     Application.OnKey "{ENTER}", "ShowForm2"
  End If
End Sub
Private Sub Worksheet_Deactivate()
 Application.OnKey "~"
 Application.OnKey "{ENTER}"
End Sub >
Изменено: Alekcandrut - 05.04.2018 18:37:15
 
Попробовал по другому, тоже не получилось. Знаний не хватает, подскажите, как правильно, появляется только первая форма, вторая не появляется. Загрузил пример.
Изменено: Alekcandrut - 05.04.2018 16:49:26
 
Как вопрос связан с темой?

Код в сообщении следует оформлять с помощью кнопки <...>
 
Возможно не очень, связан, но создавать еще одну тему, наверное будет не правильно, просто как логическое продолжение данной тематики.  
 
Замечание модератора (в части оформления кода) не устранили, но в спор вступили...
Где Вы видите логическое продолжение проблемы с выводом значения из КомбоБокса в ячейку? Загрузка второй формы - это логическое продолжение? Догадается другой человек, который зайдёт на форум с проблемой загрузки второй формы, искать ответ на свой вопрос в теме про ячейку? Ведь не для одного Вас форум...
 
Приношу свои извинения , исправил.
Страницы: 1
Наверх