|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
как в ComboBox загрузить перечень названий листов рабочей книги Exel?
или диапазон допустим В5:В25, на определенном листе. учитывая то, что последняя строка может быть больше или меньше?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 16:53
Сообщ.: 100,
Visits: 1 707
|
|
Private Sub UserForm_Initialize() Dim Sheet As Object For Each Sheet In ActiveWorkbook.Sheets Me.ComboBox1.AddItem (Sheet.Name) Next End Sub
|
|
|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
|
|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
есть еще два вопроса:
1. как можно ограничить видимость в ComboBox листов. например что бы один видил одни, второй другие?
2. как в ComboBox мозно загрузить перечень всех открытых книг Excel?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 16:53
Сообщ.: 100,
Visits: 1 707
|
|
| По вопросу №1 Можно попробывать что-то типо этого (если конечно листов не очень много) Private Sub UserForm_Initialize() Dim Sheet As Object For Each Sheet In ActiveWorkbook.Sheets If Sheet.Name = "Лист1" Or Sheet.Name = "Лист2" Or Sheet.Name = "Лист3" Then 'или наоборот If Sheet.Name <> (не равен) "Лист1" и т.д. Me.ComboBox1.AddItem (Sheet.Name) End If Next End Sub По вопросу №2 Private Sub UserForm_Initialize() Dim WBook As Object For Each WBook In Workbooks Me.ComboBox1.AddItem (WBook.Name) Next End Sub P.S. Как вы видите он не сильно отличается от кода, который заносит названия листов в ComboBox
|
|
|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
по первому вопросу. можно и так сильно не напрягает, так как листы по сути набираются в книгу сразу и редко дополняются. пару месяцев назад видил где считка шла по другому. точнее видил не сам макрос, а только результат. листы считывались: простое наименование - в один ComboBox, наименования зак.апрель, зак.май и т.д - в другой комбобокс. при этом что можно было добавить новый лист или взять старый и переименовать его в зак. ..., он считывался уже вторым ComboBox.
по второму вопросу. действительно вы правы, он пишится так же. но это наверное для тех кто пишет постоянно. у меня больше пока фантазии не хватило, остановился на For Each Book In ThisWorkbooks и For Each Book In Workbook и вокруг да около, а вот как то просто написать во множественном числе - не дотянул. ))
еще раз спасибо вам. за вчера и сегодня закончил то над чем неделю голову ломал.
|
|
|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
в книге 6 листов: Лист1(2, 3) и зак.апрель(май, июнь)
запустил макрос:
If Sheet.Name = "Лист1" Or Sheet.Name = "Лист2" Or Sheet.Name = "Лист3" Then
Me.ComboBox1.AddItem (Sheet.Name)
End If
отработал хорошо
а вот такой вариант не хочет
If Sheet.Name = "*" & "." & "*" Then
Me.ComboBox3.AddItem (Sheet.Name)
End If
почему?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 16:53
Сообщ.: 100,
Visits: 1 707
|
|
ПопробуйтеIf Sheet.Name Like "*.*" Then
|
|
|
|
|
новичок
      
участник
Last Login: 22.05.2007 12:07
Сообщ.: 9,
Visits: 405
|
|
вот спасибо !!!
теперь таки получили что нужно было. форма может работать с любой книгой.
For Ea
| | | |