Notifications
Clear all

Código para mudar uma referência de lugar

4 Posts
2 Usuários
0 Reactions
490 Visualizações
(@cbvarruda)
Posts: 0
New Member
Topic starter
 

Boa tarde galera!

Estou com uma planilha que busca algumas referências, as copia e as insere como um novo mês!
Acontece que sempre que adiciono um mês, tenho que mudar as referências manualmente, deslocando elas algumas colunas para frente, as colocando no novo mês!

Preciso de um código que troque as colunas da referência automaticamente.

O que tenho até agora é (exemplo):

Application.Goto Reference:="Último_mês_2015"
ActiveWorkbook.Names("Último_mês_2015").RefersToR1C1 = "=C[4],C[5],C[6],C[7]"

Application.Goto Reference:="Último_mês_2016"
ActiveWorkbook.Names("Último_mês_2016").RefersToR1C1 = "=C[4],C[5],C[6],C[7]"

Porém quando rodo as duas mudanças em sequência, a de 2015 vai para o mesmo local que a de 2016.

Alguém sabe como resolver?

 
Postado : 14/04/2016 11:38 am
(@mprudencio)
Posts: 0
New Member
 

Salvar o arquivo com novo nome e apagar os dados a cada novo mes não resolve????????

Se nao disponibilize seu arquivo.

 
Postado : 14/04/2016 2:02 pm
(@cbvarruda)
Posts: 0
New Member
Topic starter
 

Olá Marcelo,

Essa planilha é de acompanhamento anual, preciso acrescentar os meses.

Infelizmente não tenho acesso a sites de compartilhamento aqui no trabalho, para conseguir disponibilizar o arquivo.

A planilha é para comparação de despesas, tendo várias linhas de itens e colunas com períodos e comparações.
A planilha tem os meses de 2015 e 2016 (até o mês passado, agora o último mês é Março. No próximo mês terei que acrescentar Abril), ela faz comparação de resultados com o ano anterior e mês anterior.

Cada referência da planilha tem 4 colunas.

Segue código completo, para conseguir ver o que ele faz:

Sub Inserir_novo_mês()
'
' Inserir_novo_mês Macro
' Copia e insere as colunas do último mês'
'
        
   Dim resultado As VbMsgBoxResult
    resultado = MsgBox("Tem certeza que deseja adicionar um mês?", vbYesNo, "Adicionar um mês!")
    If resultado = vbYes Then
    
    Application.Calculation = xlCalculationManual
    
        Application.Goto Reference:="Último_mês_2015"
        Selection.Copy
        Application.Goto Reference:="Fim_2015"
        Selection.Insert Shift:=xlToRight
        Selection.SpecialCells(xlCellTypeConstants, 1).Select
        Selection.ClearContents
        ActiveCell.Value = Date - 390
        
        Application.Goto Reference:="Último_mês_2016"
        Selection.Copy
        Application.Goto Reference:="Fim_2016"
        Selection.Insert Shift:=xlToRight
        Selection.SpecialCells(xlCellTypeConstants, 1).Select
        Selection.ClearContents
        ActiveCell.Value = Date - 30
        
        
        Application.Goto Reference:="Precificação"
        Selection.Copy
        Application.Goto Reference:="Inserir_Precificação"
        Selection.Insert Shift:=xlToRight
        Selection.SpecialCells(xlCellTypeConstants, 1).Select
        Selection.ClearContents
        ActiveCell.Value = Date - 30
        
        
        Application.Goto Reference:="Dirf_Plano"
        Selection.Copy
        Application.Goto Reference:="Inserir_Dirf"
        Selection.Insert Shift:=xlToRight
        ActiveCell.Value = Date - 30
        Application.Goto Reference:="Dirf_Plano"
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
        Application.Goto Reference:="Despesas_Plano"
        Selection.Copy
        Application.Goto Reference:="Inserir_Despesas"
        Selection.Insert Shift:=xlToRight
        ActiveCell.Value = Date - 30
        Application.Goto Reference:="Despesas_Plano"
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
                
        Application.Calculation = xlCalculationAutomatic
    
        MsgBox "Favor verificar se o mês acrescentado em 2015 está nomeado corretamente, se não estiver, basta renomear na primeira linha da primeira coluna do mês", vbInformation, "Renomeie o mês!"
        MsgBox "Sempre que um mês é adionado, cria-se a necessidade de redefinir os parâmetros de procura da Macro, para adicionar o próximo mês, isso pode ser feito indo em Fórmulas> Gerenciador de nomes> Mudando cada nome para o mês adicionado, seguindo o padrão do mês anterior.", vbInformation, "Redefinir parâmetros!"
    
    Else
        MsgBox "Ação cancelada!"
               
    End If
    
    
        
End Sub

O que preciso é que sempre que for adicionado um mês, a referência troque de lugar, indo para o mês adicionado. Assim, ficando pronta para adicionar o próximo mês.

 
Postado : 15/04/2016 10:38 am
(@cbvarruda)
Posts: 0
New Member
Topic starter
 

Opa Marcelo, não tinha encontrado o lugar para anexar o arquivo aqui no site!

Encontrei agora!

Segue anexo.

 
Postado : 15/04/2016 10:46 am