Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por magnocampos 15 Ago 2019 às 17:22
Membro Novato
Mensagens: 6
Reputação: 1
#46919
Pessoa, estou tentando bolar um código VBA para uma planilha de controle de estoque, porém com algumas dificuldades já que entendo muito pouco do assunto.

Preciso de um código macro para que, em uma tabela, ele veja qual é a linha cuja célula está ativa e limpe o conteúdo de determinadas colunas apenas no que que cruzam essa linha.

MÊS 1 2 3 4
Jan X X X X
Fev X X X X
Mar X X X X
Abr X X X X
Mai X X X X
Jun X X X X
Jul X X X X
Ago X X X X
Set X X X X
Out X X X X

Digamos que a célula C6 esteja ativa, gostaria que o código apagasse apenas o que estivesse na linha 6, colunas B, C, D e E ou seja, restasse apenas a coluna A desta linha preenchida.
Seguindo essa mesma lógica, se a célula ativa for a D11, gostaria que o código apagasse apenas o que estivesse na linha 11, colunas B, C, D e E, ou seja, restase apenas a coluna A desta linha preenchida.
Apenas usuários registrados podem ver ou baixar anexos.
Por eduardogrigull 15 Ago 2019 às 17:52
Membro 2 Estrelas
Mensagens: 158
Reputação: 71
#46920
Olá... Adicione esse código em um módulo, e chame através de botão ou alguma outra coisa...
Código: Selecionar todosSub ApagaLinha()

'Verificar se a célula ativa esta entre as colunas 2 e 5 ALTERAR A GOSTO
If ActiveCell.Column < 2 Or ActiveCell.Column > 5 Then Exit Sub

'Excluir
Plan1.Range(Plan1.Cells(ActiveCell.Row, 2), Plan1.Cells(ActiveCell.Row, 5)).ClearContents

End Sub
Por magnopcampos 15 Ago 2019 às 19:48
Membro 1 Estrela
Mensagens: 14
Reputação: 3
#46924
Funcionou! Obrigado.
Mas, pensando em aplicar este código em uma outra planilha onde as as células que eu quero que sejam apagadas na linha ativa se refiram não a colunas sequenciais, 2 a 5 como no modelo, mas sim a 2, 4 e 6 por exemplo, como ficaria?
Por eduardogrigull 15 Ago 2019 às 20:44
Membro 2 Estrelas
Mensagens: 158
Reputação: 71
#46927
Caso esteja falando das linhas que precisam estar selecionadas pro código funcionar, ficaria assim:
Código: Selecionar todosIf ActiveCell.Column = 2 Or ActiveCell.Column = 4 or ActiveCell.Column = 6 Then Exit Sub

Caso esteja falando das linhas que serao apagadas, ai ficaria assim:
Código: Selecionar todosPlan1.Cells(AtiveCell.Row,2).ClearContents
Plan1.Cells(AtiveCell.Row,4).ClearContents
Plan1.Cells(AtiveCell.Row,5).ClearContents
Por osvaldomp 15 Ago 2019 às 20:45
Membro 5 Estrelas
Mensagens: 1434
Reputação: 712
#46928
Código: Selecionar todosSub LimpaCélulas()
 Union(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 4), Cells(ActiveCell.Row, 6)) = ""
End Sub
Por magnopcampos 15 Ago 2019 às 22:06
Membro 1 Estrela
Mensagens: 14
Reputação: 3
#46930
Obrigado @osvaldomp e eduardogrigull, funcionando perfeitamente como eu precisava agora! Estava quebrando a cabeça, todos os códigos que uso geralmente consigo online e adapto, mas este não tinha achado ainda, obrigado!