Página 1 de 1
Mesclar linha após o último valor
Enviado: 11 Jul 2022 às 18:46
por mineiro99
Gostaria da ajuda de vocês para resolver a seguinte questão. Preciso que a linha inserida abaixo da linha com NC seja mesclada, da coluna D até J, com alinhamento à esquerda. Agradeço a ajuda.
Sub Inserir_linha()
For Each cell In Range("c2:c120")
If cell.Value = "NC" Then
cell.Offset(1).EntireRow.Insert
cell.Offset(1, 0).ClearFormats
cell.Offset(1, 1).Select
End If
Next cell
End Sub
Re: Mesclar linha após o último valor
Enviado: 12 Jul 2022 às 11:01
por osvaldomp
Dependendo da quantidade de células com o texto "NC" talvez com a aplicação do Auto Filtro seja possível reduzir a quantidade de células em que é aplicado o Loop.
Comumente quantas vezes aproximadamente aparece "NC" no intervalo C2:C120 ? Dez células, vinte, cinquenta, cem, ...?
Re: Mesclar linha após o último valor
Enviado: 12 Jul 2022 às 14:55
por mineiro99
Boa tarde!
Osvaldo, no intervalo C2:C120 podem aparcer mais de cem "NC".
Obrigado.
Re: Mesclar linha após o último valor
Enviado: 12 Jul 2022 às 20:23
por osvaldomp
Experimente o código abaixo.
Não fiz a versão com Auto Filtro pois acima de 20 ou 30 células com"NC" não me parece que seria mais rápida a execução.
Não coloquei no código o comando para alinhamento horizontal à esquerda pois no teste que fiz aqui não foi necessário. Veja como fica aí.
Código: Selecionar todosSub InsereLinhasMesclaCélulas()
Dim k As Long
Application.ScreenUpdating = False
For k = Cells(Rows.Count, 3).End(3).Row To 2 Step -1
If Cells(k, 3) = "NC" Then
Rows(k + 1).Insert
Cells(k + 1, 4).Resize(, 7).Merge
End If
Next k
End Sub
Re: Mesclar linha após o último valor
Enviado: 13 Jul 2022 às 18:19
por mineiro99
Osvaldo funcionou perfeitamente. Entretanto, verifiquei que a macro ao se executada mais de uma vez ela continua inserindo novas linhas. É possível impedir que a macro insira mais uma linha embaixo da linha que já foi inserida anteriormente? Ou seja, se a macro rodar mais de uma vez, ela identifica as células com "NC" que já tiveram uma linha inserida abaixo e não insere mais nenhuma linha.
Obrigado
Re: Mesclar linha após o último valor
Enviado: 13 Jul 2022 às 20:37
por osvaldomp
mineiro99 escreveu: ↑13 Jul 2022 às 18:19
... a macro ao se executada mais de uma vez ela continua inserindo novas linhas.
Curiosidade: a macro foi elaborada para inserir uma linha e mesclar células na linha inserida, aí você executa a macro, portanto o trabalho está feito. Por quais motivos você executa a macro novamente se o trabalho já está feito ?
É possível impedir que a macro insira mais uma linha embaixo da linha que já foi inserida anteriormente?
Ao ser executada mais vezes a macro não insere linha embaixo da que foi inserida antes, a macro insere uma linha acima da linha que foi inserida antes.
Ou seja, se a macro rodar mais de uma vez, ela identifica as células com "NC" que já tiveram uma linha inserida abaixo e não insere mais nenhuma linha.
E qual o critério que você sugere para a macro saber se já foi inserida uma linha abaixo de "NC"?
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 09:47
por mineiro99
Bom dia Osvaldo.
A ideia é que ao ir respondendo as questões e atribuir o "NC", eu já insira os comentários a respeito. Como pode ter mais de 100 questões a serem respondidas, não faz muito sentido atribuir notas a todas, rodar a macro e ir preenchendo aquelas com "NC". O ideal é que, ao atribuir o "NC", e a macro inserir a linha abaixo, eu já ir inserindo os comentários.
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 11:04
por osvaldomp
mineiro99 escreveu: ↑14 Jul 2022 às 09:47
O ideal é que, ao atribuir o "NC", ... a macro inserir a linha abaixo, ...
Com base no seu comentário acima o caminho que você escolheu antes é inadequado.
Experimente este outro caminho: desconsidere o código que passei antes e cole uma cópia do código abaixo no módulo da planilha de interesse.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Or Target.Text <> "NC" Then Exit Sub
Rows(Target.Row + 1).Insert
Cells(Target.Row + 1, 4).Resize(, 7).Merge
End Sub
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 12:05
por mineiro99
Osvaldo, ficou perfeito!
É exatamente o que preciso.
Muito obrigado!
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 12:13
por mineiro99
Um último pedido:
Se além de "NC" eu quiser incluir também "PC" para abrir uma linha abaixo, como faço essa inclusão? Tentei a opção abaixo, mas não deu certo.
If Target.Column <> 3 Or Target.Text <> "NC" Then Or Target.Text <> "NC" Then Exit Sub
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 16:23
por osvaldomp
Código: Selecionar todos If Target.Column <> 3 Or Target.Text <> "NC" And Target.Text <> "PC" Then Exit Sub
Re: Mesclar linha após o último valor
Enviado: 14 Jul 2022 às 18:25
por mineiro99
Perfeito!
Muito obrigado Osvaldo!
Abraço