Ir ao conteúdo
  • Cadastre-se

Macro para Inserir Colunas


leandrogalinari

Posts recomendados

Olá pessoal,

Estou desenvolvendo algumas macros para fazer uma atualização global de várias tabelas que extraio de um sistema em apenas 3 bases. O problema é que essas tabelas vem totalmente desconfiguradas, as colunas nem sempre são as mesmas, por isso estou encontrando dificauldade.

Gostaria de uma macro que verifica se determinada coluna está vazia, por exemplo coluna K, se estiver ok, se não estiver preciso selecionar a coluna k e inserir uma coluna no local. Alguém poderia me ajudar?

Um forte abraço!

Link para o comentário
Compartilhar em outros sites

funciona da coluna 1 até a 10 ('A' até 'J'), altere se necessário

Sub InsereColuna()
Dim k As Long
For k = 1 To 10
If Application.CountA(Columns(k)) = 0 Then
Columns(k).EntireColumn.Insert
k = k + 1
End If
Next k
End Sub

Link para o comentário
Compartilhar em outros sites

Muito Obrigado Osvaldo!

Com uma pequena modificação funcionou perfeitamente para mim.

Da forma como você havia feito, a condição estava invertida, na verdade se a coluna estiver vazia ela não deve fazer nada, e se a coluna contiver alguma informação ela deve inserir uma coluna no local. Tirei a variável pois ela inseria várias colunas, sepre que achava uma coluna vazia, e funcionou direitinho!

Sub InsereColuna()
If Application.CountA(Columns(11)) <> 0 Then
Columns(11).EntireColumn.Insert
If Application.CountA(Columns(15)) <> 0 Then
Columns(15).EntireColumn.Insert
End If
End If
End Sub

Tópico Resolvido.

Abraço!

Link para o comentário
Compartilhar em outros sites

Aê, Leandro.

Foi mal! A sua exposição está clara. Não sei porque eu achei que era pra inserir se a coluna estivesse vazia...

O código que você postou só vai verificar a coluna 15 se a coluna 11 tiver conteúdo. Ou seja, se a 15 estiver vazia o código finaliza sem verificar a 11. É isso mesmo que você quer?

Link para o comentário
Compartilhar em outros sites

Então Osvaldo, assim para mim atende. Porque sempre que a coluna 11 está vazia a 15 também está, e é isso que eu preciso para executar outra macro que configura a tabela.

Mas se eu tirar a linha que verifica a coluna 15 de dentro do primeiro If ai ela passa a verificar as duas certo?!

Link para o comentário
Compartilhar em outros sites

Aê, Carlos.

Foi vacilo do tico e teco. Eles entenderam errado...

A correção foi a que o Leandro fez, trocou o '=' pelo '<>'

para detectar coluna não vazia ficaria assim:

If Application.CountA(Columns(k)) <> 0 Then

A minha sugestão foi pra verificar várias colunas em sequência, mas ele só queria verificar 2 colunas, a 15 e a 11.

Para verificar só as 2 colunas independentemente, ou seja, sempre verificar as 2, poderia ser o código abaixo.

Sub InsereColuna()
Dim k As Long
for k = 15 to 11 step -4
If Application.CountA(Columns(k)) <> 0 Then
Columns(k).EntireColumn.Insert
End If
next k
End Sub

Se quiser verificar a coluna 11 antes da 15 é só inverter a linha do 'For', levando em conta que, nessa sequência de verificação, se for inserida coluna junto à coluna 11 a coluna 15 passará a ser 16...

Link para o comentário
Compartilhar em outros sites

Porque sempre que a coluna 11 está vazia a 15 também está, ...

então bastaria verificar apenas uma delas, por ex. a coluna 15:

(insere na 15 primeiro, assim não altera a posição da segunda, que é a 11, se inverter pode não dar certo, não testei)

Sub InsereColuna()
If Application.CountA(Columns(15)) <> 0 Then
Columns(15).EntireColumn.Insert
Columns(11).EntireColumn.Insert
End If
End Sub

Mas se eu tirar a linha que verifica a coluna 15 de dentro do primeiro If ai ela passa a verificar as duas certo?!

correto!

antes de fechar o tópico...

Sub InsereColuna()
If Application.CountA(Columns(15)) <> 0 Then
Range("K:K,O:O").EntireColumn.Insert
End If
End Sub

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...