
Sou novo no VBA e estava tentando escrever código para pesquisar 5 nomes (na planilha2), na planilha1 com poucos nomes, usando For Loop
.
Mas ao executar isso, o código dá erro,
variável de objeto ou com variável de bloco não definida
Como faço para me livrar disso?
Sub find()
Sheets("sheet2").Activate
For x = 1 To 5
Cells(x, 1).Select
var1 = Selection.Copy
Sheets("sheet1").Activate
Dim search As Range
Set search = range("a1:f9").find(var1).Activate
Next
End Sub
Responder1
Você pode usar este código VBA modificado para ajudá-lo a combinar e retornar nomes entre duas planilhas.
Antes de executar a macro:
Sub QuickSearch()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
Set rng1 = ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))
With rng1.Offset(0, 1)
.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Sheet10!C[-1]:C,1,FALSE),"""")"
.Value = .Value
End With
End Sub
- Você pode inserir este código com qualquer uma das Planilhas como Módulo Padrão.
Depois de executar a macro:
Observação
ws2.Range(ws2.[a2], ws2.Cells(Rows.Count, "A").End(xlUp))
- Nesta linha de código
[a2]
(referência de célula) e"A"
(nome da coluna), são editáveis.
Responder2
Selection.Copy
é umobjeto, então o comando
var1 = Selection.Copy
produz seu erro - tem que ser
Set var1 = Selection.Copy
Mas não é o que você queria - você queriao conteúdo (texto) da seleção em sua variávelvar1
.
Então use
var1 = Selection.Text
em vez de.