Boa tarde,
Eu sou novo no forum, e me desculpem se eu abri um tópico que ja foi discutido.
Eu preciso da seguinte ajuda:
Estou criando uma planilha "CONTRATO DE VEICULOS" que contém dados que precisam ser transferidos para outra planilha "DISPONIBILIDADE GERAL" (outro documento do excel).
Seria o seguinte:
Eu preciso copiar os as células E39 e E40 da planilha CONTRATO DE VEICULOS, aba DISPONIBILIDADE DIARIA - abrir a planilha DISPONIBILIDADE GERAL, aba CONSOLIDADO, e colar somente os valores (CTRL+ALT+V) nas células C e D (respectivamente), contudo preciso que seja copiado nas celulas vazias a partir da linha 5.
Eu preciso geral um relatório diário e isso me ajudaria muito!
Desde já Agradeço,
Bruno Olimpio
Adapte:
Sub Colar() Dim ultima As Long ultima = Plan2.Range("A1048576").End(xlUp).Row 'verifica qual a ultima celula preenchida If Plan2.Range("A1").Value = "" Then Else ultima = ultima + 1 End If ActiveCell.Select 'A Célula atual (que você quer copiar) Selection.Copy 'Copiando a célula Sheets("Plan2").Select 'Selecionando a Plan2 Range("A" & ultima).Select 'Selecionando onde você quer colar Selection.PasteSpecial Paste:=xlPasteValues 'colando (só os valores) ;D Application.CutCopyMode = False 'Cancelando a cópia da primeira End Sub
atendeu ?
"Nisto se manifestou o amor de Deus em nós: em haver Deus enviado o seu Filho unigênito ao mundo, para vivermos por meio dEle" 1 Jo 4-9
Boa tarde Vitor,
Eu ainda não consegui fazer que funcione, ficou assim:
Sub Colar()
Dim ultima As Long
ultima = Plan2.Range("E40").End(xlUp).Row
If Plan2.Range("E39").Value = "" Then
Else
ultima = ultima + 1
End If
ActiveCell.Select
Selection.Copy
Sheets("DISP GERAL").Select
Range("C" & ultima).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Esta errado em alguma coisa?
Dessa forma eu consigo colar nas colocas C e D respectivamente?
Seu erro (creio eu) está na
ultima = Plan2.Range("E40").End(xlUp).Row
Essa linha faz o seguinte : Pega a última célula da linha x (Por isso que usei o nº "1048576", no seu caso está pegando a 40ª linha) e vai "subindo". A primeira linha não vazia que ele encontra ele pega o nº da linha.
Por isso coloquei o
ultima = ultima + 1
Pra colar nas colunas C e D você deve adicionar uma linha abaixo da Range("C"&ultima).select
Range("D" & ultima).Select Selection.PasteSpecial Paste:=xlPasteValues
Para adaptar ao seu código mude apenas as Colunas das células ("A","B","C"...) e o nome da planilha.
Se não entendeu me mande sua planilha para que eu possa dar uma olhada.
"Nisto se manifestou o amor de Deus em nós: em haver Deus enviado o seu Filho unigênito ao mundo, para vivermos por meio dEle" 1 Jo 4-9
Boa Noite,
Acabou que mudei um pouco a minha necessidade:
Acredito que com esse novo metódo me farei mais facil de entender. Eu preciso copiar a célula "E39" ir para a aba "DISPONIBILIDADE DIARIA" colar somente os valores na célula "C11" e toda vez que eu ativar a macro ir colando os valores abaixo da última célula preenchida.
Exemplo:
Usei a macro: Copiar a "E39", colar em especial na "C11" da aba informada;
Usei a macro em outro momento: Copiar a "E39", colar em especial na "C12" da aba informada. E assim continuamente.
O código que estou usando é o seguinte:
Sub COLIP()
'
' COLIP Macro
' COPIAR E COLAR EM ESPECIAL
'
'
Range("E39").Select
Selection.Copy
Sheets("DISPONIBILIDADE MENSAL").Select
If Range("C11") = "" Then ' Se a célula próxima for vazia.
Else
Range("C11").Select
linha = ActiveCell.Row + 1
End If
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("DISPONIBILIDADE DIARIA").Select
End Sub
Preciso muito completar esse trabalho.
Agradeço desde já pela ajuda!
Bruno, tente a rotina abaixo, só ajuste os nomes das Abas:
Sub CopiaColaValores() Dim UltimaLinha As Long Dim RngACopiar As Range 'Define o Range a ser Copiado Set RngACopiar = Worksheets("Plan1").Range("E39") 'Copia RngACopiar.Copy 'Verifica a ultima linha preenchida na Coluna 3(C) da Plan2(Destino) UltimaLinha = Worksheets("Plan2").Cells(Rows.Count, 3).End(xlUp).Row 'Se for menor que 11 - ou seja se C11 estiver Vazia If UltimaLinha < 11 Then UltimaLinha = 11 Worksheets("Plan2").Range("C" & UltimaLinha).PasteSpecial Paste:=xlPasteValues Else UltimaLinha = UltimaLinha + 1 Worksheets("Plan2").Range("C" & UltimaLinha).PasteSpecial Paste:=xlPasteValues End If Application.CutCopyMode = False End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Mauro,
Muito Obrigado, funcionou muito bem!