Thường cần phải chọn một ô cụ thể trong macro. Tuy nhiên, sẽ khó hơn để chọn ô đó nếu nó nằm trong một sổ làm việc khác.

Ví dụ: hãy xem xét hai dòng mã sau:

Sub CellSelect1()

Workbooks("pwd.xls").Sheets("Sheet3").Select     ActiveSheet.Range("A18").Select End Sub

Bạn có thể nghĩ rằng macro này sẽ chọn Sheet3! A18 trong sổ làm việc pwd.xls. Nó có, với một số lưu ý. Nếu bạn có nhiều sổ làm việc đang mở, macro này dẫn đến lỗi, nếu pwd.xls không phải là sổ làm việc hiện đang hoạt động. Điều này xảy ra ngay cả khi pwd.xls đã được mở, nhưng đơn giản là chưa được chọn.

Hành vi tương tự vẫn tồn tại ngay cả khi bạn rút gọn mã lựa chọn xuống một dòng duy nhất:

Sub CellSelect2()

Workbooks("pwd.xls").Sheets("Sheet3").Range("A18").Select End Sub

Bạn vẫn gặp lỗi, ngoại trừ khi pwd.xls là sổ làm việc đang hoạt động. Giải pháp là thay đổi hoàn toàn cách bạn thực hiện bước nhảy. Thay vì sử dụng phương thức Chọn, hãy sử dụng phương thức Goto và chỉ định địa chỉ đích cho phương thức:

Sub CellSelect3()

Application.Goto _       Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18]

End Sub

Mã này sẽ chỉ hoạt động nếu pwd.xls đã được mở, nhưng nó không cần phải là sổ làm việc hiện đang hoạt động. Nếu bạn muốn sổ làm việc đích được cuộn để ô được chỉ định nằm ở góc trên bên trái của những gì bạn đang xem, thì bạn có thể chỉ định thuộc tính Scroll là True, như được hiển thị ở đây:

Sub CellSelect4()

Application.Goto _       Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18] _       Scroll:=True End Sub

_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 (2791) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: