Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#24006
Olá pessoal do fórum, sou novo por aqui e gostaria de uma ajuda.
Não entendo muito (quase nada) de VBA, mas estou usando o recurso de gravar macro e encontrei um problema.
Tenho uma planilha do Excel e na aba EST uma tabela com dados de estoque (código, nome de produto, quantidade, marca, fornecedor, etc).
A macro que gravei filtra a tabela que mencionei acima de acordo com o valor inserido na célula L8 da aba ATP, por exemplo, se em L8 eu tiver digitado o valor 7, ele filtra a tabela da EST, coluna "Código", valor 7. O problema é que na mesma macro eu copio uma linha da aba ATP e quero colar ela na linha filtrada com o valor variável da célula L8 da ATP.
Acontece que o Excel não entende que é pra colar na linha do código definido por L8. Ele cola na referência direta, por exemplo, na linha 7:7 da EST, ou seja, fica sempre colando na mesma linha que gravei a macro. Vou colocar um trecho do código.
Se alguém puder me ajudar ficarei muito grato.
Código: Selecionar todos
Sub filtra_estoque()
'
' filtra_estoque Macro
'
'
    ActiveSheet.Range("$B$3:$R$14").AutoFilter Field:=1, Criteria1:=Sheets("ATP").Range("L8").Value  (aqui ela filtra de acordo com o valor digitado em L8)
    ActiveWorkbook.Save
End Sub
Sub atualiza_prod()
'
' atualiza_prod Macro
'
'
    ActiveWindow.DisplayHeadings = True
    ActiveSheet.Unprotect
    Sheets("EST").Select
    ActiveWindow.DisplayHeadings = True
    ActiveSheet.Unprotect
    ActiveWorkbook.Save
    Application.Run "'Fluxo de Caixa e Controle de Estoque.xlsm'!filtra_estoque"
    ActiveWorkbook.Save
    Sheets("ATP").Select
    ActiveWindow.SmallScroll Down:=39
    Rows("52:52").Select
    Selection.Copy
    Rows("54:54").Select (aqui eu copio a linha 54 da aba ATP)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("54:54").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("EST").Select
    ActiveWindow.SmallScroll Down:=-12
    Rows("7:7").Select (aqui está o problema. Ele cola na linha 7 da aba EST, sempre na linha 7. Preciso que cole na linha definida pelo código digitado em L8 da aba ATP)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B7").Select
    ActiveSheet.Range("$B$3:$R$14").AutoFilter Field:=1
    Range("F4").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("F4:F6")
    Range("F4:F6").Select
    Selection.AutoFill Destination:=Range("F4:F7")
    Range("F4:F7").Select
    Selection.AutoFill Destination:=Range("F4:F3219")
    Range("F4:F3219").Select
    Range("F8").Select
    Sheets("ATP").Select
    ActiveWindow.SmallScroll Down:=-63
    Range("L13").Select
    Selection.ClearContents
    Range("L15:M15").Select
    Selection.ClearContents
    Range("L17:M17").Select
    Selection.ClearContents
    Range("L19:N19").Select
    Selection.ClearContents
    Range("L21").Select
    Selection.ClearContents
    Range("L23").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=6
    Range("L25").Select
    Selection.ClearContents
    Range("L27").Select
    Selection.ClearContents
    Range("L29:M29").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=6
    Range("L31:N32").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-30
    Range("L8").Select
    ActiveWindow.SmallScroll Down:=-9
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    ActiveWindow.DisplayHeadings = False
    Sheets("EST").Select
    Range("B4").Select
    ActiveWindow.DisplayHeadings = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    Sheets("ATP").Select
    ActiveWorkbook.Save
End Sub
#24620
Bom, como o companheiro acima disse, para entender melhor seria preciso um modelo mas se eu entendi correto, o número da linha que os dados devem ser colados estão em L8.
Se for isso vc poderia fazer algo do tipo:

Dim linha As Integer
linha = Range("L8").Value
Range(Cells(linha, 1), Cells(linha, 200)).Select

Esse trecho seleciona o lugar onde devem ser colados os dados. Perceba que eu defini a linha como sendo o valor de uma célula, assim o valor que estiver na célula em questão será o número da linha selecionado. No último trecho, os números 1 e 200 se referem às colunas e vc tbm pode modificar de acordo com suas necessidades.
Dessa forma vc poderá tornar dinâmico o lugar onde os dados devem ser colados. Mas atenção, este trecho deve ser colado no ponto do código onde é feita a seleção das células em que vão ser colados os dados.

Espero ter contribuído.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord