Microsoft Excel - vba

Microsoft Excel - vba

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:

insira a descrição da imagem aqui

   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:

insira a descrição da imagem aqui

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.

informação relacionada