Olá, Márcio, bem vindo.
Como sua macro roda bem em algumas mas não em outras máquinas, é um comportamento difícil de diagnosticar assim, de longe, pois não temos como reproduzir o problema sem rodar o arquivo ou pelo menos saber como está estruturado.
Caso seja impossível vc disponibilizar, vamos a algumas suspeitas do que poderia estar causando esse bug:
- Sua pasta de trabalho com macro foi criada usando Excel 64bits mas vc tenta rodar ela num Excel 32bits (ou vice-versa)? Mesmo sendo a mesma versão (ex. Office 2010), alguns problemas podem ocorrer e já foram reconhecidos pela Microsoft.
- Idem para o sistema operacional: versões do Windows diferentes (Ex. Win7 x Win10) ou arquiteturas diferentes (64 x 32 bits), especialmente se existem chamadas às API's ou se vc inseriu ou fez referências a objetos/controles (ActiveX, ...), principalmente se de terceiros. Por falar nisso, esse "botão que executa o código" a que vc se refere foi inserido na planilha como um Controle de Formulário ou como um Controle ActiveX? Tente recriá-lo e reassociar o código para ver se o problema persiste.
- O problema pode estar no seu código. Não sabemos quão complexo ele é, mas ele faz alguma interação com outros objetos? Com algum disco/drive? Carrega o nome do usuário logado na máquina?
O ideal aqui seria vc depurá-lo para ver até onde ele executa normalmente. Aqui vai uma dica que vc poderia usar para testá-lo, caso ele não seja muito extenso:
Logo no início do código do botão insira uma instrução "Stop" (ou crie um "ponto de interrupção", que dá no mesmo). Exemplo:
Private Sub CommandButton1_Click()
Stop
'Seu código aqui...
'Blá, blá, blá
'etc...
End Sub
Volte agora na planilha e clique no botão para executar o código. A janela do editor VBA se abre e uma seta amarela mostra que ele está em modo depuração. Vá avançando linha por linha de código usando a tecla F8 (depuração total). Assim vc poderá verificar em qual ponto ocorre o crash.
Não esqueça de remover a instrução Stop ao final.
Sds, Edson
Postado : 30/05/2016 11:32 pm