Jac întreabă:
Generez tabele, același număr de coloane, dar de fiecare dată un număr diferit de rânduri. Pot determina fără probleme ultimul rând și ultima coloană pentru a face calculele de care am nevoie într-o macro. Acum scopul este de a adăuga în această macro posibilitatea de a denumi tabelul (cu același nume de fiecare dată), dar în macro intervalul de celule asociat foii de lucru este R1C1: RxCy, nu știu cum să scriu intervalul folosind valorile lastrow și lastcolumn (care reprezintă ultima coloană și rândul tabelului) cu sistemul RC (nici nu știu dacă este posibil).
Majoritatea programatorilor VBA ar folosi următoarea metodă, care utilizează metoda 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
Există o metodă mai ușoară pentru atribuirea unui nume de interval. Următoarele patru afirmații sunt toate echivalente. Ultimele două sunt mult mai ușoare:
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 - aș adapta ultima linie pentru utilizare:
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
Am aflat această comandă rapidă pentru atribuirea numelor de game din Referința programatorului Excel 2002 VBA de la Bovey & Bullen. Versiunea din 2002 a acestei cărți rulează cercuri în jurul versiunii din 2000. Pentru banii mei, orice programator Excel VBA are nevoie de acea carte la mâna dreaptă. Copia mea este cu urechi de câine și nu este niciodată la îndemână.