Как вставить несколько значений из списка в нужную ячейку

Автор karych35, 17.08.2012, 15:03

« назад - далее »

karych35

Добрый день!
Помогите пожалуйста с кодом. Неоходимо следующее:
есть список людей и из этого списка необходимо вставять в ячейку несколько фамилий. Сделал Listbox ну и на этом все. Нужно чтобы при постановки мышки на ячейку "выпадал" список, после выделения ФИО список исчезал а ФИО вставлялись в ячейку.
Заранее большое спасибо.

kuklp

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

karych35

Цитата: KuklP от 17.08.2012, 21:45
Не надо там никакого кода.

мне надо чтобы в одной ячейке было несколько фамилий, которые можно выбирать...

kuklp

Вы мой пример смотрели? И что, нашли такую ячейку, в к-рой нет списка фамилий?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

karych35

Цитата: KuklP от 17.08.2012, 21:57
Вы мой пример смотрели? И что, нашли такую ячейку, в к-рой нет списка фамилий?

смотрел! список выходит, но как в нем выбрать несколько фамилий? вот в чем вопрос!

karych35

весь смысл заключается, чтобы в ОДНОЙ ячейке выбрать несколько фамилий!

kuklp

Без проверок на диапазон и ошибки(тут уж Вы сами):
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   If KeyCode = vbKeyReturn Then
       Dim v, i
       For i = 0 To ListBox1.ListCount - 1
           If ListBox1.Selected(i) Then
               v = v & ", " & ListBox1.List(i)
           End If
       Next
       ActiveCell.Value = Mid(v, 3)
   End If
End Sub

Событие происходит по нажатию Энтер на списке с выбранными ФИО.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

karych35

Цитата: KuklP от 17.08.2012, 22:26
Без проверок на диапазон и ошибки(тут уж Вы сами):
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   If KeyCode = vbKeyReturn Then
       Dim v, i
       For i = 0 To ListBox1.ListCount - 1
           If ListBox1.Selected(i) Then
               v = v & ", " & ListBox1.List(i)
           End If
       Next
       ActiveCell.Value = Mid(v, 3)
   End If
End Sub

Событие происходит по нажатию Энтер на списке с выбранными ФИО.


спасибо!
к сожалению не получилось уменя! я вставил код в listbox но все осталось по-прежнему!

kuklp

А вот не знаю. У меня работает. Пример смотрели? Макросы разрешены?
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

karych35

Цитата: KuklP от 17.08.2012, 22:41
А вот не знаю. У меня работает. Пример смотрели? Макросы разрешены?

да все заработало! а можно сделать, чтобы при нажатии на ячейку высакивал список людей а не висел постоянно?

Poltava

Можно. Добавьте отслеживание изменения выделения к примеру так как ниже и показывайте список если выбрана ячейка из нужного диапазона
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 6 And Target.Row > 1 And Target.Count = 1 _
       And Target.Row <= Cells(Rows.Count, 6).End(xlUp).Row Then
            ListBox1.Visible = True 'Показать список
    End If
End Sub

ну а после выбора лист скрывайте к примеру так. (вставьте код перед End Sub в процедуре ListBox1_KeyDown)
    ListBox1.Visible = False
    Selection.Next.Select 'Target
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

karych35