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.
#42949
Bom dia, Pessoal!

Sou novo. Desculpem-me se já foi falado esse assunto, mas não consegui encontrar.

Seguinte...

Criei uma macro onde ela faz a tabela dinâmica de forma automática referente aos dados que eu coloco em uma guia X.
Porém, os dados que eu coloco nessa guia, todas as vezes vão ser quantidade de linhas diferentes.

Ex: As vezes puxo um relatório que possui 2000 notas fiscais (gravei a macro nessa)
Depois, puxo um relatório que possui 5000 notas fiscais (só que a macro só pega as 2000 primeiras notas, porque foi a quantidade de linhas que selecionei)

Tentei Utilizar o Ctrl + Shift + End para selecionar todo o texto, mas quando o codigo puxa pra macro, ele entende somente quantidade de linhas que selecionou na hora da gravação e não o "atalho" em si, que é pra pegar todas as células.

Esse é o código:

Sheets("ENTRADAS").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"ENTRADAS!R1C1:R397C87", Version:'=6).CreatePivotTable TableDestination:= _
"PIVOTENTRADAS!R1C1", TableName:="PivotTable12", DefaultVersion:=6
Sheets("PIVOTENTRADAS").Select
Cells(1, 1).Select

Onde está negrito é a seleção.

Como faço pra ajustar para, quando a macro rodar, ela busque todas as linhas e colunas preenchidas dessa guia X, sem "travar" somente na quantidade de linhas que foi utilizada na hora da gravação?

Obrigado!!!!!!
#42950
Você poderia adicionar estas linhas no código (além das linhas que você já mandou):
Código: Selecionar todos
'Declara uma variável para armazenar o número da última linha preenchida
Dim lngUltLin           as   long

'Armazena a última linha preenchida baseado na coluna A
'Nas propriedades da planilha ENTRADAS (no Visual Baisc Editor - VBE), digite na propriedade codename: wshEntrada
with wshEntrada
        lngUltLin = .cells(.cells.count, 1).end(xlup).Row
end with

'Agora você tira esta linha de código
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"ENTRADAS!R1C1:R397C87", Version:'=6).CreatePivotTable TableDestination:= _
"PIVOTENTRADAS!R1C1", TableName:="PivotTable12", DefaultVersion:=6

E troca por esta

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"ENTRADAS!R1C1:R" & lngUltLin, Version:'=6).CreatePivotTable TableDestination:= _
"PIVOTENTRADAS!R1C1", TableName:="PivotTable12", DefaultVersion:=6

Espero que funcione
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