Inquiridor
DÚVIDA NO TRECHO DO PROGRAMA VBA

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?
Todas as Respostas
-
-
'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. -
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