Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с Комбобоксом для Эксел / 4 сообщений из 4, страница 1 из 1
31.03.2007, 13:13
    #34429136
alex281270
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Комбобоксом для Эксел
Привет всем!!! Помогите разобраться в таком вопросе .В Эксел на языке VBA мне нужно создать форму .На эту форму поместить кнопку для выхода и ComboBox. Задача такая :
В выпадающем списке ComboBox у меня дожны находиться фамилии которые я сам определю.После выбора фамилии в ComboBox она должна появиться в ячейке листа Эксел ,скажем в A1. Если мне нужно будет ввести новую фамилию то я просто вписываю её в ComboBox и она после этого появляется в выпадающем списке ComboBox
...
Рейтинг: 0 / 0
31.03.2007, 15:17
    #34429221
Дадахан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Комбобоксом для Эксел
alex281270Привет всем!!! Помогите разобраться в таком вопросе .В Эксел на языке VBA мне нужно создать форму .На эту форму поместить кнопку для выхода и ComboBox. Задача такая :
В выпадающем списке ComboBox у меня дожны находиться фамилии которые я сам определю.После выбора фамилии в ComboBox она должна появиться в ячейке листа Эксел ,скажем в A1. Если мне нужно будет ввести новую фамилию то я просто вписываю её в ComboBox и она после этого появляется в выпадающем списке ComboBox
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode =  13  Then
 For Each m In Range(Cells( 1 ,  2 ), Cells(Cells(Rows.Count,  2 ).End(xlUp).Row,  2 ))
  If CStr(m.Value) = CStr(Me.ComboBox1.Value) Then GoTo Exist
 Next
 Cells(Cells(Rows.Count,  2 ).End(xlUp).Row,  2 ).Offset( 1 ,  0 ).Value = Me.ComboBox1.Value
 Me.ComboBox1.RowSource = "b1:b" & Cells(Rows.Count,  2 ).End(xlUp).Row
Exist:
 Exit Sub
End If
End Sub

Private Sub UserForm_Activate()
 Me.Combobox1.controlsource="A1" 'адрес ячейки, для вставки значения с комбобокса
 Me.ComboBox1.RowSource = "b1:b" & Cells(Rows.Count,  2 ).End(xlUp).Row 'массив списка
End Sub

можно и покороче, но для этого нужно знать ряд фактов...
...
Рейтинг: 0 / 0
03.04.2007, 18:01
    #34435193
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Комбобоксом для Эксел
Да, как вариант:

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim objFound As Range

If KeyCode = KeyCodeConstants.vbKeyReturn Then
Set objFound = Range(Cells(1, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).Find(ComboBox1.Text, LookIn:=xlValues, LookAt:=xlWhole)

If objFound Is Nothing Then
Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2).Offset(1, 0).Value = ComboBox1.Text
ComboBox1.RowSource = "b1:b" & Cells(Rows.Count, 2).End(xlUp).Row
End If

ThisWorkbook.Worksheets(1).Range("a1").Value = ComboBox1.Text
End If

End Sub


В принципе тоже самое, не шлифовал, правда. Только убран цикл. Остальное - также.
...
Рейтинг: 0 / 0
03.04.2007, 18:06
    #34435208
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Комбобоксом для Эксел
Кстати, убран GoTo, использование которого в большинстве ситуаций Microsoft не рекомендует.
И я заметил одно небольшое различие: в последнем варианте значение в листе меняется сразу, а в первом - после закрытия формы. Это может быть важно в зависимости от ситуации.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с Комбобоксом для Эксел / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]