Элемент очистки элемента списка не работает в VBA Excel

У меня есть два списка с одной кнопкой, когда пользователь может нажать кнопку, перемещая весь элемент списка из спискаbox1 в listbox2. когда listbox1 становится пустым, приложение перезапускается в EXCEL 2016.

Мой код

For i = 1 To ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).listCount ThisWorkbook.Sheets("MultiSheet").ListBoxes(strTolb).AddItem ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).List(1) ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).RemoveItem (1) Next i 

Здесь strFromLb очищает значения, но когда он очищает последнее значение, мое приложение VBA является excel, которое было перезапущено.

Затем я попробовал код, чтобы очистить список

 ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).ControlFormat.RemoveAllItems ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).Items.Clear 

Ошибка

«Объект не поддерживается для свойства или метода»

затем

 ThisWorkbook.Sheets("MultiSheet").ListBoxes(strFromlb).Clear 

Этот код получил ошибку 400. так любезно помогите мне.

     Worksheets("MultiSheet").ListBoxes(strFromlb).ControlFormat.‌​RemoveAllItems 

    Ссылка: Полное руководство по Excel VBA Form Control ListBoxes

    Существует два типа элементов управления списком для элемента управления Forms и управления ActiveX MsForms. getListBox вернет получение либо одного.

    У вас в коде есть пара синтаксических ошибок

    • Listbox.List возвращает массив на основе 0
    • Вы не используете круглые скобки при использовании RemoveItem потому что это не функция

     Dim lBoxFrom As Object, lBoxTo As Object Set lBoxFrom = getListBox("MultiSheet", strFromlb) Set lBoxTo = getListBox("MultiSheet", strTolb) For i = 0 To lBoxFrom.ListCount - 1 lBoxTo.AddItem lBoxFrom.List(1) lBoxFrom.RemoveItem 1 Next 

    или

     lBoxTo.List = lBoxFrom.List lBoxFrom.Clear 

     Sub Test() Const WORKSHEET_NAME = "Sheet1" Const strFromlb = "BoxFrom" Const strTolb = "BoxTo" Dim lBoxFrom As Object, lBoxTo As Object Dim i As Integer Set lBoxFrom = getListBox(WORKSHEET_NAME, strFromlb) Set lBoxTo = getListBox(WORKSHEET_NAME, strTolb) lBoxFrom.AddItem "A" lBoxFrom.AddItem "B" lBoxFrom.AddItem "C" For i = 0 To lBoxFrom.ListCount - 1 lBoxTo.AddItem lBoxFrom.List(0) lBoxFrom.RemoveItem 0 Next End Sub Function getListBox(WorkSheetName As String, ListBoxName As String) As Object Dim lBox As Object On Error Resume Next Set lBox = Worksheets(WorkSheetName).ListBoxes(ListBoxName) On Error GoTo 0 If lBox Is Nothing Then On Error Resume Next Set lBox = Worksheets(WorkSheetName).Shapes(ListBoxName).OLEFormat.Object.Object On Error GoTo 0 End If Set getListBox = lBox End Function 
    Interesting Posts

    VBA Excel – SQL-запрос через ADO возвращает бесконечный нулевой набор записей

    Элементы Cell Styles переключаются в формат даты, когда файл перемещается с локального компьютера Windows на Amazon Workspaces, где размещается декстон

    Замените элемент управления содержимым ascii в vba и импортируйте csv в таблицу в доступе

    EXCEL VBA получает формат необработанных данных с DATE () и получает дату неделю назад

    Excel Data Validation Combo Box: ограничить параметры для именованного диапазона

    VBA FilesystemObject

    Использование Excel VBA для извлечения данных электронной почты из папки Outlook

    Формат Excel VBA как десятичный с Combobox

    C # / VBS Automate Создание проекта команды в TFS 2015 Обновление 3

    Как получить согласованную подстроку, где строка соответствует списку потенциальных подстрок

    Изменение цвета ячейки ячейки на следующем листе, если флажок установлен

    Перенос данных в открытую книгу из закрытой книги без указания пути к файлу, учитывая, что оба они находятся в одной папке

    Эквивалент индекса – соответствие в Excel для возврата больше, чем значение поиска

    Вставьте изображение в ячейку excel в MATLAB

    Как экспортировать таблицу HTML со 100 тыс. Записей с форматированием номера без выгрузки памяти

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