Olá, Cyberlacs
Na verdade vc passou corretamente a planilha como parâmetro. O erro principal entretanto, é que vc definiu CalculaHorasPorDia como uma Function, mas da forma como vc a está usando, ela está desempenhando papel de uma Sub.
Lembre-se que uma Sub "faz alguma coisa" enquanto que uma Function "retorna algum valor/objeto". Então, simplificando, uma Function se usa do lado direito de uma igualdade, por exemplo, digamos X= CalculaHorasPorDia(objPlanilha), caso a Function retornasse algum valor, mas não é o que acontece.
Outro problema é o uso do contador i. Como vc não passou ele também como parâmetro, seu valor não fica disponível para sua rotina CalculaHorasPorDia. Então ou vc define i como uma variável pública na primeira procedure ou como variável global em nível de módulo ou, melhor ainda, passa ela também como parâmetro para a segunda rotina. Algo como:
Sub CalculaHorasPorDia(nomePlanilha As Worksheet, i as Integer). . . End Sub
e na hora de chamar:
CalculaHorasPorDia objPlanilha, i
Aconselho a sempre forçar o dimensionamento explícito de todas as variáveis para evitar erros assim. Para isso, na área de declarações do módulo, bem no início insira Option Explicit. É até bom deixar isso automático para cada novo módulo, indo em "Ferramentas">"Opções"> na guia "Editor" selecionar "Requerer declaração de variável".
Obs.: não analisei a funcionalidade do seu código, apenas o que poderia estar dando erro, ok?
Postado : 11/09/2016 12:16 am