Como faço para implementar o módulo VBA para copiar dados filtrados

0

Eu preciso implementar uma Macro VBA que copie dados de uma planilha do Excel e coloque determinada coluna em outra.

Sub sbCopyRangeToAnotherSheet()

'Method 1
Sheets("Sheet1").Range("A1:B10").Copy Destination:=Sheets("Sheet2").Range("E1")

'Method 2
'Copy the data
Sheets("Sheet1").Range("A1:B10").Copy
'Activate the destination worksheet
Sheets("Sheet2").Activate
'Select the target range
Range("E1").Select
'Paste in the target destination
ActiveSheet.Paste

Application.CutCopyMode = False

End Sub

Isso não funcionará para novas planilhas nomeadas, por exemplo, na Planilha 3, e não funcionará de forma eficiente para dados filtrados. Preciso de um código que copie os dados filtrados e cole determinada coluna em outra planilha.

    
por helloworld 15.11.2015 / 07:47

1 resposta

0

Para copiar apenas as células visíveis em um intervalo filtrado, é necessário especificar que é isso que você tenta fazer. Por exemplo:

Sheets("Sheet1").Range("A1:B10").SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=Sheets("Sheet2").Range("E1")

Alguns bons exemplos de como usar o autofilter no código VBA podem, entre outros lugares, ser encontrado aqui .

Não vejo razão para que isso não funcione quando você se referir a outras planilhas, exceto pelo uso de Activate e Select talvez cancelando a cópia-ação em algum momento. Qualquer motivo que você faça dessa maneira, em vez de como eu a delineava acima, com um intervalo de destino especificado especificado quando você faz a cópia? Eu vejo como você faz isso no seu primeiro exemplo, que eu assumo trabalho.

    
por 16.11.2015 / 07:58