Lar Mídia social Como usar a declaração OnError no Excel 2016 VBA - dummies

Como usar a declaração OnError no Excel 2016 VBA - dummies

Índice:

Vídeo: On Error GoTo, On Error Resume Next, and GoTo 0 in Excel VBA - Code Included 2025

Vídeo: On Error GoTo, On Error Resume Next, and GoTo 0 in Excel VBA - Code Included 2025
Anonim

Quando você precisa lidar com erros no Excel VBA, você pode usar a declaração OnError. No entanto, há algumas coisas que você precisa saber primeiro. Você pode usar a instrução On Error de três maneiras.

Sintaxe O que faz
No erro IrTo rótulo Depois de executar esta declaração, o VBA retoma a execução na instrução

seguindo o rótulo especificado. Você deve incluir um cólon

após o rótulo para que o VBA o reconheça como um rótulo.

On Error GoTo 0 Depois de executar esta declaração, o VBA retoma seu comportamento normal de verificação de erro

. Use esta declaração depois de usar uma das

outras instruções On Error ou quando quiser remover o tratamento de erros

no seu procedimento.

Em Error Resume Next Depois de executar esta declaração, o VBA simplesmente ignora todos os erros

e retoma a execução com a próxima declaração.

Retomando depois de um erro

Em alguns casos, você simplesmente quer que a rotina finalize graciosamente quando ocorre um erro. Por exemplo, você pode exibir uma mensagem descrevendo o erro e sair do procedimento. (O exemplo EnterSquareRoot5 mostrado anteriormente usa essa técnica). Em outros casos, você deseja se recuperar do erro, se possível.

Para recuperar de um erro, você deve usar uma declaração Resume. Isso limpa a condição de erro e permite que você continue a execução em algum local. Você pode usar a declaração do resumo de três maneiras.

Sintaxe O que faz
Resumo Execução retoma com a declaração que causou o erro. Use

isto se o seu código de tratamento de erros corrigir o problema e

é bom continuar.

Resumo Em seguida Execução retoma-se com a instrução imediatamente após a declaração

que causou o erro. Isso essencialmente ignora o erro

.

Resumo rótulo Execução retoma na etiqueta que você especifica.

O exemplo a seguir usa uma instrução Resume após ocorrer um erro:

Sub EnterSquareRoot6 () Dim Num como Variant Dim Msg As String Dim Ans Como Inteiro TryAgain: 'Configurar o tratamento de erros Em Error GoTo BadEntry 'Solicitar um valor Num = InputBox ("Enter a value") Se Num = "" Then Exit Sub' Insira a raiz quadrada ActiveCell. Valor = Sqr (Num) Sair Sub BadEntry: Msg = Err. Número & ":" & Erro (número de erro) Msg = Msg & vbNewLine & vbNewLine Msg = Msg & "Certifique-se de que um intervalo esteja selecionado," Msg = Msg & "a folha não está protegida," Msg = Msg & "e você insere um valor não negativo. "Msg = Msg & vbNewLine & vbNewLine &" Tente novamente? "Ans = MsgBox (Msg, vbYesNo + vbCritical) Se Ans = vBYes então Resume TryAgain End Sub

Este procedimento possui outro rótulo: TryAgain.Se ocorrer um erro, a execução continua no rótulo BadEntry e o código exibe a mensagem abaixo. Se o usuário responder clicando em Sim, a instrução Resume é iniciada e a execução salta para o rótulo TryAgain. Se o usuário clicar em Não, o procedimento termina.

Se ocorrer um erro, o usuário pode decidir se deve tentar novamente.

Observe que a mensagem de erro também inclui o número de erro, juntamente com a descrição de erro "oficial".

A declaração Resume limpa a condição de erro antes de continuar. Para ver isso, tente substituir a seguinte instrução pela declaração de segundo a último no exemplo anterior:

Se Ans = vbYes Então, GoTo TryAgain

O código não funciona corretamente se você usar GoTo em vez de Resume. Para demonstrar, insira um número negativo. Você recebe o prompt de erro. Clique em Sim para tentar novamente e, em seguida, insira outro número negativo . Este segundo erro não está preso porque a condição de erro original não foi apagada.

Gerenciamento de erros em poucas palavras

Para ajudá-lo a manter todo este negócio de tratamento de erros em linha reta, aqui está um resumo rápido e sujo. Um bloco de código de tratamento de erros tem as seguintes características:

  • Começa imediatamente após o rótulo especificado na instrução On Error.

  • Ele deve ser alcançado pela sua macro somente se ocorrer um erro. Isso significa que você deve usar uma declaração como Exit Sub ou Exit Function imediatamente antes do rótulo.

  • Pode exigir uma declaração de resumo. Se você optar por não abortar o procedimento quando ocorrer um erro, você deve executar uma declaração de resumo antes de retornar ao código principal.

Sabendo quando ignorar erros

Em alguns casos, é perfeitamente bom ignorar erros. É quando a instrução On Error Resume Next entra em jogo.

O exemplo a seguir passa por cada célula no intervalo selecionado e converte o valor em sua raiz quadrada. Este procedimento gera uma mensagem de erro se qualquer célula na seleção contiver um número ou texto negativo:

