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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2011, 17:14   #1
budmit
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 10
По умолчанию можно ли глобально присвоить объект переменной?

как присвоить объект объектной переменной в модуле чтобы пользоваться ею из любого листа ?
почему так не работает ?
Public Key As Excel.Range
Set Key = Workbooks(BookName).Worksheets("dde ").Cells(3, 12)
budmit вне форума Ответить с цитированием
Старый 28.06.2011, 17:26   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я бы сказал, что должно работать.
Но я бы писал так:

Public Key_ As Range

Sub tt()
Set Key_ = Workbooks(BookName).Worksheets("dde ").Cells(3, 12)
End sub

Excel.Range - не уверен, что поймёт
Key - может быть служебное имя. Так что я бы брал другое слово
Ну и использовать иногда приходилось так:
Module1.Key_
Почему - не знаю, не вникал.
P.S. писал без проверки...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.06.2011, 17:28   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1.это
Код:
Set Key = Workbooks(BookName).Worksheets("dde ").Cells(3, 12)
выполняется внутри процедуры какой-то или просто как записано?

2.BookName - определено на момент выполнения (чему равно)?

3.в книге есть лист с имемем "dde "?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.06.2011, 17:31   #4
budmit
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 10
По умолчанию попробовал без excel

и изменил имя- не помогло
budmit вне форума Ответить с цитированием
Старый 28.06.2011, 17:36   #5
budmit
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 10
По умолчанию to IgorGO

1. сначала использовал в процедуре на одном из листов- все работало, но задача усложнилась надо работать на разных листах и потому озадачился "глобализацией" , потому вытащил в модуль вне процедур
2. да определено выше Public Const BookName = "SR.xls"
3. лист есть конечно
budmit вне форума Ответить с цитированием
Старый 28.06.2011, 18:42   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

на вид все корректно...
а сделайте так:
Public MyVar
Public Const BookName = "SR.xls"

sub bb
set myvar = Workbooks(BookName)
set myvar = Workbooks(BookName).Worksheets("dde ")
set myvar = Workbooks(BookName).Worksheets("dde ").Cells(3, 12)
end sub

на какой строке вылетает с какой ошибкой?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.06.2011, 21:14   #7
budmit
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 10
По умолчанию останавливается на

Set MyVar = Workbooks(BookName).Worksheets("dde ")

я уже и присваивал объект в процедуре открытия книги, не помогает
как dim работает , как public нет
может невозможно глобально присвоить объект переменной ?
budmit вне форума Ответить с цитированием
Старый 28.06.2011, 21:32   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Не может этого быть,давайте файл на вскрытие
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.06.2011, 21:36   #9
budmit
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 10
По умолчанию мне в другом месте ответили так

объектная переменная существует в оперативной памяти компьютера только во время выполнения процедуры, которая находится в модуле, содержащем эту переменную. И если эта процедура вызывает другую процедуру, то до завершения выполнения этой процедуры.


так что похоже в лоб не получиться
но тогда у меня остался вопрос :
а как тогда мне действовать
дело в том что я слабенький программист а vba вообще тока начал изучать , но тем не менее люблю читабельный код а не кучу ссылок
но мне нужны типа объектных переменных , но работать с ними в процедурах на разных листах и разных событиях- т.е. что то типа "глобальных объектных переменных" как этого добиться?
спасибо Вам.
budmit вне форума Ответить с цитированием
Старый 28.06.2011, 22:31   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вы бы лучше пример с пояснениями и желаниями прикрепили.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли сначала присвоить переменной значение , а потом опредилить ее? ромик0 Общие вопросы C/C++ 12 13.06.2011 17:33
Можно ли присвоить значение переменной из get_object_vars( ) slips PHP 0 09.03.2011 16:38
Присвоить результат запроса переменной Droid БД в Delphi 25 06.05.2010 00:55
присвоить значение формы переменной bicdibus Общие вопросы Delphi 4 19.03.2010 17:22
Присвоить результат запроса переменной XATAB БД в Delphi 3 25.02.2009 21:20