Sheets
Глобальная коллекция действительно со ссылкой на в активной книге . Избегайте неявных ссылок!
Рабочие листы имеют (name)
свойство. Если вы не изменили его, то к объекту, на который указывает ссылка, Sheets("Sheet1")
можно получить прямой доступ с помощью Sheet1
идентификатора - при условии, что это так, это сработает:
Sheet1.doThisFunction
Также обратите внимание, что ThisWorkbook.Sheets
коллекция содержит диаграммы и рабочие листы. Вы , как правило , будет выглядеть на листе в ThisWorkbook.Worksheets
коллекции.
Эта строка также является проблемой:
MsgBox("hello")
Вы используете функцию, как если бы это была процедура; когда вы не заинтересованы в возвращаемом значении, уберите скобки:
MsgBox "hello"
Когда вы вызываете функцию, они вам нужны:
result = MsgBox("works?", vbYesNo)
Оборачивая аргументы процедуры в круглые скобки, вы передаете аргументы ByVal
принудительно, заставляя VBA оценить значение того, что вы ему даете.
Например:
Sub DoSomething(ByRef foo As Object)
'foo is passed by reference
End Sub
Sub Foobar()
DoSomething (ThisWorkbook) 'ThisWorkbook is force-passed by value
End Sub