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.
Por mineiro99
Posts
#71690
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
Por osvaldomp
#71697
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, ...?
Por osvaldomp
#71706
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
Por mineiro99
Posts
#71723
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
Por osvaldomp
#71724
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"?
Por mineiro99
Posts
#71732
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.
Por osvaldomp
#71736
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
Por mineiro99
Posts
#71742
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
Por osvaldomp
#71749
Código: Selecionar todos
 If Target.Column <> 3 Or Target.Text <> "NC" And Target.Text <> "PC" Then Exit Sub
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