Como criar macro para pesquisar, copiar e colar?

Questão

Aqui está o que eu quero fazer. Eu tenho uma planilha com dados do cliente por linha e também tenho uma planilha com uma fatura que desejo preencher automaticamente com as informações do cliente da planilha de dados.

Eu gostaria de construir uma macro que irá procurar o número de referência que eu digo e copiar a linha com os dados do cliente para a planilha de fatura onde eu vou puxar cada campo necessário para a fatura (o que eu vou fazer por conta própria).

Eu construí uma macro que pesquisa o número de referência, seleciona a linha e copia e cola a linha na outra planilha. Meu problema é quando eu vou colocar um novo número de referência na minha pequena caixa de pesquisa que eu fiz ainda pesquisa o número de referência eu configurar a macro com e referencia apenas a linha inicial eu configurar a macro com dados :(

Eu gostaria de poder dizer para:

Procure por um número de referência, que eu copio o número de referência e o colo no find na outra planilha e, em seguida, estou pressionando o espaço de deslocamento para selecionar e copiar os dados e colá-los na outra planilha. Ele faz referência aos intervalos iniciais e ao número de referência.

Por favor ajude.

Aqui está o que eu tenho até agora. Eu sou meio que um noob. Toda a rolagem ativa no final é eu rolando e colando a macro sob as minhas faturas, para que eu possa puxar os dados mais tarde.

 Range ("AM5: AS5"). Selecione ActiveCell.FormulaR1C1 = "33629" Sheets ("Sheet2"). Selecione Cells.Find (What: = "33629", After: = ActiveCell, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False) .Ativar Linhas ("6: 6"). Selecione Intervalo ("C6"). Ativar Selection.Copy Sheets ("Sheet1 (2) "). Selecione ActiveWindow.SmallScroll Down: = 12 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 15 ActiveWindow.ScrollRow = 16 ActiveWindow.ScrollRow = 17 ActiveWindow.ScrollRow = 18 ActiveWindow.ScrollRow = 19 ActiveWindow.ScrollRow = 20 ActiveWindow .ScrollRow = 21 ActiveWindow.ScrollRow = 22 ActiveWindow.ScrollRow = 23 ActiveWindow.ScrollRow = 24 ActiveWindow.ScrollRow = 25 ActiveWindow.ScrollRow = 26 ActiveWindow.ScrollRow = 27 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 32 ActiveWindow .ScrollRow = 33 ActiveWindow.ScrollRow = 36 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 40 ActiveWindow.ScrollRow = 42 Ato iveWindow.ScrollRow = 45 ActiveWindow.ScrollRow = 47 ActiveWindow.ScrollRow = 49 ActiveWindow.ScrollRow = 51 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 54 ActiveWindow.ScrollRow = 55 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 57 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 67 ActiveWindow.ScrollRow = 68 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 70 ActiveWindow.ScrollRow = 71 ActiveWindow.ScrollRow = 72 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 74 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 78 ActiveWindow.ScrollRow = 79 ActiveWindow.ScrollRow = 80 ActiveWindow.ScrollRow = 82 ActiveWindow.ScrollRow = 83 ActiveWindow.ScrollRow = 84 ActiveWindow.ScrollRow = 85 ActiveWindow.ScrollRow = 87 ActiveWindow.ScrollRow = 88 ActiveWindow.ScrollRow = 89 ActiveWindow.ScrollRow = 90 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 93 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 95 ActiveWindow.ScrollRow = 96 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 98 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 101 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 104 ActiveWindow.ScrollRow = 106 ActiveWindow.ScrollRow = 107 ActiveWindow.ScrollRow = 109 ActiveWindow.ScrollRow = 111 ActiveWindow.ScrollRow = 112 ActiveWindow.ScrollRow = 113 ActiveWindow.ScrollRow = 114 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 117 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 119 ActiveWindow.ScrollRow = 120 ActiveWindow.ScrollRow = 122 ActiveWindow.ScrollRow = 124 ActiveWindow.ScrollRow = 125 ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 127 ActiveWindow.ScrollRow = 128 ActiveWindow.ScrollRow = 129 ActiveWindow.ScrollR ow = 130 ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollRow = 132 ActiveWindow.ScrollRow = 133 ActiveWindow.ScrollRow = 134 ActiveWindow.ScrollRow = 135 ActiveWindow.ScrollRow = 136 ActiveWindow.ScrollRow = 137 ActiveWindow.ScrollRow = 139 ActiveWindow.ScrollRow = 141 ActiveWindow. ScrollRow = 142 ActiveWindow.ScrollRow = 143 ActiveWindow.ScrollRow = 144 ActiveWindow.ScrollRow = 145 ActiveWindow.ScrollRow = 146 ActiveWindow.ScrollRow = 147 ActiveWindow.ScrollRow = 148 ActiveWindow.ScrollRow = 149 ActiveWindow.ScrollRow = 150 ActiveWindow.ScrollRow = 151 ActiveWindow. ScrollRow = 152 ActiveWindow.ScrollRow = 153 ActiveWindow.ScrollRow = 154 ActiveWindow.ScrollRow = 155 ActiveWindow.ScrollRow = 156 ActiveWindow.ScrollRow = 157 ActiveWindow.ScrollRow = 158 ActiveWindow.ScrollRow = 159 ActiveWindow.ScrollRow = 160 intervalo ("A194"). Selecione ActiveSheet.Paste End Sub 

Solução

A lógica completa não está clara. Acabei de "modificar" sua macro para que você possa entender as alterações (embora a macro inteira possa me ajustar muito).

quando você iniciar a macro, a macro perguntará qual número você deseja pesquisar digite o número da fatura e; .g. 33629

Mas eu tenho um problema ok. você encontra 33629 na planilha2 e copia a fileira inteira

goto sheet1 (2) e cole a linha acima na linha onde a primeira célula é A194 na segunda folha. OK até agora.

Mas quando você seleciona outro número para o qual deseja copiar a linha na planilha1 (2). isso não está claro.

Eu sugiro que você mantenha sua pasta de trabalho original em algum lugar seguro para que ela possa ser recuperada.

em seguida, execute a macro e veja se está tudo bem. Se estiver ok, então responda a minha sugestão em negrito undelined acima. a macro ainda pode ser mais modificada.

Na macro eu coloquei um único apóstrofo no início de algumas linhas para que eles não sejam operáveis. Você pode excluir essas linhas depois de entender a macro

a macro na presente fase é

 Sub TEST () Dim j Como Double j = InputBox ("digite o número que você deseja, por exemplo, 33629") 'Range ("AM5: AS5"). Selecione' ActiveCell.FormulaR1C1 = "33629" Sheets ("Sheet2"). Select Cells .Find (O que: = j, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False) .Ativar 'Linhas ("6: 6" ) .Selecione 'Range ("C6"). Ative' Selection.Copy ActiveCell.EntireRow.Copy Worksheets ("sheet1 (2)"). Selecione Range ("A194"). PasteSpecial End Sub 

Nota

Graças a venkat1926 por esta dica no fórum.

Artigo Anterior Próximo Artigo

Principais Dicas