Jac pergunta:
Estou gerando tabelas, mesmo número de colunas, mas cada vez com um número diferente de linhas. Posso determinar sem problemas a última linha e a última coluna para fazer os cálculos que preciso em uma macro. Agora o objetivo é adicionar nesta macro a possibilidade de nomear a tabela (com o mesmo nome todas as vezes), mas na macro o intervalo de células associado à planilha é R1C1: RxCy, não sei escrever o intervalo usando os valores lastrow e lastcolumn (que representam a última coluna e linha da tabela) com o sistema RC (nem sei se é possível).
A maioria dos programadores de VBA usaria o método a seguir, que usa o método Names.Add.
Sub Method1() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column MyArea = "='" & ActiveSheet.Name & "'!R1C1:R" & LastRow & "C" & LastCol ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:=MyArea End Sub
Existe um método mais fácil para atribuir um nome de intervalo. As quatro declarações a seguir são todas equivalentes. Os dois últimos são muito mais fáceis:
ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:="=Sheet1!R1C1:R10C5" ActiveWorkbook.Names.Add Name:="TheData", RefersTo:="=Sheet1!A1:E10" Range("A1:E10").Name = "TheData" Cells(1, 1).Resize(10, 5).Name = "TheData"
Jac - Eu adaptaria a última linha para uso:
Sub Method2() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column Cells(1, 1).Resize(LastRow, LastCol).Name = "TheData" End Sub
Aprendi esse atalho para atribuir nomes de intervalo na Referência do programador VBA do Excel 2002 da Bovey & Bullen. A versão 2002 deste livro gira em torno da versão 2000. Para o meu dinheiro, qualquer programador Excel VBA precisa daquele livro em sua mão direita. Minha cópia está cheia de orelhas e nunca está fora de alcance.