Путь к кнопкам макросов на настраиваемой панели.

Программирование на Visual Basic for Applications
sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Путь к кнопкам макросов на настраиваемой панели.

Сообщение sonata » 28.03.2003 (Пт) 10:44

Интересный вопрос про сохранение пути к кнопкам макросов
на настраиваемой панели.
1. У меня есть 2 Настраиваемой панели.
Настраиваемая 2
Настраиваемая 1
2. Я определяю какой макрос относится к какой панели:
Public Sub Имена_макросов_панели()
For n = 1 To Application.CommandBars("Настраиваемая 1").Controls.Count
Sheets("Лист1").Select
Cells(n, 1) = Application.CommandBars("Настраиваемая 1").Controls(n).OnAction
Cells(n, 2) = "Настраиваемая 1"
Next
For n = 1 To Application.CommandBars("Настраиваемая 2").Controls.Count
Cells(n, 1) = Application.CommandBars("Настраиваемая 2").Controls(n).OnAction
Cells(n, 2) = "Настраиваемая 2"
Next
End Sub
3. Прописываю путь к макросам
на листе ThisWorkbook
Sub Workbook_Open()
Application.CommandBars("Настраиваемая 1").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Щербак_12"
Application.CommandBars("Настраиваемая 1").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!ВЛ"
Application.CommandBars("Настраиваемая 2").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Sum_Buffer"
Application.CommandBars("Настраиваемая 2").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!MyOwnReport4"
End Sub

Но получается, что все макросы из CommandBars("Настраиваемая 1") правильно
срабатывают, а, вот, из CommandBars("Настраиваемая 2"), например,
вместо Sum_Buffer появляется MyOwnReport4, и на MyOwnReport4 тоже
MyOwnReport4. Не могу понять почему, потом я вручную переподцеплю нужный
макрос, а при новом открытии книги происходит тоже самое,
может, кто-нибудь подскажет в чем может быть дело?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.03.2003 (Пт) 10:50

Application.CommandBars("Настраиваемая 1").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Щербак_12"
Application.CommandBars("Настраиваемая 1").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!ВЛ"
Application.CommandBars("Настраиваемая 2").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Sum_Buffer"
Application.CommandBars("Настраиваемая 2").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!MyOwnReport4"


Так ты же присваиваешь значения только первой кнопке каждой панели.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 28.03.2003 (Пт) 10:58

Я, если честно, с некоторым трепетом тепреь отвечаю в твои постинги, потому, что... Ну ты понимаешь :)



Может, стоит индексы у контролов поменять?

Код: Выделить всё
Добавлено: 28.03.2003 (Пт) 10:44    Заголовок сообщения: Путь к кнопкам макросов на настраиваемой панели.

--------------------------------------------------------------------------------

Интересный вопрос про сохранение пути к кнопкам макросов
на настраиваемой панели.
1. У меня есть 2 Настраиваемой панели.
Настраиваемая 2
Настраиваемая 1
2. Я определяю какой макрос относится к какой панели:
Public Sub Имена_макросов_панели()
For n = 1 To Application.CommandBars("Настраиваемая 1").Controls.Count
Sheets("Лист1").Select
Cells(n, 1) = Application.CommandBars("Настраиваемая 1").Controls(n).OnAction
Cells(n, 2) = "Настраиваемая 1"
Next
For n = 1 To Application.CommandBars("Настраиваемая 2").Controls.Count
Cells(n, 1) = Application.CommandBars("Настраиваемая 2").Controls(n).OnAction
Cells(n, 2) = "Настраиваемая 2"
Next
End Sub
3. Прописываю путь к макросам
на листе ThisWorkbook
Sub Workbook_Open()
Application.CommandBars("Настраиваемая 1").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Щербак_12"
Application.CommandBars("Настраиваемая 1").Controls([b]2[/b]).OnAction = "'" + ThisWorkbook.FullName + "'!ВЛ"
Application.CommandBars("Настраиваемая 2").Controls(1).OnAction = "'" + ThisWorkbook.FullName + "'!Sum_Buffer"
Application.CommandBars("Настраиваемая 2").Controls([b]2[/b]).OnAction = "'" + ThisWorkbook.FullName + "'!MyOwnReport4"




А то как то некрасиво получается, одному контролу два подряд назначния ;)

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 28.03.2003 (Пт) 11:05

Да уж, действительно, я все исправила, и все заработало!
Но, странно, тогда другое, на пенели 1 у меня подцеплено 18 макросов, и все срабатывают правильно..., хотя везде стоит
Controls(1)...Как это можно объяснить?

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 28.03.2003 (Пт) 11:09

Кстати, тут случайно заметила, что мы с тобой еще и из одного города... Может быть, отношение ко мне будет мягче, хотя бы по этой причине?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.03.2003 (Пт) 11:13

Помнится, где-то кто-то радовался, что он на 3 минуты раньше... А я на 8, гы-гы-гы... :wink: :D
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 28.03.2003 (Пт) 11:56

2 GSerg

Ну ты понимаешь, просто я долго не мог решиться - уж очень автор темы вызвала во мне сильные эмоции :)



2 Sonata

Да отношение мое к тебе и так не жесткое :)



А по поводу того что ты делаешь - есть два способа - правильный и нет ;) Правильный - это каждой конпке назхначать свой макрос. Если ты сделала что то неправильно и это сработало, то не надо пытаться найти причину для того чтобы и дальше чтото делать неправильно ;) Только и всего.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 28

    TopList