powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать на панели инструментов выпадающий список?
25 сообщений из 54, страница 1 из 3
Создать на панели инструментов выпадающий список?
    #33813649
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно или нет?

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813693
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аленочка, можно.

Раскрывающиеся списки является объектами CommandBarComboBox.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub CreateComboBox()
    Dim cb As CommandBar
    Dim cmb As CommandBarComboBox
    
    Set cb = Application.CommandBars.Add( _
      Name:="Temp", _
      Temporary:=True)
    
    Set cmb = cb.Controls.Add( _
      Type:=msoControlComboBox)
    
    With cmb
        .AddItem "One",  1 
        .AddItem "Two",  2 
        .AddItem "Three",  3 
        .DropDownWidth =  100 
        .ListIndex =  1 
    End With
    
    cb.Visible = True
End Sub
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813699
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Урааа!! Сейчас проверю..

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813737
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ashton Спасибо! То что нужно! Только в список мне нужно добавить все листы книги и при выборе нужного, автоматом переходить на лист, наименование которого выбрано в ComboBox 'е...

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813756
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартный модуль.

Код: plaintext
1.
2.
3.
4.
Public cmb As CommandBarComboBox

Public Sub ActivateWs()
    Worksheets(cmb.List(cmb.ListIndex)).Activate
End Sub

Модуль книги.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub Workbook_Open()
    Dim cb As CommandBar
    Dim ws As Worksheet

    Set cb = Application.CommandBars.Add( _
      Name:="Temp", _
      Temporary:=True)
    
    Set cmb = cb.Controls.Add( _
      Type:=msoControlComboBox)
    
    For Each ws In ThisWorkbook.Worksheets
        cmb.AddItem ws.Name
    Next ws

    With cmb
        .DropDownWidth =  100 
        .ListIndex =  1 
        .OnAction = "ActivateWs"
    End With
    
    cb.Visible = True
End Sub
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813852
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не работает, у меня макросы в надстройке, а в ComboBox нужно выводить листы активной книги, а вот этот код:

Код: plaintext
1.
2.
Public Sub ActivateWs()
    Worksheets(cmb.List(cmb.ListIndex)).Activate
End Sub

выводит только список листов самой надстройки

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813859
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а поняла, нужно писать:

Код: plaintext
1.
2.
For Each ws In ActiveWorkbook.Worksheets
        cmb.AddItem ws.Name
    Next ws

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813870
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ещё, листы можно выберать стандартным контекстным меню.
Код: plaintext
Application.CommandBars("Workbook tabs").ShowPopup
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813875
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочкаа поняла, нужно писать:

Код: plaintext
1.
2.
For Each ws In ActiveWorkbook.Worksheets
        cmb.AddItem ws.Name
    Next ws

Аленочка тм

неа всё равно формируется список листов надстройки, а не список листов рабочей книги..
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813905
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слушай, а тебе зачем это надо, для работы или для эксперимента? есть одна фишка под названием "навигатор", так вот она создает именно то, шо ты и говорила. список листов книги для перехода и навигации по ним. или важен эксперимент?
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813925
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33слушай, а тебе зачем это надо, для работы или для эксперимента? есть одна фишка под названием "навигатор", так вот она создает именно то, шо ты и говорила. список листов книги для перехода и навигации по ним. или важен эксперимент?

для работы. мне нужно чтобы пользователь не видел ярлыки листов в рабочей книги, так как все они не помещаются, гораздо проще их будет выбирать из списка...
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813948
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть еще два варианта, если этот не устраивает.
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813986
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
штука для ознакомления с кодом
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33813987
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работающая надстройка
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814011
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Ashton, ваш вариант у меня не работает...а хотелось бы..раз уж начала довести до конца...

Аленочка тм
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814166
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эй, пригодилось или нет?
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814190
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33Эй, пригодилось или нет?

ты может объяснишь что это за файлы? мне дополнительные надстройки не нужны. у меня есть своя надстройка, которая создаёт панель инструментов и на этой панели мне нужно создать выпадающий список листов активной книги
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814197
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33Эй, пригодилось или нет?

думаю пригодиться, только я уже это завтра всё перелапачивать буду. сейчас уже домой убегаю. спасибо. завтра гляну.
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814312
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предлагается не изобретать лесапед, а позырить то, как работает надстройка, посмотреть код, а потом сделать свое, если надо, а потом рассказать, шо получилось.
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33814503
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я тоже не люблю незавершенных дел и вопросов без ответов.

Сделал я надстройку, разместил в ней следующий код.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public cmb As CommandBarComboBox

Public Sub ActivateWs()
    Worksheets(cmb.List(cmb.ListIndex)).Activate
End Sub

