Bom dia,
Estou tentando fazer um macro que substitua certo valor.
Ele vai procurar este valor em outra tabela e retornar o valor que correspondente à ele.
Para isto, tenho duas planilhas (Plan1 e Plan2).
Na Plan1 tenho uma lista com 2 colunas. Em uma coluna estão os valores que poderão ser inseridos, e na coluna do lado estão os valores para os quais os valores previamente inseridos serão corrigidos.
E na Plan2 tenho a planilha onde entrarei com os valores e eles serão corrigidos conforme a tabela na Plan1.
Seguem 2 imagens (Plan1 e Plan2, respectivamente) para explicar melhor estas planilhas.
Caso não tenha ficado claro: eu insiro um valor na coluna A da Plan2; este valor é procurado na coluna A da Plan2 e retornado o valor ao lado na Coluna B desta Plan2.
Ela funciona corretamente com valores que estejam configurados. Se é procurado algum valor e não encontrado nenhum, dá o seguinte erro:
Erro em tempo de execução ‘1004’:
Erro de definição de aplicativo ou de definição de objeto.
O código é o seguinte:
Public ILin As Long 'Variável de índice da qtde de valores
Public ILast As Long 'Variável que grava a qtde total de valores preenchidos
'Public ILast_final As Long 'Variável que grava a qtde total de valores ajustados preenchidos
Dim valor(1 To 4992) As String 'Variável que grava o valor
Function Conta_Linhas_Valor(area As Range) As Long 'Conta as linhas preenchidas em certa coluna
Dim celula As Range, Total_Linhas_Diam As Long
Total_Linhas_Diam = 0
For Each celula In area
If celula <> "" Then
Total_Linhas_Valor = Total_Linhas_Valor + 1
End If
Next
Conta_Linhas_Valor = Total_Linhas_Valor
End Function
Sub Substituir_valor() 'Substituir valores
ILast = Conta_Linhas_Valor(Worksheets("Plan2").Range("A8:A5000")) 'Conta as linhas preenchidas na coluna "Valor"
'ILast_final = Conta_Linhas_Valor(Worksheets("Plan2").Range("B8:B5000")) 'Conta as linhas preenchidas na coluna final Valor final
Set intervalo_ajuste = Worksheets("Plan1").Range("A1:B50") 'Invervalo para ajuste
For ILin = 1 To ILast
'On Error Resume Next 'prossegue a leitura caso algum diâmetro esteja mal inserido
valor(ILin) = Application.WorksheetFunction.VLookup(Cells(ILin + 7, "A").Value, intervalo_ajuste, 2, False)
Worksheets("Plan2").Cells(ILin + 7, "B") = valor(ILin)
Next ILin
End Sub
Que forma de controle poderia ser feito para:
Postado : 03/05/2017 6:33 am