Sub SelectionSqrt () Dim cell As Range If TypeName (Seleção) <> "range" Então, Exit Sub para cada célula Na célula de seleção. Valor = Sqr (célula. Valor) Próxima célula End Sub

Neste caso, você pode simplesmente ignorar qualquer célula que contenha um valor que não pode converter em uma raiz quadrada. Você pode criar todos os tipos de verificação de erros usando as estruturas If-Then, mas você pode criar uma solução melhor (e mais simples) simplesmente ignorando os erros que ocorrem.

A seguinte rotina faz isso usando a instrução On Error Resume Next:

Sub SelectionSqrt () Dim cell As Range If TypeName (Seleção) <> "range" Então Exit Sub On Error Resume Next Para cada célula em Selection célula. Valor = Sqr (célula. Valor) Próxima célula End Sub

Em geral, você pode usar uma declaração On Error Resume Next se considerar que os erros são inofensivos ou inconsequentes para sua tarefa.

Como usar a declaração OnError no Excel 2016 VBA - dummies

Escolha dos editores

Como modelar paredes no SketchUp que se encontram em ângulos não diretos - manequins

Como modelar paredes no SketchUp que se encontram em ângulos não diretos - manequins

Se você estiver lidando com um canto no Sketchup que não é de 90 graus, você pode prosseguir de maneiras diferentes; Usar a ferramenta Intersect Faces é um ótimo lugar para começar. As etapas a seguir elaboram a técnica: Modelar cada segmento de parede reta de forma independente, mas não se sobrepõem às extremidades ainda. Construa cada parede para ...

Com a Ferramenta de Escala do SketchUp - dummies

Com a Ferramenta de Escala do SketchUp - dummies

Os heróis reais raramente são óbvios. A ferramenta Scale é o membro mais incompreendido do kit de ferramentas misericordioso. Novos modelistas assumem que o Scale é para redimensionar as coisas no seu modelo. Isso é tecnicamente verdadeiro, mas a maioria das pessoas só o usa para redimensionar objetos inteiros; o verdadeiro poder da Escala acontece quando você usa ...

Escolha dos editores

Ao se mover para um ambiente híbrido em nuvem pode ser benéfico - dummies

Ao se mover para um ambiente híbrido em nuvem pode ser benéfico - dummies

Para otimizar o benefício econômico de movendo-se para um ambiente de nuvem híbrido, você deve primeiro ter uma boa compreensão de seus requisitos de carga de trabalho. Normalmente, uma organização possui diversos tipos de carga de trabalho para gerenciar em seu centro de dados, e algumas dessas cargas de trabalho serão mais adequadas do que outras para um ambiente de nuvem híbrido. ...

Por que a orientação do serviço é importante para modelos de computação em nuvem - os serviços dummies

Por que a orientação do serviço é importante para modelos de computação em nuvem - os serviços dummies

São importantes para a computação em nuvem a partir de ambos uma infra-estrutura e uma perspectiva de aplicação. Quando você tem algum conhecimento sobre como adotar uma abordagem orientada para o serviço para projetar sistemas de tecnologia, você pode começar a ver a relação entre essa abordagem e a computação em nuvem. A orientação do serviço permeia a nuvem e a nuvem serve como ambiente ...

Híbridos Elementos Fundamentais da Nuvem - manequins

Híbridos Elementos Fundamentais da Nuvem - manequins

A nuvem híbrida requer elementos fundamentais para fazer um modelo híbrido trabalhar no mundo real. Embora existam muitos problemas e considerações técnicas ao usar a nuvem híbrida, a compreensão dos seguintes elementos é particularmente importante: serviços de virtualização: não é surpreendente que muitas empresas tenham aproveitado o tempo para agilizar seus data centers através de tecnologias ...

Escolha dos editores

Como criar e editar a configuração CLI do Junos - manequins

Como criar e editar a configuração CLI do Junos - manequins

Você cria ou edita a configuração do seu dispositivo em o modo de configuração da interface de linha de comando Junos (CLI). Para entrar no modo de configuração, use o comando configure no prompt do modo operacional: wiley @ netnik> configure Iniciando o modo de configuração [editar] wiley @ netnik # Isso permite que você crie ou edite a configuração do candidato. Enter set? Após o prompt do modo de configuração ...

Como criar um chassi virtual de dois ou mais Juniper EX Switches - manequins

Como criar um chassi virtual de dois ou mais Juniper EX Switches - manequins

Quando você deseja criar uma unidade de Chassi Virtual a partir de duas ou mais (até dez) switches da série EX, você normalmente as interconecta usando as portas dedicadas do Chassi Virtual (VCPs) de 64 Gbps na parte traseira do chassi do switch, que são projetadas exclusivamente para interruptores de interconexão (e que não requerem configuração extra no interruptor). Você ...

Como projetar um filtro de firewall Junos - manequins

Como projetar um filtro de firewall Junos - manequins

Para projetar um filtro de firewall Junos corretamente, você precisa saber Como Junos processa os filtros. Há duas considerações básicas a ter em conta para garantir que seus filtros de firewall Junos se comportem da maneira que você pretende: na maioria dos dispositivos, você pode aplicar vários filtros de firewall em uma cadeia ordenada. Se você aplicar o limite-ssh-telnet ...