Como substituir o seguinte script para procurar por valores e não por strings?

0

Eu tenho a macro a seguir, que percorre cada célula em uma coluna especificada. Se a célula contiver um valor da string #VALUE! , ela será substituída pela média de duas células acima e abaixo dela (que contêm inteiros).

Sub Checker()
Dim Qty As Range

For Each Qty In Range("A1:A5").Cells

    If InStr(1, (Qty.Text), "#VALUE!") Then
    Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"

    End If
Next
End Sub

Então:

  A                  A
1  10              1  10
2  10              2  10
3  #VALUE!   ->    3  10
4  10              4  10
5  10              5  10

Agora, gostaria que a macro pesquisasse 0 em vez de #VALUE! .

  A                  A
1  10              1  10
2  10              2  10
3   0        ->    3  10
4  10              4  10
5  10              5  10

O que eu preciso substituir no código?

A simples substituição de "#VALUE!" para "0" não funciona. Meu palpite é usar outra função em vez de InStr , mas não estou muito familiarizado com o VBA.

    
por Joseph 18.02.2016 / 13:16

1 resposta

2
If InStr(1, (Qty.Text), "0") Then

irá verificar se existe um "0" em qualquer lugar da string que possa não ser o que você deseja. Experimente

If Qty.Text = "0" Then

ou

If StrComp(Qty.Text, "0") = 0 Then

para verificar se a string completa é "0".

A comparação da sequência completa também seria uma solução melhor para o "#VALUE!" verifique.

    
por 18.02.2016 / 13:32