Stephe cần phát triển một macro sẽ thực hiện một thao tác dựa trên các ô mà người dùng chọn trước khi chạy macro. Cô ấy biết cách thực hiện điều này nếu người dùng chọn một dải ô, nhưng cô ấy không biết cách chuyển qua các ô trong vùng chọn nếu người dùng chọn một dải ô không liền nhau.

Khi nói đến VBA, có rất ít sự khác biệt giữa lựa chọn liền kề và lựa chọn không liền kề. Excel cho phép bạn truy cập từng cái như nhau. Hãy xem xét đoạn mã sau:

Dim c As Range

For Each c In Selection     ' do something here     MsgBox c.Address & vbTab & c.Value Next c

Trong trường hợp này, các ô trong phạm vi đã chọn được chuyển qua từng ô một bằng cách sử dụng vòng lặp For …​ Next. Bên trong vòng lặp, biến c đại diện cho một ô riêng lẻ và có thể được sử dụng trong các tham chiếu, như được hiển thị.

Nếu vì lý do nào đó, bạn muốn truy cập từng khu vực tiếp giáp trong vùng lựa chọn, bạn có thể làm như vậy bằng cách giải quyết cụ thể nhóm Khu vực, như được hiển thị trong đoạn mã này:

Dim a As Range Dim c As Range

For Each a In Selection.Areas     'Now each a refers to a contiguous range     'Do something here with areas, if desired     For Each c In a.Cells         'Now each c refers to a cell in the area         'Do something here         MsgBox c.Address & vbTab & c.Value     Next c Next a

Bạn cũng nên lưu ý rằng nếu phạm vi bạn muốn truy cập (liền kề hoặc không liền kề) đã được đặt tên trong Excel, bạn cũng có thể chỉ truy cập các ô trong phạm vi được đặt tên. Chỉ cần thay thế từ “Selection” trong mỗi ví dụ này bằng tên của dải ô, theo cách này:

Dim c As Range

For Each c In Range("MyNamedRange")

' do something here     MsgBox c.Address & vbTab & c.Value Next c

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (8703) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: