Jac pyta:
Generuję tabele, taką samą liczbę kolumn, ale za każdym razem inną liczbę wierszy. Mogę bez problemu określić ostatni wiersz i ostatnią kolumnę do wykonania potrzebnych obliczeń w makrze. Teraz celem jest dodanie w tym makrze możliwości nazwania tabeli (za każdym razem o tej samej nazwie), ale w makrze zakres komórek skojarzony z arkuszem to R1C1: RxCy, nie wiem jak zapisać zakres używając wartości lastrow i lastcolumn (które reprezentują ostatnią kolumnę i wiersz tabeli) z systemem RC (nie wiem nawet, czy to możliwe).
Większość programistów VBA użyłaby następującej metody, która używa metody 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
Istnieje prostsza metoda przypisania nazwy zakresu. Poniższe cztery instrukcje są równoważne. Dwie ostatnie są znacznie łatwiejsze:
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 - dostosowałbym ostatnią linię do użycia:
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
Nauczyłem się tego skrótu do przypisywania nazw zakresów z podręcznika programisty VBA programu Excel 2002 firmy Bovey & Bullen. Wersja tej książki z 2002 roku krąży wokół wersji z 2000 roku. Za moje pieniądze każdy programista Excel VBA potrzebuje tej książki po prawej stronie. Mój egzemplarz jest zepsuty i nigdy nie jest poza zasięgiem.