Navegação entre Planilhas
Deslize para mostrar o menu
Dados reais não vêm com um rótulo indicando onde terminam. Fixar o intervalo Range("A1:I5") causa problemas assim que alguém adiciona um sexto pedido — por isso, é necessário perguntar à planilha onde seus dados terminam.
Encontrando a Última Linha
A linha de código mais utilizada em todo este curso:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Leia da direita para a esquerda: comece na parte inferior da coluna A (ws.Rows.Count), suba (End(xlUp)) até encontrar a primeira célula ocupada e retorne o número da linha. Funciona independentemente da quantidade de pedidos existentes.
Encontrando a Última Coluna
Funciona da mesma forma, mas na horizontal:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Relata a área retangular completa da planilha que já conteve dados — útil para uma verificação rápida, mas deve ser usada com cautela: ela lembra células que já tiveram dados mesmo após a exclusão do conteúdo, podendo superestimar o intervalo real de dados.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Geralmente a ferramenta mais adequada: expande a partir de uma única célula até o bloco contíguo de dados ao redor, parando na primeira linha ou coluna em branco — correspondendo exatamente a uma tabela limpa como Orders:
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Tarefa
- Escrever um
Subque encontre a última linha usando o métodoEnd(xlUp)e imprima no Immediate Window. - No mesmo
Sub, encontrar a última linha de uma segunda forma usandoCurrentRegion.Rows.Counte imprimir também — confirmar se os valores coincidem. - Adicionar manualmente um sexto pedido na linha 7 da planilha, executar novamente a macro e confirmar se ambos os métodos agora reportam 7 sem alterações no código:
1. Encontrando a última linha com End(xlUp)
- Início a partir do final da coluna A e salto para cima — o mesmo padrão da seção "Finding the last row" do Capítulo 3.
Debug.Printpara exibir o resultado na Janela Imediata (Ctrl+G).
2. Encontrando de outra forma com CurrentRegion
CurrentRegionexpande a partir de uma célula inicial (tenteRange("A1")) para o bloco contíguo completo..Rows.Countnessa região inclui a linha de cabeçalho — lembre-se da observação do capítulo sobre subtrair 1 se quiser apenas as linhas de dados. Como esta tarefa pede apenas para comparar os dois métodos, imprima primeiro a contagem bruta e depois analise o cabeçalho.
3. Adicionando uma sexta linha e executando novamente
- Nenhuma alteração no código é necessária — basta digitar um novo pedido diretamente na linha 7 da planilha e executar o mesmo
Subnovamente.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Navegação entre Planilhas
Dados reais não vêm com um rótulo indicando onde terminam. Fixar o intervalo Range("A1:I5") causa problemas assim que alguém adiciona um sexto pedido — por isso, é necessário perguntar à planilha onde seus dados terminam.
Encontrando a Última Linha
A linha de código mais utilizada em todo este curso:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Leia da direita para a esquerda: comece na parte inferior da coluna A (ws.Rows.Count), suba (End(xlUp)) até encontrar a primeira célula ocupada e retorne o número da linha. Funciona independentemente da quantidade de pedidos existentes.
Encontrando a Última Coluna
Funciona da mesma forma, mas na horizontal:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Relata a área retangular completa da planilha que já conteve dados — útil para uma verificação rápida, mas deve ser usada com cautela: ela lembra células que já tiveram dados mesmo após a exclusão do conteúdo, podendo superestimar o intervalo real de dados.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Geralmente a ferramenta mais adequada: expande a partir de uma única célula até o bloco contíguo de dados ao redor, parando na primeira linha ou coluna em branco — correspondendo exatamente a uma tabela limpa como Orders:
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Tarefa
- Escrever um
Subque encontre a última linha usando o métodoEnd(xlUp)e imprima no Immediate Window. - No mesmo
Sub, encontrar a última linha de uma segunda forma usandoCurrentRegion.Rows.Counte imprimir também — confirmar se os valores coincidem. - Adicionar manualmente um sexto pedido na linha 7 da planilha, executar novamente a macro e confirmar se ambos os métodos agora reportam 7 sem alterações no código:
1. Encontrando a última linha com End(xlUp)
- Início a partir do final da coluna A e salto para cima — o mesmo padrão da seção "Finding the last row" do Capítulo 3.
Debug.Printpara exibir o resultado na Janela Imediata (Ctrl+G).
2. Encontrando de outra forma com CurrentRegion
CurrentRegionexpande a partir de uma célula inicial (tenteRange("A1")) para o bloco contíguo completo..Rows.Countnessa região inclui a linha de cabeçalho — lembre-se da observação do capítulo sobre subtrair 1 se quiser apenas as linhas de dados. Como esta tarefa pede apenas para comparar os dois métodos, imprima primeiro a contagem bruta e depois analise o cabeçalho.
3. Adicionando uma sexta linha e executando novamente
- Nenhuma alteração no código é necessária — basta digitar um novo pedido diretamente na linha 7 da planilha e executar o mesmo
Subnovamente.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Obrigado pelo seu feedback!