как в ComboBox загрузить перечень листов книги
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



как в ComboBox загрузить перечень листов... Expand / Collapse
Автор
Сообщение
21.04.2007 17:08
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.05.2007 12:07
Сообщ.: 9, Visits: 405
как в ComboBox загрузить перечень названий листов рабочей книги Exel?



или диапазон допустим В5:В25, на определенном листе. учитывая то, что последняя строка может быть больше или меньше?
Сообщ. #912682
21.04.2007 23:31
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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
Сообщ. #912688
21.04.2007 23:43
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.05.2007 12:07
Сообщ.: 9, Visits: 405
огромное спасибо.
Сообщ. #912690
22.04.2007 20:55
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.05.2007 12:07
Сообщ.: 9, Visits: 405
есть еще два вопроса:
1. как можно ограничить видимость в ComboBox листов. например что бы один видил одни, второй другие?
2. как в ComboBox мозно загрузить перечень всех открытых книг Excel?
Сообщ. #912699
23.04.2007 0:27
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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

Сообщ. #912701
23.04.2007 2:00
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.05.2007 12:07
Сообщ.: 9, Visits: 405
по первому вопросу. можно и так сильно не напрягает, так как листы по сути набираются в книгу сразу и редко дополняются. пару месяцев назад видил где считка шла по другому. точнее видил не сам макрос, а только результат. листы считывались: простое наименование - в один ComboBox, наименования зак.апрель, зак.май и т.д - в другой комбобокс. при этом что можно было добавить новый лист или взять старый и переименовать его в зак. ..., он считывался уже вторым ComboBox.


по второму вопросу. действительно вы правы, он пишится так же. но это наверное для тех кто пишет постоянно. у меня больше пока фантазии не хватило, остановился на For Each Book In ThisWorkbooks и For Each Book In Workbook и вокруг да около, а вот как то просто написать во множественном числе - не дотянул. ))

еще раз спасибо вам. за вчера и сегодня закончил то над чем неделю голову ломал.
Сообщ. #912702
24.04.2007 2:10
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
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

почему?
Сообщ. #912735
24.04.2007 10:29
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.12.2007 16:53
Сообщ.: 100, Visits: 1 707
Попробуйте

If Sheet.Name Like "*.*" Then
Сообщ. #912744
24.04.2007 21:55
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.05.2007 12:07
Сообщ.: 9, Visits: 405
вот спасибо !!!
теперь таки получили что нужно было. форма может работать с любой книгой.


For Ea