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 todos
Sub 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 todos
Private 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