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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 19:38   #1
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию Правильное объявление глобальных констант

Константы должны использовать при открытии книги и при выполнении процедур находящихся в модулях и листах. Пробовал по всякому их задавать но безуспешно.

В ThisWorkBook
Код:
Option Explicit


Public Sub Workbook_open()

Const n1 = "a"
Const n2 = "b"
Const n3 = "c"

Sheets(n2).Select

End Sub
B Module3

Код:
Sub qw()

Sheets(n3).Select

End Sub
Подскажите пожалуйста как правильно задать их с одного раза чтоб действовали во всей книге.
Вложения
Тип файла: rar 3.rar (21.9 Кб, 7 просмотров)
ymnuhj вне форума Ответить с цитированием
Старый 13.05.2012, 20:31   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Проще обойтись без глобальных переменных, задав листам кодовые имена.



Тогда и код упростится:

Код:
Public Sub Workbook_open()
    n2.Select
End Sub
Код:
Sub qw()
    n3.Select
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__22-31-51.zip
EducatedFool вне форума Ответить с цитированием
Старый 13.05.2012, 20:45   #3
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию

Этого я не знал. Спасибо. Выглядит очень удобным вариантом.

Однако в некоторых процедурах ход зависит от того какой лист активен. Если бы я использовал "настоящие" имена (через константы) то мог бы обойтись следующей функцией.

Код:
If Active.Worksheet.Name = n3 Then
код
End If
Но с кодовыми именами она не работает. Как выполнять проверку активного листа в данном случае?
ymnuhj вне форума Ответить с цитированием
Старый 13.05.2012, 22:39   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Код:
If Activesheet.CodeName = "n3" Then
'код
End If
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 13.05.2012, 22:45   #5
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию

Спасибо огромное
ymnuhj вне форума Ответить с цитированием
Старый 13.05.2012, 23:14   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ещё вариант (при использовании кодовых имен):
Код:
If n3 Is Activesheet Then
'код
End If
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка глобальных параметров каталогов. Тошка Visual C++ 2 18.03.2011 11:23
Использование одной переменной многими без глобальных Horus92 PHP 2 13.01.2011 19:28
Обнуление глобальных переменных в VBA Arkasha69 Microsoft Office Excel 1 06.09.2010 15:06
Правильное объявление глобальных переменных voam Microsoft Office Excel 5 14.05.2010 14:25
Как сделать привязку глобальных горячих клавиш к свой проге? Jinxers Помощь студентам 1 08.02.2009 00:29