Макрос Excel, чтобы отобразить все варианты выбора многостраничного списка

Я хотел бы создать файл листа Excel со списком с множественным выбором как:

item1 item2 item3 item4 ... .. 

И затем, когда я выбираю для примера item1 и item3 из этого списка, выбранные элементы заполняются в другой ячейке с отображением в виде

 item1 - item 2 are selected 

Решение, которое я пробовал, это создание списка множественного выбора, и я прикрепил к нему макрос, а затем я попытался отобразить выбранный элемент в ячейке списка, но я не знал, что написать макрос, я не эксперт в Excel I нужно сделать это.

заранее спасибо

Это должно работать. Учитывая, что вы начинаете с Fresh No Items Selected ListBox. Я выбираю добавлять и удалять элементы из уже сделанной строки, а не зацикливать каждый объект на каждый выбор / отбор для повышения производительности. Это вариант, но это должно работать намного более гладко. Но если у вас уже есть элементы, выбранные в вашем ListBox, это не будет учитываться, пока вы не отмените выбор, а затем повторно выберите их.

Другое различие между этой опцией и циклом всех значений каждый раз заключается в том, что с помощью этого метода он добавляет значения / значения в порядке, когда они, в которых они выбраны, выступают в том же порядке, что и в ListBox, это может быть положительным отрицательный или безразличный к вашей цели, но решил, что я должен добавить это.

 Private Sub ListBox1_Change() Dim lngCurrentItem As Long Dim strCurrentItem As String Dim strAllSelectedItems As String Dim rngOutput As Range Set rngOutput = [J1] lngCurrentItem = ListBox1.ListIndex strAllSelectedItems = rngOutput strAllSelectedItems = Replace(strAllSelectedItems, " Are Selected", "") strAllSelectedItems = Replace(strAllSelectedItems, " Is Selected", "") strCurrentItem = ListBox1.List(lngCurrentItem) If ListBox1.Selected(lngCurrentItem) Then If strAllSelectedItems = "No Items Selected" Then rngOutput = strCurrentItem & " Is Selected" Else rngOutput = strAllSelectedItems & " - " & strCurrentItem & " Are Selected" End If Else strAllSelectedItems = Replace(strAllSelectedItems, " - " & strCurrentItem, "") strAllSelectedItems = Replace(strAllSelectedItems, strCurrentItem, "") If strAllSelectedItems = "" Then rngOutput = "No Items Selected" ElseIf InStr(1, strAllSelectedItems, " - ", vbTextCompare) > 0 Then rngOutput = strAllSelectedItems & " Are Selected" Else rngOutput = strAllSelectedItems & " Is Selected" End If End If End Sub 

ЕСЛИ вы хотели бы каждый цикл перебирать весь список (если вы хотите, чтобы список был достаточно маленьким, вы не заметите большую часть разницы в скорости, просто убедитесь, что ваш список не настроен так, как весь столбец с более чем 1 миллион клеток, и вы должны быть в порядке)

 Private Sub ListBox1_Change() Dim lngCurrentItem As Long Dim strCurrentItem As String Dim strAllSelectedItems As String Dim rngOutput As Range Set rngOutput = [J1] strAllSelectedItems = "" For i = 0 To ListBox1.ListCount - 1 strCurrentItem = ListBox1.List(i) If ListBox1.Selected(i) Then If strAllSelectedItems = "" Then strAllSelectedItems = strCurrentItem Else strAllSelectedItems = strAllSelectedItems & " - " & strCurrentItem End If End If Next i If strAllSelectedItems = "" Then rngOutput = "No Items Selected" ElseIf InStr(1, strAllSelectedItems, " - ", vbTextCompare) > 0 Then rngOutput = strAllSelectedItems & " Are Selected" Else rngOutput = strAllSelectedItems & " Is Selected" End If End Sub 
Interesting Posts

CSV в UTF-8 и Microsoft Excel

excel 2003 vba .. написание arraylist

Как я могу прочитать лист Excel из SQL Server 2008 R2?

Не удалось закрыть Excel даже после выпуска ресурсов

Проблема несогласованности данных при записи данных в разные файлы excel одновременно с использованием Perl Excel OLE

Пользовательская проверка данных в Excel: только 13 буквенно-цифровых символов, альфа-символы должны быть прописными

C # Получить имя макроса excel

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

Как преобразовать форму Excel в OpenXData

Формула от Excel до Objective-C

Excel: создание выпадающего списка с использованием двух разных диапазонов

Если удовлетворяются два критерия диапазона, скопируйте третью ячейку и вставьте ее на другой лист

Excel, VBA: очистить память

Существуют ли какие-то тонкие различия между SeriesCollection.Add () и SeriesCollection.NewSeries ()?

пытаясь выбрать диапазон, чтобы позже установить ячейки в другую книгу = на .value

Давайте будем гением компьютера.