Eu estou tentando criar uma macro do excel que insere automaticamente duas colunas antes da coluna D ... O procedimento funcionou bem quando eu criei, aqui está:
Sub AddColumns()
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Mas quando eu abro minha planilha e a testo, tudomeus dados são empurrados para a direita sobre 11 colunas e 11 colunas em branco são inseridas. Eu tenho certeza que isso tem que com algumas linhas com 11 colunas mescladas. As instruções Select seleciona as 11 primeiras colunas A-K.
Como faço para corrigir isso?
Respostas:
4 para resposta № 1Isso acontece por causa da linha Columns("D:D").Select
. Se você não selecionar este código de colunas, funcionará bem.
Use este em vez disso:
With Range("D:D")
.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End With
E, Como evitar o uso de declarações Select / Active:)
2 para resposta № 2
Você não usa selecione para fazer isso
Sub AddColumns()
Columns("D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
1 para resposta № 3
Se você selecionar a coluna que contém células mescladas, a seleção será expandida para todas as colunas que cruzarem essas células mescladas. No seu caso, 11 colunas são selecionadas.
Além disso, o Selection.Insert insere quantas colunas forem selecionadas: Voila.
Portanto, verifique se você não tem células mescladas na sua seleção.