Notifications
Clear all

Copiar e colar (valores e formatos) para outra Aba ...

4 Posts
1 Usuários
0 Reactions
1,142 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Q raiva não saber adaptar uma simples Macro, que já tenho, k ...
.
Gostaria que o nome da Aba "janeiro-15" assumisse o mês e ano da célula M15, e que, ao clicar no botão "copiar e colar (valores e formatos) ela fosse copiada para a Aba "acumulado" ... mas, que o mês atual fique sempre em cima na Aba acumulado - com 1,2,3 linhas separando os meses!!!
.
Ou seja, a Aba acumulado será um histórico "infinito" ... se durar até 2020 já está ótimo kk!!
.
Ou seja 2, usarei a Aba janeiro-15 todo mês, e, ao clicar no botão, seja copiado A1:BJ108 para a Aba acumulado !!!
.
Se aqui não ficou claro, na planilha tem as explicações !!!
.
Desde já agradeço a ajuda!!!
.

 
Postado : 01/01/2015 3:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Copa

VBA também não é minha praia.

O que eu fiz foi mover teu tópico para VBA & Macros, já que o assunto da dúvida é sobre VBA.

[]s

 
Postado : 01/01/2015 4:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom Dia Copa, talvez seja resquícios da passagem de ano, então nao sei se entendi corretamente
Veja se lhe auxilia:
a rotina abaixo é para verificar se o nome daplanilha está de acordo com a celula m15, se não altera.

Private Sub Worksheet_Change(ByVal Target As Range)
'Declaração de variaveis
Dim nMeses(12) As String, nPlan As String
'Carregando os meses do ano
nMeses(1) = "Janeiro"
nMeses(2) = "Fevereiro"
nMeses(3) = "Março"
nMeses(4) = "Abril"
nMeses(5) = "Maio"
nMeses(6) = "Junho"
nMeses(7) = "Julho"
nMeses(8) = "Agosto"
nMeses(9) = "Setembro"
nMeses(10) = "Outubro"
nMeses(11) = "Novembro"
nMeses(12) = "Dezembro"
If Target.Address = "$M$15" Then
'Montando nome da Planilha
nPlan = nMeses(Month(ActiveSheet.Range("M15"))) & "-" & Format(Year(ActiveSheet.Range("M15")), "yy")
'Verifica se nome é igual ao montado, altera se necessario
If ActiveSheet.Name <> nPlan Then ActiveSheet.Name = nPlan
End If
End Sub

A rotina abaixo, irá copias a range desejada e incluir na primeira linha da planilha acumulado

Sub CopiaRange()
Dim sh As Shape
Application.ScreenUpdating = False
'Seleciona e coia range desejada
Range("A1:BJ108").Select
Selection.Copy
'Seleciona planilha para colar dados copiados
Sheets("acumulado").Select
Rows("1:1").Select
'Insere as linhas copiadas, assim a ultima copia fica sempre na primeira linha
Selection.Insert Shift:=xlDown
'"Apaga" as formulas, mantendo apenas os dados
Range("A1:BJ108").Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                            :=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
'Apaga o botão de macro na planilha acumulado
With Sheets("Acumulado")
    For Each sh In .Shapes
        If sh.Name Like "Button*" Then sh.Delete
    Next
End With
'"Volta" à planilha inicial
Sheets(1).Select
Range("A1").Select
End Sub
 
Postado : 02/01/2015 8:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Reinaldo, perfeito!!! ... Valeu!!! ... Muito obrigado!!!

 
Postado : 02/01/2015 9:02 am