Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2009, 09:55   #1
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию Автозапуск макроса при открытии и закрытии книги

Помогите найти ошибку. Есть 2 макроса (DisAbleAllCLear, который запускается при открытии книги, и EnableAllClear, который запускается при ее закрытии) С помощью макросов необходимо отключать и включать макросы и oпции.


Sub DisAbleAllCLear()
EnableControl 30017, False 'macro
EnableControl 522, False 'options
CommandBars("ToolBar List").Enabled = False
End Sub


Sub EnableAllClear()
EnableControl 30017, True 'macro
EnableControl 522, True 'options
CommandBars("ToolBar List").Enabled = True
End Sub

*При ошибке выделяется вторая строка



Далее, я прописал автозапуск этих макросов + добавил условие исчезновения строки формул:

Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
Run "DisAbleAllCLear"
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFormulaBar = True
Run "EnableAllClear"
End Sub
ruavia3 вне форума Ответить с цитированием
Старый 06.04.2009, 10:17   #2
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

у тебя есто контроль с ID 30017 ???
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 06.04.2009, 10:19   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Скорее всего, у Вас либо неправильно передаются параметры при вызове процедуры "EnableControl", либо несоответствие типа (типов) параметров.
Если, например, в модуль "Эта книга" вставить код
Код:
Private Sub Workbook_Open()
    Run "AutoOpen_macro"
End Sub
а в программный модуль поместить
Код:
Sub AutoOpen_macro()
    MyMacro "ABCD"
End Sub

Sub MyMacro(x)
    MsgBox x
End Sub
то все будет работать правильно. Т.е. при открытии книги будет выведено сообщение "ABCD".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 06.04.2009, 10:32   #4
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Когда-то SAS888 выкладывал ссылку http://support.microsoft.com/kb/213552/en-us, там я и взял ID коды
ruavia3 вне форума Ответить с цитированием
Старый 06.04.2009, 10:35   #5
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
...
то все будет работать правильно. Т.е. при открытии книги будет выведено сообщение "ABCD".
А как сделать то, что нужно? Скрыть строку формул, опции и макросы.
ruavia3 вне форума Ответить с цитированием
Старый 06.04.2009, 10:53   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А как сделать то, что нужно? Скрыть строку формул, опции и макросы.
Может, что-то вроде этого подойдёт?

Код:
Private Sub ChangeInterface(Value As Boolean)
    With Application
        .ScreenUpdating = False: .Caption = IIf(Value = True, Empty, "Наше окно")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        Dim iCommandBar As CommandBar
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value  ' If iCommandBar.Index > 1 Then
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value: .DisplayWorkbookTabs = Value
        End With: .ScreenUpdating = True
    End With
End Sub

Private Sub UserInterface(): ChangeInterface False: End Sub

Private Sub RestoreInterface(): ChangeInterface True: End Sub
Макрос UserInterface скрывает всё лишнее с экрана, а макрос RestoreInterface восстанавливает все в прежнее состояние.
EducatedFool вне форума Ответить с цитированием
Старый 06.04.2009, 10:56   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Да. Помню. Посмотрите пример во вложении.
Вложения
Тип файла: rar 1.rar (9.5 Кб, 112 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 06.04.2009, 11:07   #8
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

SAS888, спасибо. Всё летает
ruavia3 вне форума Ответить с цитированием
Старый 06.04.2009, 11:09   #9
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Макрос UserInterface скрывает всё лишнее с экрана, а макрос RestoreInterface восстанавливает все в прежнее состояние.
Сложно разобраться, но тоже работает. Спасибо.
ruavia3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Как выполнить действие при закрытии Книги? valerij Microsoft Office Excel 9 12.03.2009 15:31
При закрытии книги, удаляются листы Romuald Microsoft Office Excel 3 20.01.2009 21:34
ошибка при закрытии adoquery Банзай БД в Delphi 7 03.09.2007 19:31