powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Кнопки удаляются только после закрытия последней из копий
9 сообщений из 9, страница 1 из 1
Кнопки удаляются только после закрытия последней из копий
    #34606198
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть книга, в ней 2 кода

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Auto_Open()
Dim mi As Object
Dim mb As Object
    On Error Resume Next
    Call Auto_Close
    For Each mb In MenuBars
        With mb.Menus("Tools")
            Call .MenuItems.Add("Unprotect sheet", "UnprotectSheet")
            Call .MenuItems.Add("Unprotect workbook", "UnprotectWorkBook")
        End With
    Next
End Sub



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Auto_Close()
Dim mi As Object
Dim mb As Object
    On Error Resume Next
    For Each mb In MenuBars
        For Each mi In mb.Menus("Tools").MenuItems
            If mi.Caption = "Unprotect workbook" Or mi.Caption = "Unprotect sheet" Then
                mi.Delete
            End If
        Next
    Next
End Sub

Первый при откытии книги создает в панели "Tools" 2 кнопки: "Unprotect sheet" и "UnprotectWorkBook".
Если на пример открыть копию этой книги, то кнопки повторно не создадуться (т.е. они сначала удаляться, а потом создадуться заново)
А вот если закрыть или копию или саму книгу - кнопки удаляются и в оставшейся открытой книге этих кнопок уже нет.
Вопрос: А можно ли сделать так что бы при закрытии одной из книг кнопки оставались, и только при закрытии последней из книг они удалялись?
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34606226
RUSYA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну наверное в Auto_Close и проверять все ли книги закрыты?
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34607253
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно примерчик, если не трудно?
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34608536
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как ваш Excel будет знать, что оставшаяся/иеся книги содержит/ат нужный код на удаление вашего меню?

Наверно, надо использовать классы из VBE и анализировать код строчку за строчкой в Auto_Close. И идти по условию вроде этого:

If Workbooks.Count = 1 Then

vladconn
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34608996
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну если это копия книги то код там будет, а если другой какой то - "левый", то и реакции ни какой не нужно.
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34609191
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за идею!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub AutoClose()
If Workbooks.Count >  1  Then
    Call CreateMyButtons 'создает кнопки
End If
If Workbooks.Count =  1  Then
    Call DeleteMyButtons 'удаляет кнопки
End If
End Sub
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34611409
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuleymanНу если это копия книги то код там будет, а если другой какой то - "левый", то и реакции ни какой не нужно.

По-моему, нужно...
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34611435
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuleymanСпасибо за идею!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub AutoClose()
If Workbooks.Count >  1  Then
    Call CreateMyButtons 'создает кнопки
End If
If Workbooks.Count =  1  Then
    Call DeleteMyButtons 'удаляет кнопки
End If
End Sub


Suleyman, совсем необязательно использовать оператор Call. Он оставлен для совместимости с прежними версиями языка. И потом, если вы привыкнете использовать If ... Else ... End If вместо двух if'ов, то код для глаз будет более ожидаем и более эффективен.

Успехов.
...
Рейтинг: 0 / 0
Кнопки удаляются только после закрытия последней из копий
    #34613472
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, спасибо за советы, возникла новая проблема проблема: при открытии книги создаются кнопки, при закрытии - удаляются.
Если откраваю копию книги то кнопки сначала удаляются а потом создаются заново и и все макросы ссылаются на копию. После закрытия копии эти кнопки "остаются" согласно коду:
Код: plaintext
1.
2.
3.
4.
5.
6.
If Workbooks.Count >  1  Then
    Call CreateMyButtons ' в начале кода идет Call  DeleteMyButtons
End If
If Workbooks.Count =  1  Then
    Call DeleteMyButtons
End If

но принадлежат они по прежнему копии и при нажатии на одну из них открывается опять копия.

Вопрос: можно но ли ссылки на макросы из копии после ее закрытия перепрописать в оставшуюся открытую книгу, ведь все модули и там и там одинаковы.
Заранее благодарен
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Кнопки удаляются только после закрытия последней из копий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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