Notifications
Clear all

adicionar varias colunas sem loop

3 Posts
1 Usuários
0 Reactions
663 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

essa linha de comando adiciona varias colunas

Columns("AB:AI").EntireColumn.Insert

Como posso fazer a mesma coisa com variáveis e os números das colunas?

ci1 = Range("Z1").Column
Columns(ci1 + 2, ci1 + n).EntireColumn.Insert

Atualmente uso assim mas demora quando são muitas colunas

For i = 1 To n
Columns(ci1 + 2).EntireColumn.Insert
Next

A macro completa Se tiver como reduzir o tamanho aceito opinião

Sub colunasd()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Limit
Sa
c = Range(Ci & "6", Cf & "6").Columns.Count
k = Range("u1").Value
ci1 = Range(Ci & "1").Column                                       '=numero da coluna ci em numero
cf1 = Range(Cf & "1").Column                                       '=numero da coluna cf em numero

If c < k Then
n = k - c
For i = 1 To n
Columns(ci1 + 2).EntireColumn.Insert
Next
Range(Cells(6, ci1), Cells(9, ci1 + 1)).AutoFill Destination:=Range(Cells(6, ci1), Cells(9, cf1 + n)), Type:=xlFillDefault '
End If

If c > k Then
n = c - k
For i = 1 To n
Columns(ci1 + 2).EntireColumn.Delete
Next
Range(Cells(6, ci1), Cells(9, ci1 + 1)).AutoFill Destination:=Range(Cells(6, ci1), Cells(9, cf1 - n)), Type:=xlFillDefault '
End If

 Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Postado : 21/03/2014 6:38 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

bem, alguns minutos depois "quase consegui"

Range(Cells(6, ci1 + 2), Cells(1, cf1 + (n - 3))).EntireColumn.Insert

adiciona as colunas que eu quero
mas apareceu um problema que loop e por seleção não me apresenta,

bem,
eu tenho formulas que indicam para as macros o inicio e o fim dos setores

=SUBSTITUIR(ENDEREÇO(1;COL(CB1);4);1;"")

então quando um setor muda de tamanho a macro acompanha pq a célula para qual a formula aponta muda de posição
mas com essa linha de comando a célula que aponta o final do setor não sai do lugar .
alguma maneira de contornar isso?

 
Postado : 21/03/2014 7:18 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Desculpa tinha sido erro meu

Range(Cells(6, ci1 + 2), Cells(1, ci1 + (n + 1))).EntireColumn.Insert

Range(Cells(6, ci1 + 2), Cells(1, cf1 + (n - 3))).EntireColumn.Insert

Cf é a ultima coluna do setor então os valores não batiam

e a formula é chamada por outra macro que define as posições então chamando a macro seguidamente dava falha na atualização da formula e execução da macro pq as variáveis não eram atualizadas.

desculpe colocar um post assim

 
Postado : 21/03/2014 8:46 pm