Public Sub CreateComboBox()
    Dim cb As CommandBar
    Dim ws As Worksheet

    Set cb = Application.CommandBars.Add( _
      Name:="Temp", _
      Temporary:=True)
    
    Set cmb = cb.Controls.Add( _
      Type:=msoControlComboBox)
    
    For Each ws In ActiveWorkbook.Worksheets
        cmb.AddItem ws.Name
    Next ws

    With cmb
        .DropDownWidth =  100 
        .ListIndex =  1 
        .OnAction = "ActivateWs"
    End With
    
    cb.Visible = True
End Sub

Добавил в книге ссылку на эту надстройку, все ок, в списке все листы этой книги, а не надстройки.

Попробуй еще такой вариант. В надстройке.

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Sub CreateComboBox(wb As Workbook)
...
    For Each ws In wb.Worksheets
    ...
    Next ws
...
End Sub

И в книге вызывай соотвественно.

Код: plaintext
1.
2.
Private Sub Workbook_Open()
    CreateComboBox ThisWorkbook
End Sub
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33815702
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshtonДа, я тоже не люблю незавершенных дел и вопросов без ответов.

Сделал я надстройку, разместил в ней следующий код.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public cmb As CommandBarComboBox

Public Sub ActivateWs()
    Worksheets(cmb.List(cmb.ListIndex)).Activate
End Sub

Public Sub CreateComboBox()
    Dim cb As CommandBar
    Dim ws As Worksheet

    Set cb = Application.CommandBars.Add( _
      Name:="Temp", _
      Temporary:=True)
    
    Set cmb = cb.Controls.Add( _
      Type:=msoControlComboBox)
    
    For Each ws In ActiveWorkbook.Worksheets
        cmb.AddItem ws.Name
    Next ws

    With cmb
        .DropDownWidth =  100 
        .ListIndex =  1 
        .OnAction = "ActivateWs"
    End With
    
    cb.Visible = True
End Sub

Добавил в книге ссылку на эту надстройку, все ок, в списке все листы этой книги, а не надстройки.

если макрос надстройки CreateComboBox вызывать из уже открытой рабочей книги - тогда всё ОК, но если вызов этого макроса поместить в процедуру открытия надстройки, то в ComboBoxе появляется список листов НАДСТРОЙКИ!!! :

Код: plaintext
1.
2.
Private Sub Workbook_Open()
CreateComboBox
End Sub
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33815709
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33есть еще два варианта, если этот не устраивает.

Это отличная штука, но вот абсолютно лишним является то, что для получения списка листов нужно нажать кнопку "Обновить". Для пользователья это очень неудобно.

Можно как-нибудь делать так, чтобы список листов активной книги формировался сразу при загрузке надстройки?

Пока что ни один из предложенных вариантов этого делать не может :-(
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33815837
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не понял, что ты используешь событие открытие надстройки, а не книги.

Воспользуйся следующим вариантом.

В надстройке должно быть.

Class1.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public WithEvents app As Application

Private Sub app_WorkbookOpen( _
  ByVal Wb As Workbook)
    If Not Wb Is ThisWorkbook Then
        If Wb.Name <> "PERSONAL.XLS" Then
            CreateComboBox Wb
        End If
    End If
End Sub

Module1.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public cmb As CommandBarComboBox

Public Sub ActivateWs()
    Worksheets(cmb.List(cmb.ListIndex)).Activate
End Sub

Public Sub CreateComboBox(Wb As Workbook)
    Dim cb As CommandBar
    Dim ws As Worksheet

    Set cb = Application.CommandBars.Add( _
      Name:="Temp", _
      Temporary:=True)
    
    Set cmb = cb.Controls.Add( _
      Type:=msoControlComboBox)
    
    For Each ws In Wb.Worksheets
        cmb.AddItem ws.Name
    Next ws

    With cmb
        .DropDownWidth =  100 
        .ListIndex =  1 
        .OnAction = "ActivateWs"
    End With
    
    cb.Visible = True
End Sub

ЭтаКнига.

Код: plaintext
1.
2.
3.
4.
Dim a As New Class1

Private Sub Workbook_Open()
    Set a.app = Application
End Sub
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33815945
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка Ivan33есть еще два варианта, если этот не устраивает.

Это отличная штука, но вот абсолютно лишним является то, что для получения списка листов нужно нажать кнопку "Обновить". Для пользователья это очень неудобно.

Можно как-нибудь делать так, чтобы список листов активной книги формировался сразу при загрузке надстройки?

Пока что ни один из предложенных вариантов этого делать не может :-(
я выложил не только одну штуку, я выложил два варианта: один как тулбокс, а другой встраивается именно в панель инструментов. посмотри внимательно. судя по твоему посту, ты взяла файл только первый Navigation, есть еще ворбук навигэйшн (файл) позырь внимательно.
...
Рейтинг: 0 / 0
Создать на панели инструментов выпадающий список?
    #33815953
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я выложил два файла - два разных решения:один называется NavigationToolbar.rar , второй - worbook navigation.rar
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создать на панели инструментов выпадающий список?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]