Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por RBShoT
#37118
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.?
Por babdallas
#37119
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.
Avatar do usuário
Por ExcelFlex
Posts Avatar
#37122
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
Por RBShoT
#37124
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.
Por RBShoT
#37126
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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord