Để xây dựng, giả sử tôi có hai dải ô được đặt tên trong sổ làm việc của mình. Cả hai phạm vi được đặt tên có cùng tên (hãy nói "myName"), nhưng một phạm vi được sắp xếp thành Sheet1 và một phạm vi khác được sắp xếp vào Workbook.Nhận phạm vi được đặt tên theo chuỗi trong sổ làm việc Excel khi tên được nhân đôi
Đặt tên (chuỗi) của Dải ô đã đặt tên, tôi muốn lấy Phạm vi được đặt tên trong Bảng tính.
Nếu tôi sử dụng lệnh gọi gốc: wb.Names.Item("myName")
, nó sẽ trả về phạm vi được đặt tên phạm vi trang tính.
Nếu thay vào đó tôi làm: wb.Names.Item("Sheet1!myName")
, điều đó rõ ràng trả về phạm vi tên phạm vi trang tính. Tôi đã tìm thấy tôi có thể sử dụng để xác định những tờ cụ thể, nhưng không phải là một bảng tính.
Có cách nào tôi có thể chỉ định tôi muốn sổ làm việc được sắp xếp không?
Giải pháp thay thế của tôi hiện đang lặp qua danh sách tất cả các Tên và so sánh thuộc tính .Name để lấy phạm vi sách được đặt tên Phạm vi đã đặt tên. Điều này làm việc vì thuộc tính .Name gắn thêm một "Sheet1!" vào Phạm vi có tên phạm vi trang tính. Điều này tuy nhiên rất tốn kém để làm, và tôi muốn tránh nó.
Nó không rõ ràng về cách bạn sử dụng phạm vi. Nếu bạn đang cố gắng đặt một đối tượng phạm vi thành một chuỗi tên thì 'Set rng1 = Range (" myName ")' sẽ trả về phạm vi từ tên trang tính cục bộ nếu * sheet1 đang hoạt động * nếu không nó sẽ trả về phạm vi từ tên bảng tính . Tôi nghĩ đây là giải pháp dọn dẹp sạch nhất - ví dụ: kiểm tra rằng trang tính đang hoạt động khác với trang tính lưu trữ tên cục bộ trước khi tìm cách sử dụng tên làm phạm vi sổ làm việc. Có lý? :) – brettdj
bạn cũng có thể so sánh parent.name với tên bảng tính, nhưng bạn vẫn cần lặp qua các tên để trích xuất bộ sưu tập đó. – nutsch
lại: nhận xét của @ brettdj. tùy thuộc vào những gì bạn đang cố gắng đạt được, dễ nhất có thể là chỉ cần thêm một bảng tạm thời ở đầu macro của bạn, để xóa ở cuối mã của bạn. – nutsch