Jac hỏi:
Tôi đang tạo các bảng, cùng một số cột nhưng mỗi lần số hàng khác nhau. Tôi có thể xác định mà không có vấn đề gì hàng cuối cùng và cột cuối cùng để thực hiện các phép tính tôi cần trong macro. Bây giờ mục đích là thêm vào macro này khả năng đặt tên bảng (với cùng một tên mỗi lần), nhưng trong macro, phạm vi ô được liên kết với trang tính là R1C1: RxCy, tôi không biết cách viết phạm vi bằng cách sử dụng các giá trị cuối cùng và cột cuối cùng (đại diện cho cột và hàng cuối cùng của bảng) với hệ thống RC (tôi thậm chí không biết nếu nó có thể).
Hầu hết các lập trình viên VBA sẽ sử dụng phương pháp sau, sử dụng phương thức 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
Có một phương pháp dễ dàng hơn để gán tên phạm vi. Bốn câu sau đây đều tương đương. Hai cách cuối cùng dễ dàng hơn rất nhiều:
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 - Tôi sẽ điều chỉnh dòng cuối cùng để sử dụng:
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
Tôi đã học phím tắt này để gán tên phạm vi từ Tài liệu tham khảo của lập trình viên VBA trong Excel 2002 của Bovey & Bullen. Phiên bản năm 2002 của cuốn sách này chạy vòng quanh phiên bản năm 2000. Đối với tiền của tôi, bất kỳ lập trình viên VBA Excel nào cũng cần cuốn sách đó bên tay phải của mình. Bản sao của tôi là tai chó và không bao giờ xa tầm với.