VBA: Limites do método “Transpose”

Setembro 2017

Veja nesta dica como evitar o 1004 e/ou erro 13 ao transportar dados no Visual Basic.


Introdução

O que é este método? É um trecho da ajuda online MSDN aqui.

Observação: inverter um intervalo de células verticais como intervalo horizontal, ou vice-versa. Use a função Transpose para inverter a orientação vertical e horizontal de uma planilha. Assim sendo, em primeiro lugar, é preciso prestar atenção aos limites da planilha.

Limites por versão

Dica a ser lida para conhecer as limitações das planilhas.

No Excel 2003, se você quiser transpor, em colunas, um trecho de 1.000 linhas, você vai, inevitavelmente, travar, já que ele só tem 256 colunas. Idem no 2007, se você copiar 16.385 linhas e quiser transpô-las em colunas.

Sim, mas então, quando trabalhamos em memória nas variáveis de tabelas, esses limites não existem!

Limites na memória

Ao trabalhar com grandes variáveis de tabelas, você pode querer transpô-las para coloca-las em uma planilha. Por exemplo, é muito comum ter em memória uma tabela de uma dimensão (logo, em "colunas") de 100 mil dados. Portanto, para coloca-los na planilha, basta usar:
[A1].Resize(UBound(tb)) = Application.Transpose(tb)
.
Infelizmente, você obtém um erro 13 (ou 1004, dependendo do caso).

Observação: o método Transpose se limita a 65.536 valores.

Como resolver este problema

Para resolver esse problema, você deverá trabalhar por “pacotes” de 65 mil valores ou criar sua função personalizada.

Saiba mais

Veja um exemplo de função Transpose aqui.
Foto: © Microsoft.com

Veja também

Artigo original publicado por pijaku. Tradução feita por pintuda. Última modificação: 20 de agosto de 2016 às 10:17 por pintuda.
Este documento, intitulado 'VBA: Limites do método “Transpose”', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.