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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 01:45   #1
Magnetic Air
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 29
По умолчанию Присвоение значения ячейки глобальной константе (пременной)

Есть несколько книг, имена которых записаны в константы:

Код:
Public Const TekGod = "2012"
Public Const Jurnal = "журнал регистрации " & TekGod & ".xls"
Есть много процедур, которые ссылаются на эти константы.
Так как имена со временем меняются и чтобы не лезть в код и не менять их вручную, хотел было перенести все имена в отдельный скрытый лист и менять их через UzerForm, но при присвоении с листа значения ячейки с именем книги EXCEL ругается:

Код:
Public Const Путь1ПФП As String = ThisWorkbook.Sheets("Н").Range("A1").Value
Подсткажите как можно это обойти
Magnetic Air вне форума Ответить с цитированием
Старый 18.10.2012, 03:04   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

это уже не константы ...
Код:
Public Путь1ПФП As String, Jurnal as String
...
Private Sub Workbook_Open() 
  ' при открытии книги производите инициализацию переменных
  Путь1ПФП= ThisWorkbook.Sheets("Н").Range("A1").Value
  Jurnal="журнал регистрации " & Year(date) & ".xls"
End Sub
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 18.10.2012, 03:36   #3
Magnetic Air
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 29
По умолчанию

Спасибо
Тоже думал так сделать, хотел обойтись малой кровью...
А еще варианты есть?
Magnetic Air вне форума Ответить с цитированием
Старый 18.10.2012, 09:51   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

С константами - нет. Значения констант задаются при компиляции. Компилятору недоступны не только объекты приложения, но и "родные" функции:
Код:
Const LINEFEED = Chr(10) 'не работает!
Другой путь - определить имена в книге и использовать их в коде как [TekGod], [Jurnal].
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 18.10.2012 в 09:53.
Казанский вне форума Ответить с цитированием
Старый 18.10.2012, 13:41   #5
Magnetic Air
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 29
По умолчанию

В итоге все константы стали переменными, которые инициализируются в отдельной процедуре, а процедура загнана в
Код:
Private Sub Workbook_Open()
При смене переменных процедура вызывается заново.
Всем спасибо!
Magnetic Air вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение значения. ImmortalAlexSan Общие вопросы .NET 4 03.10.2012 11:48
Присвоение значения полю IraPr Microsoft Office Access 5 29.12.2010 06:45
DateTimePicker - присвоение значения Dux Компоненты Delphi 2 14.09.2010 18:06
Присвоение значения строки Sam Gold PHP 0 11.05.2010 13:29
присвоение значения Stjernen Microsoft Office Excel 5 04.01.2010 14:44