none
DÚVIDA NO TRECHO DO PROGRAMA VBA RRS feed

  • Pergunta

  • Selection.Copy Destination:=W.Cells(W.Rows.Count, 13).End(xlUp).Offset(1, 0)

    Boa tarde a todos,

    Tenho uma dúvida, eu fiz um programa em que eu posso abrir qualquer planilha e capturar 35 células para importar para uma planilha mestre. Porém nessas 35 células, algumas das planilhas que eu for abrir, não vai está todos os valores, algumas células vão está em branco e quando eu importo os dados ele vai pular as células que estão em branco. Eu colei um trecho do programa que eu faço a condição de importar os dados variando o número "13". Alguém poderia me ajudar de como faço pra resolver esse problema?

    quinta-feira, 20 de outubro de 2016 19:11

Todas as Respostas

  • Não entendi. Como assim ele irá "pular"?

    Poderia postar o código completo?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 21 de outubro de 2016 00:44
    Moderador
  • 'FORMATAÇÃO DA CÉLULA
    
    ActiveSheet.Range("b5").UnMerge
    ActiveSheet.Range("b5").Font.Bold = False
    ActiveSheet.Range("b5").Font.Size = 13
    ActiveSheet.Range("b5").Font.Name = "Arial"
    ActiveSheet.Range("b5").HorizontalAlignment = xlCenter
    ActiveSheet.Range("b5").VerticalAlignment = xlCenter
    ActiveSheet.Range("b5").Borders(xlEdgeLeft).LineStyle = xlContinuous
    ActiveSheet.Range("b5").Borders(xlEdgeLeft).Weight = xlThin
    ActiveSheet.Range("b5").Borders(xlEdgeRight).LineStyle = xlContinuous
    ActiveSheet.Range("b5").Borders(xlEdgeRight).Weight = xlThin
    ActiveSheet.Range("b5").Borders(xlEdgeTop).LineStyle = xlContinuous
    ActiveSheet.Range("b5").Borders(xlEdgeTop).Weight = xlThin
    ActiveSheet.Range("b5").Borders(xlEdgeBottom).LineStyle = xlContinuous
    ActiveSheet.Range("b5").Borders(xlEdgeBottom).Weight = xlThin
    
    'FÓRMULA PARA COPIAR A CÉLULA
    
    Call All_Cells_In_Active_WorkSheet_1
    
    ActiveSheet.Range("b5").Select
    
    Selection.Copy Destination:=W.Cells(W.Rows.Count, 1).End(xlUp).Offset(1, 0) 'copiar os dados para o destino
    
    '2
    
    'FORMATAÇÃO DA CÉLULA
    
    ActiveSheet.Range("b7").UnMerge
    ActiveSheet.Range("b7").Font.Bold = False
    ActiveSheet.Range("b7").Font.Size = 13
    ActiveSheet.Range("b7").Font.Name = "Arial"
    ActiveSheet.Range("b7").HorizontalAlignment = xlCenter
    ActiveSheet.Range("b7").VerticalAlignment = xlCenter
    ActiveSheet.Range("b7").Borders(xlEdgeLeft).LineStyle = xlContinuous
    ActiveSheet.Range("b7").Borders(xlEdgeLeft).Weight = xlThin
    ActiveSheet.Range("b7").Borders(xlEdgeRight).LineStyle = xlContinuous
    ActiveSheet.Range("b7").Borders(xlEdgeRight).Weight = xlThin
    ActiveSheet.Range("b7").Borders(xlEdgeTop).LineStyle = xlContinuous
    ActiveSheet.Range("b7").Borders(xlEdgeTop).Weight = xlThin
    ActiveSheet.Range("b7").Borders(xlEdgeBottom).LineStyle = xlContinuous
    ActiveSheet.Range("b7").Borders(xlEdgeBottom).Weight = xlThin
    
    'FÓRMULA PARA COPIAR A CÉLULA
    
    ActiveSheet.Range("b7").Select
    
    Selection.Copy Destination:=W.Cells(W.Rows.Count, 2).End(xlUp).Offset(1, 0) 'copiar os dados para o destino
    Bom dia, esse é um trecho do programa, porém pode ser que a célula B5 ou B7 esteja vazia só que na hora de importar os dados deles ele não vai mostrar na ordem, ele entende que vai preencher todos os valores até a última célula que não esteja vazia.
    sexta-feira, 21 de outubro de 2016 10:48
  • Acho que entendi agora.

    Bom, em primeiro lugar, evite usar os métodos Select e os objetos ActiveSheet, por exemplo: http://ambienteoffice.com.br/blog/gravador-de-macros/

    Sobre sua dúvida, experimente trocar o trecho de código para:

    ActiveSheet.Range("b5").Resize(35).Select
    
    Selection.Copy Destination:=W.Cells(W.Rows.Count, 1).End(xlUp).Offset(1, 0) 'copiar os dados para o destino
    
    '2

    Daí, ao invés d erodar um laço aí, execute esse trecho apenas uma vez que as 35 célula sserão copiadas de uma vez.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    sexta-feira, 21 de outubro de 2016 10:58
    Moderador