Página 1 de 1

Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 09:21
por RBShoT
Bom dia,
Estou querendo copiar tudo que está na no range A3:A1048576 da planilha P2 para o range A3:A1048576, mas não usando a função select + copy + paste.

Minha macro consiste em copiar algumas colunas de uma planilha principal.
Vamos supor que a minha planilha principal tenha 10 colunas (mas na verdade de 170) com o seguinte cabeçalho:
C1-C2-C3-C4-C5-C6-C7-C8-C9-C10

mas na planilha P1 eu só preciso de 4 colunas te numa sequencia diferente:
C6-C4-C7-C2

O que a macro faz, ela entra no cabeçalho da P1(C6) copia o texto, e vai na P2 e procura o mesmo texto, quando ela acha, ela copia o texto abaixo dessa coluna(C6)(P2) e cola na (C6)(P1)

Gostaria de usar a 3º opção, mas não funciona usando Range com Cells mas funciona usando range normal.

Sub teste()
'1º - Funciona
'Sheets("P1").Range("A3:A1048576").Value = Sheets("P2").Range("A3:A1048576").Value

'2º - Funciona
'Sheets("P1").Range(Cells(3, 1), Cells(1048576, 1)).Value = Sheets("P2").Range("A3:A1048576").Value

'3º - Não funciona
Sheets("P1").Range(Cells(3, 1), Cells(1048576, 1)).Value = Sheets("P2").Range(Cells(3, 1), Cells(1048576, 1)).Value

End Sub

Alguém poderia me explicar porque a 3º opção não funciona.?

Re: Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 09:57
por babdallas
Tente assim:
Código: Selecionar todos
With Sheets("P1")
        .Range(.Cells(3, 1), .Cells(1048576, 1)).Value = _
                                        Sheets("P2").Range(Sheets("P2").Cells(3, 1), Sheets("P2").Cells(1048576, 1)).Value
    End With
Note que você não detalha para o código de qual planilha é o cells(3,1), por exemplo. Ele deve estar se perdendo. Por isso, sempre que possível especifique de onde é o intervalo.

Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 10:34
por ExcelFlex
Você precisa definir qual é a origem da célula, use Sheets("P1").Cells() e não somente Cells()
Código: Selecionar todos
Sheets("P1").Range(Sheets("P1").Cells(3, 1), Sheets("P1").Cells(1048576, 1)).Value = Sheets("P2").Range(Sheets("P1").Cells(3, 1), Sheets("P1").Cells(1048576, 1)).Value

Re: Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 10:52
por Reinaldo
Uma outra forma:
Código: Selecionar todos
Sheets("P1").Range(Cells(3, 1).Address & ":" & Cells(1048576, 1).Address).Copy Destination:=Sheets("P2").Range("A3")

Re: Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 11:07
por RBShoT
babdallas escreveu:Tente assim:
Código: Selecionar todos
With Sheets("P1")
        .Range(.Cells(3, 1), .Cells(1048576, 1)).Value = _
                                        Sheets("P2").Range(Sheets("P2").Cells(3, 1), Sheets("P2").Cells(1048576, 1)).Value
    End With
Note que você não detalha para o código de qual planilha é o cells(3,1), por exemplo. Ele deve estar se perdendo. Por isso, sempre que possível especifique de onde é o intervalo.
Prezado baddallas,
Funcionou, eu pensava que tudo que estava dentro do parentes por exemplo: Sheets("P2").Range(Cells(3, 1), Cells(1048576, 1)).Value
já estaria referênciado pois o Sheets("P2").Range( aqui dentro tudo faria referência ao range da P2).value

Mas entendi o procedimento.. deve-se referência tudo.
Muito obrigado pela atenção.

Re: Range ("A3") x Range (Cells(3,1))

Enviado: 25 Set 2018 às 11:27
por RBShoT
Reinaldo escreveu:Uma outra forma:
Código: Selecionar todos
Sheets("P1").Range(Cells(3, 1).Address & ":" & Cells(1048576, 1).Address).Copy Destination:=Sheets("P2").Range("A3")
Bom dia Reinaldo,
Como eu disse no enunciado, não estava querendo usar o copy, mas é uma forma valida e nova para mim que vou usar também, desde de já agradeço imensamente sua atenção.
Abs.