Notifications
Clear all

Como atribuir valor e formatação de uma linha.

8 Posts
1 Usuários
0 Reactions
1,401 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Saudações pessoal, gostaria de saber se existe alguma instrução para se fazer para que quando eu copio uma row para um variável, ela também guarde a formatação, além do valor.

Linhaacopiar = Rows(i & ":" & i)

Sheets(j).Rows(Ultimalinha) = Linhaacopiar

Eu estou fazendo com esses dois comandos, sendo que já tentei colocando .Value e não achei nada que possa subistituir o .Value por algo do tipo .FormatValue, não sei se existe. existe duas colunas que são de formato horário que não estão aparecendo com esse formato, e tem uma de formato data que fica copiada com a formatação.
Alguém sabe de uma solução?

Att.
Thiago

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 8:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia,

Sugiro o seguinte código:

Rows(i).Copy Sheets(j).Rows(ultimalinha)

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 8:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá, esse código não funcionou, não sei se faltou alguma complementação nele, pois não vi nenhum "paste" ou atribuição. e o Sheets(j).Rows(ultimalinha).Paste o excel não aceitou.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 9:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Apresenta alguma mensagem de erro?
Eu testei e funcionou.
Veja a sintaxe de "Copy" conforme a ajuda do Excel:

Copia o intervalo para o intervalo especificado ou para a área de transferência.

expressão.Copy(Destination)
expressão necessária. Uma expressão que retorna um objeto Range.

Destination Variant opcional. Especifica o novo intervalo para o qual o intervalo especificado será copiado. Se esse argumento for omitido, o Microsoft Excel copiará o intervalo para a área de transferência.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 10:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O problema é que as Rows estão em planilhas diferentes (workbooks, pasta).
Colocando o seguinte código:
Workbooks(PlanilhaBase).Sheets(Plan1).Rows(i).Copy Workbooks(planilhaDF).Sheets(j).Rows(ultimalinha)

deu erro 13, tipos incompatíveis. Eu já havia tentando com o Selection.Copy Selection.PasteSpecial xlPasteall, mas ele dá erro 1004. O único método que funcionou até agora foi o de atribuir a linha para uma variável e depois atribuir à linha da outra planilha através dessa variável, mas ela acaba não transferindo a formatação de horario.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 11:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Suponho que seja no Plan1 ... deveria ser "Plan1"...
Workbooks(PlanilhaBase).Sheets("Plan1").Rows(i).Copy Workbooks(planilhaDF).Sheets(j).Rows(ultimalinha)

Sub Copia_Valores_e_Formatacao()
    Dim PlanilhaBase As String
    Dim AbaOrigem As String
    Dim I As Long
    Dim PlanilhaDF As String
    Dim AbaDestino As Long
    Dim UltimaLinha As Long
    
    PlanilhaBase = "Pasta9.xls"
    AbaOrigem = "Plan1"
    I = 9
    PlanilhaDF = "Pasta7.xls"
    AbaDestino = 2 'Plan2
    UltimaLinha = 7
    
    Workbooks(PlanilhaBase).Sheets(AbaOrigem).Rows(I).Copy Workbooks(PlanilhaDF).Sheets(AbaDestino).Rows(UltimaLinha)
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 12:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Segue uma sugestão de código, caso os dois arquivos (origem e destino) estejam fechados e a macro seja executada de um terceiro arquivo:

Sub Copiar()
    Dim ArqDestino
    Dim ArqOrigem
    Dim i As Long
    
    i = 1
    
    ArqOrigem = "C:TestePasta2.xls"
    ArqDestino = "C:TestePasta3.xls"
    
    Workbooks.Open ArqOrigem
    ArqOrigem = ActiveWorkbook.Name
    
    Workbooks.Open ArqDestino
    ArqDestino = ActiveWorkbook.Name
    
    Workbooks(ArqOrigem).Sheets("Plan1").Rows(i).Copy Workbooks(ArqDestino).Sheets("Plan1").Rows(i)
    
    Workbooks(ArqOrigem).Close
    Workbooks(ArqDestino).Close True
End Sub

Depois é só adaptar para a sua necessidade.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 12:47 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado JValq e Alexandre, o problema era mesmo a falta dos aspas no "Plan1". Agora tá funcionando perfeitamente.
Agradecido pela atenção e presteza.

Att.
Thiago.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/11/2011 1:41 pm