У меня есть 3 разных модуля, и у всех них есть Subs
, которые на каком-то этапе используют книгу, в которой хранится код. Module3
- это место, где устанавливаются мои диапазоны, и я также поместил рабочую книгу publi c Переменная там. Для пояснения: две основные подпрограммы выполняют разные задачи и не имеют ничего общего друг с другом - за исключением того, что обе используют одни и те же переменные диапазона и строки, поэтому я поместил их в дополнительный модуль.
У меня также есть пользовательская форма, которая использует ThisWorkbook
в своем событии Initialize
. До сих пор я использовал переменную publi c, чтобы объявить рабочую книгу (wbTest
) в Module3
, но я читал о свойствах, которые раньше никогда не использовал. Я думал о передаче wbTest
из Module2
в Userform
, что, как я выяснил, невозможно для Initialize
, и именно так я наткнулся на свойства.
Мой вопрос: из примеров я вижу, что довольно удобно использовать свойства, когда с ними связана какая-то обработка ошибок или вычисления. Но в моем случае это просто команда Set wbTest
, не более того - имеет ли смысл в этом случае выбирать свойство над переменной c publi?
Модуль 1:
Option Explicit
Private Sub MainSub1()
Call Module3.DefiningRanges
MsgBox wbTest.Range("A1").Value
End Sub
Модуль 2:
Option Explicit
Private Sub MainSub2()
Call Module3.DefiningRanges
MsgBox wbTest.Range("A2").Value
frmSelection.Show
End Sub
Модуль 3:
Option Explicit
Public wbTest As Workbook
Public Sub DefiningRanges()
Set wbTest = ThisWorkbook
End Sub
Форма пользователя frmSelection:
Option Explicit
Private Sub UserForm_Initialize()
MsgBox wbTest.Sheets(1).Range("B1").Value
End Sub
Так что это довольно общий вопрос, но в Google я не нашел такого простого случая, как мой. Теперь я знаю, что переменные publi c осуждаются, и многие стараются избегать их, если это возможно - поэтому я спрашиваю, стоит ли мне заменить их здесь свойством.