Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как получить названия открытых книг в ListBox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как получить названия открытых книг в ListBox (Макросы/Sub)
Как получить названия открытых книг в ListBox
Stormy Дата: Вторник, 09.09.2014, 12:44 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток, уважаемые форумчане.
Есть такой код:

[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
Дата добавления - 09.09.2014 в 12:44
SkyPro Дата: Вторник, 09.09.2014, 13:32 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub UserForm_Activate()
Dim kniqa As Workbook
     For Each kniqa In Workbooks
         Me.ListBox1.AddItem kniqa.Name
     Next
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Private Sub UserForm_Activate()
Dim kniqa As Workbook
     For Each kniqa In Workbooks
         Me.ListBox1.AddItem kniqa.Name
     Next
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 09.09.2014 в 13:32
Gustav Дата: Вторник, 09.09.2014, 13:55 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2747
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Или сначала заполнить массив, а потом его разом присвоить 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]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 09.09.2014, 13:55
 
Ответить
СообщениеИли сначала заполнить массив, а потом его разом присвоить 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]

Автор - Gustav
Дата добавления - 09.09.2014 в 13:55
Stormy Дата: Вторник, 09.09.2014, 14:54 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Gustav, SkyPro,
Благодарю, уважаемые.
Теперь есть форма, на ней кнопка и листбокс ( с радиокнопками) , можно ли при нажатие на кнопку закрыть выбранные книги?


Место для рекламы.
 
Ответить
СообщениеGustav, SkyPro,
Благодарю, уважаемые.
Теперь есть форма, на ней кнопка и листбокс ( с радиокнопками) , можно ли при нажатие на кнопку закрыть выбранные книги?

Автор - Stormy
Дата добавления - 09.09.2014 в 14:54
SkyPro Дата: Вторник, 09.09.2014, 15:07 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Вот так должно работать:
[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
[/vba]


skypro1111@gmail.com
 
Ответить
СообщениеВот так должно работать:
[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
[/vba]

Автор - SkyPro
Дата добавления - 09.09.2014 в 15:07
Stormy Дата: Вторник, 09.09.2014, 15:21 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация: 12 ±
Замечаний: 0% ±

Excel 2010
Сделал так

[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, Благодарю за помощь beer


Место для рекламы.
 
Ответить
СообщениеСделал так

[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, Благодарю за помощь beer

Автор - Stormy
Дата добавления - 09.09.2014 в 15:21
SkyPro Дата: Вторник, 09.09.2014, 15:37 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Тогда уж лучше так: [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]

А вообще, то рекомендую открывать справку по методам обьектов.


skypro1111@gmail.com
 
Ответить
СообщениеТогда уж лучше так: [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
Дата добавления - 09.09.2014 в 15:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как получить названия открытых книг в ListBox (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!