o Sheets
coleção global é realmente referindo-se ao livro ativo . Evite referências implícitas!
Planilhas têm um (name)
propriedade. Se você não mudou, então o objeto referido por Sheets("Sheet1")
pode ser acessado diretamente com o Sheet1
identificador - assumindo que é o caso, isso funcionaria:
Sheet1.doThisFunction
Observe também que ThisWorkbook.Sheets
coleção contém folhas de gráfico e planilhas. Você tipicamente procuraria sua folha no ThisWorkbook.Worksheets
coleção.
Esta linha também é um problema:
MsgBox("hello")
Você está usando uma função como se fosse um procedimento; quando não estiver interessado em um valor de retorno, elimine os parênteses:
MsgBox "hello"
Quando você está chamando uma função, você precisa deles:
result = MsgBox("works?", vbYesNo)
Ao envolver os argumentos do procedimento entre parênteses, você está forçando argumentos ByVal
, forçando a VBA a avaliar o valor do que você está dando.
Por exemplo:
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