Pelo que vejo na web, essa é uma reclamação bastante comum, mas as respostas parecem ser mais raras. O problema é este:
Temos vários aplicativos Excel VBA que funcionam perfeitamente em várias máquinas de usuários. No entanto, em uma máquina, eles param em certas linhas de código. São sempre as mesmas linhas, mas essas linhas parecem não ter nada em comum.
Se você pressionar F5 (executar) após a parada, o aplicativo continuará, então é quase como se um ponto de interrupção tivesse sido adicionado. Tentamos selecionar 'remover todas as pausas' no menu e até adicionar uma pausa e removê-la novamente.
Já tivemos esse problema com aplicativos únicos antes e o desenvolvemos cortando o código dos módulos, compilando e colando-o novamente etc.
Agora, o problema parece estar relacionado ao próprio Excel, e não a um único .xls, por isso não sabemos como gerenciar isso.
Qualquer ajuda será muito bem recebida :)
Obrigado,
Philip Whittington
Respostas:
Eu encontrei uma segunda solução.
Espero que isso ajude alguém.
fonte
Esse problema vem de uma peculiaridade estranha no Office / Windows.
Depois de desenvolver o mesmo pedaço de código VBA e executá-lo centenas de vezes (literalmente) nos últimos dois dias, encontrei esse problema agora. A única coisa que foi diferente é que, pouco antes de enfrentar esse problema desconcertante, encerrei acidentalmente a execução do código VBA com um método não-ortodoxo.
Limpei todos os arquivos temporários, reiniciei, etc ... Quando executei o código novamente depois de tudo isso, ainda estava com o problema - antes de inserir o primeiro loop. Faz sentido que "pressione o botão" Debug "no pop-up, pressione duas vezes [Ctrl + Break] e depois isso possa continuar sem parar" porque algo na combinação do Office / Windows não liberou a execução. Está preso.
A ação redundante Ctrl + Break provavelmente resolve a execução remanescente.
fonte
Uma solução está aqui :
Mas, depois de inserir essa linha de código, não consegui mais usar Ctrl + Break. Portanto, funciona, mas não muito.
fonte
xlInterrupt
. (Ele também é reativado automaticamente quando a execução do código é concluída.) Sua outra resposta funcionou para mim, mas, na pior das hipóteses, isso poderia ser usado como uma correção temporária. Mais informações sobre Application.EnableCancelKeyDescobri que pressionar Ctrl + Break enquanto a macro não estava sendo executada resolveu o problema.
fonte
Eu tentaria as coisas corretivas usuais: - Execute o VBA Code Cleaner de Rob Bovey no seu código VBA - remova todos os suplementos no PC dos usuários, principalmente os COM e .NET - Exclua todos os arquivos .EXD dos usuários (incompatibilidades da atualização do MSoft) - Execute o Excel Detectar e reparar no sistema do usuário - verifique o tamanho do arquivo .xlb do usuário (deve ser de 20 a 30K) - Reinicie e exclua todos os arquivos temporários do usuário
fonte
Obrigado a todos por sua entrada. Esse problema foi resolvido escolhendo REPARO no painel de controle. Acho que isso registra explicitamente alguns dos componentes COM nativos do Office e faz coisas que o REINSTALL não faz. Espero que o último passe por uma lista de verificação e às vezes aceite o que está lá se já estiver instalado, talvez. Em seguida, tive um problema separado ao registrar minha própria dll .NET para interoperabilidade COM na máquina do usuário (apesar de isso também funcionar em outras máquinas), embora eu ache que esse foi o meu erro e não a Microsoft. Mais uma vez obrigado, eu realmente aprecio isso.
fonte
Eu me deparei com esse problema algumas vezes durante o desenvolvimento de um aplicativo Excel VBA complexo. Às vezes, o Excel começou a quebrar o objeto VBA aleatoriamente. E o único remédio era reiniciar a máquina. Após a reinicialização, o Excel geralmente começou a agir normalmente.
Logo descobri que a possível solução para esse problema é pressionar CTRL + Break uma vez quando a macro NÃO está sendo executada. Talvez isso possa ajudar você também.
fonte
Eu tive esse problema também usando o Excel 2007 com uma pasta de trabalho foobar.xlsm (habilitada para macro) que receberia a "execução do código foi interrompida" simplesmente tentando fechar a pasta de trabalho no X vermelho no canto direito sem macros em execução no todas as macros de formulário, pasta de trabalho ou planilha "inicializar". As opções que obtive foram "Fim" ou "Continuar", a depuração sempre foi acinzentada. Eu fiz como um pôster anterior sugerido Painel de Controle-> Programas e Recursos-> clique com o botão direito do mouse em "Microsoft Office Proffesional 2007" (no meu caso) -> alterar-> reparar.
Isso resolveu o problema para mim. Posso acrescentar que isso aconteceu logo após uma atualização do MS e também encontrei um suplemento no Excel chamado "Team Foundation" da Microsoft que certamente não instalei voluntariamente
fonte
Gostaria de adicionar mais detalhes à resposta 2 de Stan pelos seguintes motivos:
Eu mesmo enfrentei esse problema mais de uma dúzia de vezes e, dependendo das condições do projeto, escolhi entre a resposta mágica 1 ou 2 do stan's voodoo magic . Quando continuei enfrentando-o novamente, fico mais interrogativo do que por que isso acontece em primeiro lugar.
Também gostaria de adicionar uma resposta para usuários de Mac.
Existem limitações nas duas respostas possíveis:
Isso pode ocorrer devido a qualquer um dos seguintes motivos:
Sistema operacional que não aloca recursos do sistema para o processo do Excel. ( Solução: basta iniciar o sistema operacional - a taxa de sucesso é muito baixa, mas sabe-se que funciona muitas vezes)
Código P é o código intermediário que foi usado no Visual Basic (antes do .NET) e, portanto, ainda é usado no VBA. Permitiu um executável mais compacto à custa de uma execução mais lenta. Por que estou falando sobre código-p? Porque às vezes fica corrompido entre várias execuções e arquivos grandes ou apenas devido à instalação do software (Excel) foi corrompido em algum lugar. Quando o código p corrompe. a execução do código continua sendo interrompida. Solução: Nesses casos, supõe-se que seu código tenha começado a corromper e as chances no futuro sejam de que sua pasta de trabalho do Excel também fique corrompida, fornecendo mensagens como "arquivo excel corrompido e não pode ser aberto". Portanto, como uma solução rápida, você pode confiar na resposta nº 1 ou nº 2 conforme suas necessidades. No entanto, nunca ignore os sinais de corrupção. É melhor copiar seus módulos de código no bloco de notas, excluir os módulos, salvar e fechar a pasta de trabalho, fechar o excel. Agora, abra novamente a pasta de trabalho e comece a criar novos módulos com o código copiado anteriormente no bloco de notas.
Usuários de Mac, tente qualquer uma das opções abaixo e elas definitivamente funcionarão dependendo da arquitetura do sistema, ou seja, versão do SO e do Office
Você será colocado no modo de interrupção usando as combinações de teclas acima, pois a macro suspende a execução imediatamente, finalizando a tarefa atual. Esta é a substituição da Etapa 2.
xlErrorHandler
junto com aResume
instrução no Manipulador de Erros se o código do erro for 18. Em seguida, a interrupção é enviada ao procedimento em execução como um erro, detectável por um erro manipulador configurado com uma instrução On Error GoTo. O código de erro detectável é 18. O procedimento atual é interrompido e o usuário pode depurar ou finalizar o procedimento. A Microsoft adverte que não use isso se o manipulador de erros tiver retomado a instrução, caso contrário, o manipulador de erros sempre retornará à mesma instrução. É exatamente o que queremos em interrupções sem sentido indesejadas da execução do código.fonte
Minha reputação atual ainda não permite postar isso como um comentário. Stans solução para entrar no modo de depuração, pressione duas vezes Ctrl + Break, continuar, salvar resolveu meu problema, mas tenho duas reviravoltas inesperadas:
A estrutura do meu projeto é protegida por senha; portanto, para entrar no modo de depuração, primeiro tive que entrar no modo de desenvolvedor, clique na estrutura do projeto e digite a senha.
Meu projeto é um arquivo de modelo (.xmtl). Abri o arquivo com um clique duplo, que o abre como .xml com um "1" no final do nome do arquivo anterior. Corrigi o bug conforme a instrução Stans e o salvei como esse ... 1.xml. Quando abri o modelo novamente, desta vez como modelo, e quis aplicar a mesma correção de bug nesse arquivo, o bug desapareceu! Não alterei este arquivo e ainda não há nenhum erro na execução da macro. Isso significa para mim que o bug não está realmente no arquivo, mas em uma configuração (oculta) no Excel.
fonte
Reinstale e corrija-o :) Além disso, é difícil dizer.
fonte