Доброго времени суток, уважаемые форумчане. Есть такой код:
[vba]
Код
Sub WorkBooksList() Dim book As Object ' Вывод имени каждой рабочей книги For Each book In Workbooks MsgBox (book.Name) Next End Sub
[/vba] В МеседжБоксе показывает названия открытых книг. Мне же нужно сделать, чтобы список открытых книг показывался в ListBox. Пытаюсь сделать так:
[vba]
Код
Private Sub UserForm_Activate() Dim kniqa As Workbook Dim i i = 1 For Each kniqa In Workbooks Me.ListBox1.List(i, 1) = kniqa.Name i = i + 1 Next kniqa End Sub
[/vba] Только вот косячу где-то. Подскажите, пожалуйста, где?
Доброго времени суток, уважаемые форумчане. Есть такой код:
[vba]
Код
Sub WorkBooksList() Dim book As Object ' Вывод имени каждой рабочей книги For Each book In Workbooks MsgBox (book.Name) Next End Sub
[/vba] В МеседжБоксе показывает названия открытых книг. Мне же нужно сделать, чтобы список открытых книг показывался в ListBox. Пытаюсь сделать так:
[vba]
Код
Private Sub UserForm_Activate() Dim kniqa As Workbook Dim i i = 1 For Each kniqa In Workbooks Me.ListBox1.List(i, 1) = kniqa.Name i = i + 1 Next kniqa End Sub
[/vba] Только вот косячу где-то. Подскажите, пожалуйста, где?Stormy
Или сначала заполнить массив, а потом его разом присвоить List'у: [vba]
Код
Private Sub UserForm_Activate() Dim kniqa As Workbook Dim arr() Dim i i = 1 For Each kniqa In Workbooks ReDim Preserve arr(1 To i) arr(i) = kniqa.Name i = i + 1 Next kniqa Me.ListBox1.List = arr End Sub
[/vba]
Или сначала заполнить массив, а потом его разом присвоить List'у: [vba]
Код
Private Sub UserForm_Activate() Dim kniqa As Workbook Dim arr() Dim i i = 1 For Each kniqa In Workbooks ReDim Preserve arr(1 To i) arr(i) = kniqa.Name i = i + 1 Next kniqa Me.ListBox1.List = arr End Sub
Gustav, SkyPro, Благодарю, уважаемые. Теперь есть форма, на ней кнопка и листбокс ( с радиокнопками) , можно ли при нажатие на кнопку закрыть выбранные книги?
Gustav, SkyPro, Благодарю, уважаемые. Теперь есть форма, на ней кнопка и листбокс ( с радиокнопками) , можно ли при нажатие на кнопку закрыть выбранные книги?Stormy
Private Sub CommandButton1_Click() For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False End If Next End Sub
[/vba]
Вот так должно работать: [vba]
Код
Private Sub CommandButton1_Click() For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False End If Next End Sub
Private Sub CommandButton1_Click() Dim i For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False End If Next Me.ListBox1.Clear Dim kniqa As Workbook For Each kniqa In Workbooks Me.ListBox1.AddItem kniqa.Name Next
End Sub
[/vba] Теперь обновляет список после того как выбранные книги были закрыты. SkyPro, Благодарю за помощь
Сделал так
[vba]
Код
Private Sub CommandButton1_Click() Dim i For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False End If Next Me.ListBox1.Clear Dim kniqa As Workbook For Each kniqa In Workbooks Me.ListBox1.AddItem kniqa.Name Next
End Sub
[/vba] Теперь обновляет список после того как выбранные книги были закрыты. SkyPro, Благодарю за помощь Stormy
Private Sub CommandButton1_Click() For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False Me.ListBox1.RemoveItem (i) End If Next End Sub
[/vba]
А вообще, то рекомендую открывать справку по методам обьектов.
Тогда уж лучше так: [vba]
Код
Private Sub CommandButton1_Click() For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) Then Workbooks(Me.ListBox1.List(i)).Close False Me.ListBox1.RemoveItem (i) End If Next End Sub
[/vba]
А вообще, то рекомендую открывать справку по методам обьектов.SkyPro