У меня есть код, который выглядит следующим образом:Доступ к VBA: Почему я получаю дублируемую декларацию объявления, если я уверен, чтобы установить объект в Nothing перед повторным использованием?
If BLAH=BLAH
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
...rest of code...
'Close stuff
rst.Close
dbs.Close
Set dbs = Nothing
Set rst = Nothing
Set qdf = Nothing
END IF
If FOO=FOO
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
...rest of code...
'Close stuff
rst.Close
dbs.Close
Set dbs = Nothing
Set rst = Nothing
Set qdf = Nothing
END IF
Но в разделе FOO=FOO
, он подсвечивается dbs As DAO.Database
и дал сообщение об ошибке всплывающее, что говорит
Compile error: duplicate declaration in current scope.
Что я делаю неправильно? Я думал, это будет нормально, потому что я отрицаю каждый объект перед повторным использованием. Основная задача состоит в том, чтобы запустить тонну IF
операторов в событии Timer формы. Должен ли я просто объявить некоторые объекты только один раз в верхней части процедуры события, чтобы обойти эту ошибку?
Точно, что он говорит, вы объявляете это дважды, вам нужно только разуметь один раз. Так что перед вашим первым, если сделаете тусклый, тогда не нужно, просто используйте их. –
Да, я возился с ним во время ожидания и просто комментировал другой «Дим», заставив ошибку уйти. Мне сейчас любопытно, почему использование кода в разделе «Закрыть материал» не отменяет инициализацию этих объектов. – whatwhatwhat
Использование 'Dim' просто сообщает компилятору« Я буду использовать переменную с именем «X» типа «Y» - она не зависит от фактического заполнения или очистки этой переменной (кроме случаев, когда вы используете «Dim X As New Y» ') Установка переменной в Nothing не удаляет сама переменная, она остается, но больше не указывает на какой-либо объект. –