Jac pregunta:
Estoy generando tablas, el mismo número de columnas pero cada vez un número diferente de filas. Puedo determinar sin problema la última fila y la última columna para hacer los cálculos que necesito en una macro. Ahora el propósito es agregar en esta macro la posibilidad de nombrar la tabla (con el mismo nombre cada vez), pero en la macro el rango de celdas asociado a la hoja de trabajo es R1C1: RxCy, no sé cómo escribir el rango usando los valores lastrow y lastcolumn (que representan la última columna y fila de la tabla) con el sistema RC (ni siquiera sé si es posible).
La mayoría de los programadores de VBA usarían el siguiente método, que usa el 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 un método más sencillo para asignar un nombre de rango. Las siguientes cuatro declaraciones son todas equivalentes. Los dos últimos son mucho más fáciles:
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 - Adaptaría la última línea para su 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
Aprendí este atajo para asignar nombres de rango de Bovey & Bullen's Excel 2002 VBA Programmer's Reference. La versión 2002 de este libro gira en torno a la versión 2000. Por mi dinero, cualquier programador de Excel VBA necesita ese libro en su mano derecha. Mi copia está mal hecha y nunca está fuera de su alcance.