Página 1 de 1

Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 23 Nov 2021 às 13:25
por junior3d
Boa tarde. Amigos tenho uma dúvida quanto à programação no excel.

Possuo uma tabela com 3 colunas (Data, Atividade, Obs). Como fazer quando eu alterar a coluna Atividade ou a coluna Observação, fazer com que a linha inteira suba para a primeira posição e a célula com a Data receba a Data do dia?

Me solicitaram isso, para evitar que o usuário dessa planilha tenha que copiar e colar a linha sempre que houver alguma alteração em dos campos. Porque quando há alguma alteração, o registro deve assumir a primeira posição.

Espero ter sido claro..
Abs

Junior

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 23 Nov 2021 às 14:11
por osvaldomp
@
Experimente:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 1 Or Target.Column > 3 Then Exit Sub
 Cells(Target.Row, 1).Resize(, 3).Copy
 Range("A2").Insert Shift:=xlDown
 [A2] = Date
End Sub

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 24 Nov 2021 às 10:28
por junior3d
Perfeito Osvaldo, mas como eu faria para mover a linha e não copiar. Mas está funcionando exatamente como eu queria. Coloquei um botão para ligar e desligar a Macro também pois facilita dependendo da situação.

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 24 Nov 2021 às 10:58
por osvaldomp
Olá, @junior3d .
Desculpe, falha minha pois no título do tópico está claro que é para "mover os dados".

Para mover ao invés de copiar/colar substitua Copy por Cut.

___________________________________________________________________________________________________________

"Coloquei um botão para ligar e desligar a Macro também pois facilita dependendo da situação."
Segue abaixo um código alternativo que poderá ser executado via botão. Selecione qualquer célula da linha que deseja mover para a linha 2 e execute.
Instale uma cópia em um módulo comum (menu Inserir | Módulo); lembrando que caso você utilize este, o anterior deverá ser desativado.
Código: Selecionar todos
Sub MoveDados()
 Cells(ActiveCell.Row, 1).Resize(, 3).Cut
 Range("A2").Insert Shift:=xlDown
 [A2] = Date
End Sub

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 24 Nov 2021 às 11:25
por junior3d
Perfeito, finalizei com sua ajuda.

Ainda coloquei essa frescura para desselecionar a linha que recebeu a ação:
Código: Selecionar todos
Range("A1").Select
Application.CutCopyMode = False

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 25 Nov 2021 às 09:14
por junior3d
@osvaldomp só um detalhe. No windows tá tudo ok, mas fui abrir o arquivo no Excel do Mac e ele acusa erro como eu mostro na imagem. Saberia a razão?
Imagem

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 25 Nov 2021 às 09:40
por osvaldomp
Cara, nesse caso eu não consigo lhe ajudar.

Uma ideia seria gravar uma macro e então verificar a sintaxe no código gravado.

Outra seria buscar um fórum especializado em Excel para MAC.

Re: Como mover os dados de uma linha inteira para o início ao alterar o conteúdo de uma célula?

Enviado: 25 Nov 2021 às 10:38
por junior3d
osvaldomp escreveu: 25 Nov 2021 às 09:40 Cara, nesse caso eu não consigo lhe ajudar.

Uma ideia seria gravar uma macro e então verificar a sintaxe no código gravado.

Outra seria buscar um fórum especializado em Excel para MAC.
Boa ideia. Esqueço essa facilidade de gravar...