Jac пита:
Генерирам таблици, същия брой колони, но всеки път различен брой редове. Мога да определя без проблем последния ред и последната колона, за да направя необходимите изчисления в макрос. Сега целта е да се добави в този макрос възможността за именуване на таблицата (със същото име всеки път), но в макроса диапазонът от клетки, свързан с работния лист, е R1C1: RxCy, не знам как да напиша диапазона използване на стойностите lastrow и lastcolumn (които представляват последната колона и ред на таблицата) с RC системата (дори не знам дали е възможно).
Повечето програмисти на VBA биха използвали следния метод, който използва метода 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
Има по-лесен метод за присвояване на име на диапазон. Следните четири твърдения са еквивалентни. Последните две са значително по-лесни:
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 - бих адаптирал последния ред за използване:
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
Научих този пряк път за присвояване на имена на диапазони от справочника на VBA за програмиста на Excel 2002 на Bovey & Bullen. Версията на тази книга от 2002 г. обхваща кръгове около версията от 2000 г. За моите пари всеки програмист на Excel VBA се нуждае от тази книга от дясната си ръка. Моето копие е кучешко и никога не е недостъпно.