Excel VBA – Redimensionar Intervalo
In this Article
Redimensionamento de intervalo usando VBA
Este tutorial demonstrará como usar a propriedade Resize do objeto Range para alterar e retornar um novo intervalo redimensionado a partir do objeto Range original.
Sintaxe
A sintaxe da propriedade Resize é a seguinte
Range("A1").Resize (NumeroLinhas, NumeroColunas)
Onde Range(“A1”) é seu intervalo inicial.
NumeroLinhas e NumeroColunas devem ser maiores que zero. Cada entrada é opcional (por exemplo, você pode omitir NumeroLinhas para alterar somente o número de colunas, ou vice-versa).
Redimensionar o Número de Linhas e Colunas
O exemplo a seguir expande o intervalo com uma célula A1 para o intervalo A1:D10, aumentando a contagem de linhas para 10 e a contagem de colunas para 5.
Range("A1").Resize(10, 5).Select
Ou, mais comumente, você atribuirá o intervalo redimensionado a uma variável:
' Redimensionar o intervalo para o tamanho desejado e atribua-o a uma variável
Set novoRng = ActiveSheet.Range("A1").Resize(10, 5)
Redimensionar Somente o Número de Linhas
O exemplo a seguir altera apenas o número de linhas:
' Alterar somente o tamanho da linha, o novo intervalo será $A$1:$A$10
Set novoRng = rng.Resize(10)
Redimensionar Somente o Número de Colunas
O exemplo a seguir altera apenas o número de colunas:
' Alterar somente o tamanho de colunas, o novo intervalo será $A$1:$E$1
Set novoRng = rng.Resize(, 5)
Redimensionar o Intervalo da Tabela para Excluir o Cabeçalho
Se você tiver uma tabela na planilha ativa com uma linha de cabeçalho, o código primeiro selecionará a tabela inteira e, em seguida, moverá uma linha para baixo para excluir o cabeçalho usando o método Range.Offset. Em seguida, ele usará a propriedade Range.Resize para reduzir o tamanho em uma linha.
Sub SelecionarDadosTabela()
' **IMPORTANTE**
' Clique em qualquer célula da tabela antes de executar a macro
' Mover uma linha para baixo usando Offset e, em seguida, reduzir o tamanho do intervalo em uma linha
Set tbl = ActiveCell.CurrentRegion.Offset(1, 0)
Set tbl = tbl.Resize(tbl.Rows.Count - 1, tbl.Columns.Count)
' Os dados são selecionados excluindo a linha de cabeçalho
tbl.Select
End Sub
Gravação de Matriz 2-D em Intervalo
Outro uso comum é gravar uma matriz bidimensional em uma planilha. Como o intervalo a ser gravado deve corresponder ao tamanho da matriz, que normalmente não é conhecido de antemão, o método Resize é usado para definir o intervalo de saída.
O exemplo abaixo lerá os dados no intervalo A1:E10 da planilha ativa em uma matriz e gravará a matriz na planilha ‘Saída’, começando pela célula A1:
Sub GravarMatriz()
' Ler os dados em uma matriz
dados = Range("A1:E10").Value
' Redimensionar o intervalo de saída e gravar a matriz
Worksheets("Saída").Range("A1").Resize(UBound(dados, 1), UBound(dados, 2)).Value = dados
End Sub
Escrito por: Vinamra Chandra