Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA, время жизни объекта / 18 сообщений из 18, страница 1 из 1
05.04.2005, 13:45
    #32998057
Pteros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
В VBA модуле объявлен и создается глобальный объект

Код: plaintext
Public MyObject as New CMyObject

Вопрос - каково время жизни этого объекта, когда он создается и уничтожается?

Спасибо!
...
Рейтинг: 0 / 0
05.04.2005, 14:03
    #32998122
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
в Excel создаётся при первом обращении к этому объекту, и живёт до закрытия документа
...
Рейтинг: 0 / 0
05.04.2005, 14:53
    #32998268
Pteros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
я сделал для объекта обработчик Terminate()

Код: plaintext
1.
2.
Private Sub Class_Terminate()
  MsgBox "CMyObject - Terminate()"
End Sub

Получается что после обращения к этому объекту он будет создан и перед закрытием документа появится мессаджбокс? У меня мессаджбокс не выскакивает...
...
Рейтинг: 0 / 0
05.04.2005, 19:36
    #32999038
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
- такая же фигня. сам проверял
- но это не значит что объект по прежнему сидит в оперативной памяти.
...
Рейтинг: 0 / 0
06.04.2005, 13:40
    #33000396
Pteros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Тогда такой вопрос. Мне нужно сделать объект, который будет создаваться при запуске приложения и уничтожаться при его закрытии. Создание и уничтожение объекта должно обрабатываться в его Initialize() и Terminate(). Как это сделать в VBA?
...
Рейтинг: 0 / 0
06.04.2005, 14:00
    #33000482
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
это код книги
событие 'Workbook_Open' обрабатывается при её открытии автоматически
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim cTest As clsTest

Private Sub Workbook_Open()
    Set cTest = New clsTest
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set cTest = Nothing
End Sub
и соответственно код класса 'clsTest' для проверки
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Class_Initialize()
    MsgBox "Initialize"
End Sub

Private Sub Class_Terminate()
    MsgBox "Terminate"
End Sub
...
Рейтинг: 0 / 0
06.04.2005, 15:29
    #33000797
Pteros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Ну понятно что так можно :) Только мне надо в Access'e а там нету Workbook_Open
...
Рейтинг: 0 / 0
12.05.2005, 10:20
    #33059104
Ангара
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Как вариант - в Access можно назначить стартовую форму, сделать ее невидимой и на Form_Load повесить чего тебе нужно, потом ее закрыть
...
Рейтинг: 0 / 0
13.05.2005, 11:07
    #33061595
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
marvanв Excel создаётся при первом обращении к этому объекту, и живёт до закрытия документаЭто утверждение не всегда верно.
...
Рейтинг: 0 / 0
13.05.2005, 14:19
    #33062416
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Объект в VBA живет до тех пор, пока живы ссылки на него.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.11.2011, 16:42
    #37529688
Januuu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Темный,
Почему тогда в этом случае:

Dim rst As ADODB.Recordset - объявление в разделе объявлений модуля. Должен быть виден во всех процедурах этого модуля.

Private Sub MySub1()
.....
Set rst=New ADODB.Recordset
rst.Open .....
End Sub
После выхода из процедуры ссылка на рекордсет не работает.
Private Sub MySub2()
.....
Здесь ссылка на rst
End Sub

???????????
...
Рейтинг: 0 / 0
16.11.2011, 16:56
    #37529725
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Должна работать. Приведенного кода мало. К примеру, внутри процедуры переопределен rst
...
Рейтинг: 0 / 0
16.11.2011, 17:03
    #37529742
Januuu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Shocker.Pro,

Если ходить отладчиком, то при выходе из процедуры1 rst становится Out of context, как и остальные объекты.
...
Рейтинг: 0 / 0
16.11.2011, 17:06
    #37529745
Januuu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Januuu,
Возможно время жизни определяется где-то в этой строке?
Set rst=New ADODB.Recordset
...
Рейтинг: 0 / 0
16.11.2011, 17:27
    #37529802
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Нет.
Пишите реальный код, который не работает, урезанный до такого состояния, чтобы строк было минимум, а ошибка воспроизводилась
Тогда будем разбираться.
...
Рейтинг: 0 / 0
16.11.2011, 17:54
    #37529887
R Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Проверяйте :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public rs As ADODB.Recordset
Sub start()
Dim cn As ADODB.Connection
Dim SCon$, StrSql$
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
SCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName _
& ";Extended Properties=""Excel 8.0;HDR=Yes"";"
cn.Open SCon
If Not cn.State =  1  Then Exit Sub
StrSql = "SELECT *  FROM [Лист1$]"
rs.Open StrSql, cn, adOpenKeyset, adLockPessimistic
rs.MoveLast: rs.MoveFirst
End Sub

Код: plaintext
1.
2.
3.
Sub hhh()
MsgBox rs.RecordCount
End Sub

Чего нибудь должно быть на листе "Лист1"
...
Рейтинг: 0 / 0
16.11.2011, 18:21
    #37529977
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
JanuuuЕсли ходить отладчиком, то при выходе из процедуры1 rst становится Out of context, как и остальные объекты. кстати, будет Out of context до входа в MySub2
...
Рейтинг: 0 / 0
16.11.2011, 19:25
    #37530109
Januuu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA, время жизни объекта
Вопрос снимается. Ошибка действительно в коде
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA, время жизни объекта / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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