Добрый вечер! Подскажите, пожалуйста, как сделать так, чтобы в ComboBox, расположенный на форме можно было выбирать определенные строчки и выбор выводился в ячейку на лист Эксель. При загрузке формы, эксель в фоновом режиме. В качестве строчек для выбора - использовать диапазон ячеек на листе. Неизвестно, какого размера диапазон. Проще говоря, ввели значение в ComboBox, если его нет среди имеющихся значений, то оно добавилось в этот диапазон и в дальнейшем будет отображаться в списке. Если ввел что-то некорректно, то можно было удалить это значение. А отображение уже имеющихся в списке слов, в зависимости от введенных первых букв, я так понимаю, можно поставить в свойствах. Может у кого есть какие-нибудь наработки или идеи?
Добрый вечер! Подскажите, пожалуйста, как сделать так, чтобы в ComboBox, расположенный на форме можно было выбирать определенные строчки и выбор выводился в ячейку на лист Эксель. При загрузке формы, эксель в фоновом режиме. В качестве строчек для выбора - использовать диапазон ячеек на листе. Неизвестно, какого размера диапазон. Проще говоря, ввели значение в ComboBox, если его нет среди имеющихся значений, то оно добавилось в этот диапазон и в дальнейшем будет отображаться в списке. Если ввел что-то некорректно, то можно было удалить это значение. А отображение уже имеющихся в списке слов, в зависимости от введенных первых букв, я так понимаю, можно поставить в свойствах. Может у кого есть какие-нибудь наработки или идеи?Dмитрий
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then With Me.ComboBox1 If Not .MatchFound Then .AddItem .Value End With End If End Sub
Private Sub UserForm_Initialize() Me.ComboBox1.MatchRequired = True End Sub
[/vba] Значения не сохраняются и при повторной загрузке нужно вводить все заново. В таком случае зачем ComboBox вообще нужен? Клавиша ENTER - можно ли обойтись без нее? Просто щелкнуть мышкой по другому объекту на форме Плюс ко всему удалить введенные значения то же нельзя То есть ничего из того что я писал выше не реализовывается.
Да, спасибо за помощь. Я уже видел этот код [vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then With Me.ComboBox1 If Not .MatchFound Then .AddItem .Value End With End If End Sub
Private Sub UserForm_Initialize() Me.ComboBox1.MatchRequired = True End Sub
[/vba] Значения не сохраняются и при повторной загрузке нужно вводить все заново. В таком случае зачем ComboBox вообще нужен? Клавиша ENTER - можно ли обойтись без нее? Просто щелкнуть мышкой по другому объекту на форме Плюс ко всему удалить введенные значения то же нельзя То есть ничего из того что я писал выше не реализовывается.Dмитрий
И я Вам дал ссылку именно на НАРАБОТКИ и ИДЕИ, а отнюдь не на готовые решения именно Вашей задачи. далеко не на каждую конкретную задачу существует готовый код, да он и не нужен. По ссылке - множество готовых примеров, а уж приспособить их под свою, конкретную задачу, при желании,можно.
Из первого Вашего поста я понял, что Вам нужны
Цитата
наработки или идеи
И я Вам дал ссылку именно на НАРАБОТКИ и ИДЕИ, а отнюдь не на готовые решения именно Вашей задачи. далеко не на каждую конкретную задачу существует готовый код, да он и не нужен. По ссылке - множество готовых примеров, а уж приспособить их под свою, конкретную задачу, при желании,можно.VictorM
Сообщение отредактировал VictorM - Четверг, 17.10.2013, 23:15
В принципе, не нужно что бы значения удалялись из формы. Главное что бы значения из которых формируется список находился на каком-нибудь листе. Там же его можно было и подкорректировать, а ввод слова не содержащегося в списке автоматически туда добавлялся, и в дальнейшем, например при открытии Эксель опять присутствовал в этом ComboBox
В принципе, не нужно что бы значения удалялись из формы. Главное что бы значения из которых формируется список находился на каком-нибудь листе. Там же его можно было и подкорректировать, а ввод слова не содержащегося в списке автоматически туда добавлялся, и в дальнейшем, например при открытии Эксель опять присутствовал в этом ComboBoxDмитрий
Вот попробовал. Можно как-то так. Значения добавляет, но не прописывает новые значения на лист (столбец А) и не выводит выбранное значение в другую ячейку, например С3. Опять же можно ли обойтись без ENTER???
Вот попробовал. Можно как-то так. Значения добавляет, но не прописывает новые значения на лист (столбец А) и не выводит выбранное значение в другую ячейку, например С3. Опять же можно ли обойтись без ENTER???Dмитрий
Легче не стало. Я имел ввиду оригинальный или максимально похожий файл, а ещё расскажите зачем это надо, может есть другие варианты решения вопроса.
Легче не стало. Я имел ввиду оригинальный или максимально похожий файл, а ещё расскажите зачем это надо, может есть другие варианты решения вопроса.wild_pig
Постараюсь объяснить. На форме есть два ComboBox, в одном вводится аббревиатура организации, в другом, собственно, само наименование организации. Все это, в зависимости от выбранного значения заносится на новый лист эксель, что в последствие и печатается. Организации, как и их аббревиатуры, повторяются, вот я и подумал вводить таким образом. Хотелось бы конечно, чтобы еще была связь между двумя ComboBox. Проще говоря я изначально введу, например 15 наименований в один и другой диапазон на каком нибудь листе. Его переведу в скрытый режим, чтобы он не был виден пользователем. Эти значения и будут отображаться в поле на Form. А в случае возникновении ситуации, когда какого-то наименования не будет /// вот тут начинается проблема..... оно должно добавляться в диапазон, при закрытии (понятное дело) там сохранятся, и в дальнейшем, при повторном открытии отображаться в Combo1 или Combo2, соответственно. В принципе кое что я уже реализовал (не совсем правильно и то что нужно, но все же...)
Постараюсь объяснить. На форме есть два ComboBox, в одном вводится аббревиатура организации, в другом, собственно, само наименование организации. Все это, в зависимости от выбранного значения заносится на новый лист эксель, что в последствие и печатается. Организации, как и их аббревиатуры, повторяются, вот я и подумал вводить таким образом. Хотелось бы конечно, чтобы еще была связь между двумя ComboBox. Проще говоря я изначально введу, например 15 наименований в один и другой диапазон на каком нибудь листе. Его переведу в скрытый режим, чтобы он не был виден пользователем. Эти значения и будут отображаться в поле на Form. А в случае возникновении ситуации, когда какого-то наименования не будет /// вот тут начинается проблема..... оно должно добавляться в диапазон, при закрытии (понятное дело) там сохранятся, и в дальнейшем, при повторном открытии отображаться в Combo1 или Combo2, соответственно. В принципе кое что я уже реализовал (не совсем правильно и то что нужно, но все же...)Dмитрий
Private Sub ComboBox1_Click() If KeyCode = 13 Then kol = ComboBox1.ListCount For i = 0 To kol - 1 If ComboBox1.Text = ComboBox1.List(i) Then MsgBox "Такая улица уже существует" Exit For End If Next i If i > kol - 1 Then ComboBox1.AddItem ComboBox1.Text End If End Sub
[/vba]
Ввели данные в ComboBox1. И при нажатии Enter, то, что было введено в ComboBox1 создается новый лист с названием которое было введено в Combo Box1
[moder]1 вопрос = 1 тема! Создавайте свою тему. Плюс, оформление кодов и формул тегами - ОБЯЗАТЕЛЬНО![/moder]
Помогите с программой пжлст
[vba]
Код
Private Sub ComboBox1_Click() If KeyCode = 13 Then kol = ComboBox1.ListCount For i = 0 To kol - 1 If ComboBox1.Text = ComboBox1.List(i) Then MsgBox "Такая улица уже существует" Exit For End If Next i If i > kol - 1 Then ComboBox1.AddItem ComboBox1.Text End If End Sub
[/vba]
Ввели данные в ComboBox1. И при нажатии Enter, то, что было введено в ComboBox1 создается новый лист с названием которое было введено в Combo Box1
[moder]1 вопрос = 1 тема! Создавайте свою тему. Плюс, оформление кодов и формул тегами - ОБЯЗАТЕЛЬНО![/moder]Kery_888
Step
Сообщение отредактировал DJ_Marker_MC - Понедельник, 22.06.2015, 09:32