Abaixo, veremos dois programas em Excel VBA. Um programa simplesmente ignora erros. O outro programa continua a execução em uma linha especificada ao encontrar um erro.
Situação:
Ambos os programas calculam a raiz quadrada dos números.
Raiz quadrada 1
Adicione as seguintes linhas de código ao botão de comando 'Raiz quadrada 1'.
1. Primeiro, declaramos dois objetos Range. Chamamos os objetos Range de rng e cell.
Dim rng como intervalo, célula como intervalo
2. Inicializamos o objeto Range rng com o intervalo selecionado.
Definir rng = Seleção
3. Queremos calcular a raiz quadrada de cada célula em um intervalo selecionado aleatoriamente (este intervalo pode ser de qualquer tamanho). No Excel VBA, você pode usar o loop For Each Next para isso. Adicione as seguintes linhas de código:
Para cada célula em rng
Próxima célula
Nota: rng e cell são escolhidos aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de referir-se a esses nomes no restante do código.
4. Adicione a seguinte linha de código ao loop.
On Error Resume Next
5. Em seguida, calculamos a raiz quadrada de um valor. No Excel VBA, podemos usar a função Sqr para isso. Adicione a seguinte linha de código ao loop.
cell.Value = Sqr (cell.Value)
6. Saia do Editor do Visual Basic e teste o programa.
Resultado:
Conclusão: o Excel VBA ignorou células contendo valores inválidos, como números negativos e texto. Sem usar a instrução 'On Error Resume Next', você obteria dois erros. Tenha o cuidado de usar a instrução 'On Error Resume Next' apenas quando tiver certeza de que ignorar erros está OK.
Raiz quadrada 2
Adicione as seguintes linhas de código ao botão de comando 'Raiz quadrada 2'.
1. O mesmo programa que Square Root 1, mas substitua 'On Error Resume Next' por:
Em erro GoTo InvalidValue:
Nota: InvalidValue é escolhido aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de referir-se a esse nome no restante do código.
2. Fora do loop For Each Next, primeiro adicione a seguinte linha de código:
Sair do Sub
Sem esta linha, o resto do código (código de erro) será executado, mesmo que não haja nenhum erro!
3. O Excel VBA continua a execução na linha começando com 'InvalidValue:' ao encontrar um erro (não se esqueça dos dois pontos). Adicione a seguinte linha de código:
Valor inválido:
4. Mantemos nosso código de erro simples por enquanto. Exibimos um MsgBox com algum texto e o endereço da célula onde ocorreu o erro.
MsgBox "não é possível calcular a raiz quadrada na célula" e célula.Endereço
5. Adicione a seguinte linha para instruir o Excel VBA a retomar a execução após executar o código de erro.
Retomar a seguir
6. Saia do Editor do Visual Basic e teste o programa.
Resultado: