2013-09-20 5 views
1

Проверено другими аналогичными вопросами на других сайтах, но не удалось найти решение.Excel VBA: ListBox-UserForm Ошибка создания переменной

Я пытаюсь сгенерировать переменные из содержимого listbox-userform. Содержание в списке - это названия книг. Первая часть кода показывает, как я создаю содержимое списка для вашей ссылки. Вторая часть кода - одна из проблем.

Private Sub CommandButton1_Click() 
    Dim wb As Workbook 

    For Each wb In Workbooks 
     With ListBox1 
      .AddItem (wb.Name) 
     End With 
    Next wb 
lbl_Exit: 
End Sub 

Я получаю Object Required ошибку на For Each ниже линии. Этот фрагмент кода находится в Userform.

Private Sub CommandButton3_Click() 
    Dim MainBook As Workbook 
    Dim ListBox1 As ListBox 

    For Each Item In ListBox1 
     If Item.Name Like "Aggregate" Then 
      Item.Select 
      Set MainBook = Selection 
     End If 
    Next 
End Sub 

Примечание: Я читал, что Item это свойство ListBox, который где я получил, что из.

ответ

0

Это то, что вы пытаетесь?

Private Sub CommandButton1_Click() 
    Dim wb As Workbook 

    For Each wb In Workbooks 
     With ListBox1 
      .AddItem (wb.Name) 
     End With 
    Next wb 
End Sub 

Private Sub CommandButton2_Click() 
    Dim MainBook As Workbook, i as Long 

    For i = 0 To (ListBox1.ListCount -1) 
     If ListBox1.List(i) Like "Aggregate" Then 
      Set MainBook = Workbooks(ListBox1.List(i)) 
      MainBook.Activate 
      Exit For 
     End If 
    Next 
End Sub 
+0

Да, похоже, что это работает, спасибо. Но с новой переменной MainBook я могу ссылаться на нее в своем коде внутри модуля или есть что-то особенное, что мне нужно сделать, чтобы передать его из UserForm в модуль? – Doug

+0

Да, вы можете ссылаться на него, если вы перемещаете 'Dim MainBook As Workbook' на самый верх :) Еще вы сможете работать с ним только в процедуре' CommandButton2_Click'. –