Trong VBA, ô đang hoạt động là thuộc tính đại diện cho ô đang hoạt động tại thời điểm hiện tại. Khi bạn chọn một ô hoặc điều hướng đến một ô và hộp màu xanh lá cây đó bao phủ ô đó, bạn có thể sử dụng thuộc tính ACTIVECELL để chỉ ô đó trong mã VBA. Có các thuộc tính và phương thức đi kèm với nó
Sử dụng thuộc tính ô hiện hoạt
- Gõ từ khóa “ActiveCell”
- Nhập dấu chấm [. ] để lấy các thuộc tính và phương thức của danh sách
- Chọn thuộc tính hoặc phương thức mà bạn muốn sử dụng
- Chạy mã để thực hiện hoạt động cho ô hiện hoạt
Liên kết hữu ích. Chạy Macro – Trình ghi Macro – Trình soạn thảo Visual Basic – Sổ làm việc Macro Cá nhân
Điểm quan trọng
- Khi bạn sử dụng thuộc tính ô đang hoạt động, VBA đề cập đến ô đang hoạt động của trang tính đang hoạt động của sổ làm việc đang hoạt động, bất kể có bao nhiêu sổ làm việc đang được mở vào lúc này
- ActiveCell cuối cùng là một ô đi kèm với tất cả các thuộc tính và phương thức mà một ô bình thường đi kèm
Kích hoạt một ô từ phạm vi đã chọn
Để kích hoạt một ô bằng mã VBA, có hai cách bạn có thể sử dụng một phương thức “Kích hoạt” và phương thức “Chọn”
Sub vba_activecell[]
'select and entire range
Range["A1:A10"].Select
'select the cell A3 from the selected range
Range["A3"].Activate
'clears everything from the active cell
ActiveCell.Clear
End Sub
Đoạn mã trên, trước hết, chọn phạm vi A1. A10 và sau đó kích hoạt ô A3 trong số đó và cuối cùng, xóa mọi thứ khỏi ô đang hoạt động i. e. , A3
Giá trị trả về từ ô hiện hoạt
Đoạn mã sau trả về giá trị từ ô đang hoạt động bằng hộp thông báo
MsgBox ActiveCell.Value
Hoặc nếu bạn muốn lấy giá trị từ ô đang hoạt động và dán vào một ô riêng
Range["A1"] = ActiveCell.Value
Đặt ô hiện hoạt thành một biến
Bạn cũng có thể đặt ô hiện hoạt thành biến, giống như ví dụ sau
Sub vba_activecell[]
'declares the variable as range
Dim myCell As Range
'set active cell to the variable
Set myCell = ActiveCell
'enter value in the active cell
myCell.Value = Done
End Sub
Nhận số hàng và cột của ActiveCell
Với ô hiện hoạt, có một thuộc tính hàng và cột mà bạn có thể sử dụng để lấy số hàng và cột của ô hiện hoạt
MsgBox ActiveCell.Row
MsgBox ActiveCell.Column
Nhận địa chỉ của ô đang hoạt động
Bạn có thể sử dụng thuộc tính địa chỉ để lấy địa chỉ của ô đang hoạt động
MsgBox ActiveCell.Address
Khi bạn chạy đoạn mã trên, nó sẽ hiển thị cho bạn một hộp thông báo có địa chỉ ô của ô đang hoạt động của trang tính đang hoạt động của sổ làm việc đang hoạt động [như tôi đã đề cập trước đó]
Di chuyển từ ô hiện hoạt bằng Offset
Với thuộc tính offset, bạn có thể di chuyển đến một ô cách ô đang hoạt động một vài hàng và cột
Mặc dù bạn không cần quan tâm đến ô đang hoạt động khi đang làm việc trên trang tính, nhưng đây là một điều quan trọng cần biết khi làm việc với VBA trong Excel
Việc sử dụng đúng ô hiện hoạt trong Excel VBA có thể giúp bạn viết mã tốt hơn
Trong hướng dẫn này, trước tiên tôi giải thích ô hiện hoạt là gì, sau đó chỉ cho bạn một số ví dụ về cách sử dụng ô hiện hoạt trong VBA trong Excel
Hướng dẫn này bao gồm
Ô hiện hoạt trong Excel là gì?
Một ô hiện hoạt, như tên cho thấy, là ô hiện đang hoạt động sẽ được sử dụng khi bạn nhập bất kỳ văn bản hoặc công thức nào trong Excel
Ví dụ: nếu tôi chọn ô B5, thì B5 sẽ trở thành ô hiện hoạt của tôi trong trang tính. Bây giờ nếu tôi gõ bất cứ thứ gì từ bàn phím, nó sẽ được nhập vào ô này, bởi vì đây là ô đang hoạt động
Mặc dù điều này nghe có vẻ hiển nhiên, nhưng đây là điều không hiển nhiên như vậy – khi bạn chọn một dải ô, thậm chí sau đó bạn sẽ chỉ có một ô đang hoạt động
Ví dụ: nếu tôi chọn A1. B10, mặc dù tôi có 20 ô được chọn, tôi vẫn chỉ có một ô hoạt động
Vì vậy, bây giờ, nếu tôi bắt đầu nhập bất kỳ văn bản hoặc công thức nào, nó sẽ chỉ được nhập vào ô đang hoạt động
Bạn có thể xác định ô hiện hoạt bằng cách xem sự khác biệt về màu giữa ô hiện hoạt trong tất cả các ô khác trong vùng chọn. Bạn sẽ nhận thấy rằng ô hiện hoạt có màu sáng hơn các ô được chọn khác
Một cách nhanh chóng khác để biết ô nào là ô đang hoạt động là nhìn vào hộp Tên [trường nằm cạnh thanh công thức]. Tham chiếu ô của ô hiện hoạt sẽ được hiển thị trong Hộp Tên
Sử dụng Active Cell trong VBA trong Excel
Bây giờ tôi đã giải thích ô đang hoạt động trong trang tính trong excel là gì, hãy cùng tìm hiểu cách sử dụng ô đang hoạt động trong Excel VBA
Thuộc tính và phương pháp ô hoạt động
Trong VBA, bạn có thể sử dụng một ô đang hoạt động theo hai cách
- Để lấy thông tin về nó [chúng được gọi là Thuộc tính]
- Để thực hiện một số hành động trên nó [chúng được gọi là Phương thức]
Đây là cách bạn có thể truy cập tất cả các thuộc tính và phương thức của một ô đang hoạt động trong VBA
- Mở một Mô-đun trong trình soạn thảo VBA của Excel
- Nhập cụm từ 'ActiveCell'
- Nhập dấu chấm [. ] sau từ ActiveCell
Ngay sau khi bạn làm điều này, bạn sẽ nhận thấy rằng một tập hợp các thuộc tính và phương pháp xuất hiện dưới dạng trình đơn thả xuống [cái này được gọi là IntelliSense trong Excel VBA]
Trong trình đơn thả xuống xuất hiện, bạn sẽ thấy hai loại tùy chọn – loại có biểu tượng màu xanh lá cây và loại có biểu tượng màu xám [hình bàn tay]
Cái có biểu tượng màu xám là Thuộc tính và cái có biểu tượng màu xanh lục là Phương thức
Một số ví dụ về Phương thức sẽ bao gồm Kích hoạt, Thêm bình luận, Cắt, Xóa, Xóa, v.v. Như bạn có thể nhận thấy, đây là những hành động có thể được thực hiện trên ô hiện hoạt
Một số ví dụ về Thuộc tính sẽ bao gồm Địa chỉ, Phông chữ, HasFormula, Nội thất. Màu sắc. Tất cả những thứ này là thuộc tính của ô đang hoạt động cung cấp cho bạn thông tin về ô đang hoạt động đó
Ví dụ: bạn có thể sử dụng điều này để lấy địa chỉ ô của ô đang hoạt động hoặc thay đổi màu ô bên trong của ô
Bây giờ chúng ta hãy có một vài ví dụ mã VBA đơn giản mà bạn có thể sử dụng trong công việc hàng ngày của mình khi làm việc với ô hiện hoạt trong excel
Biến một ô thành ô hoạt động
Để biến bất kỳ ô nào thành ô hiện hoạt, trước tiên bạn phải đảm bảo rằng ô đó được chọn
Nếu bạn chỉ chọn một ô duy nhất, theo mặc định, ô đó sẽ trở thành ô hiện hoạt
Dưới đây là mã VBA để biến ô B5 thành ô hiện hoạt
Sub Change_ActiveCell[] Range["B5"].Activate End Sub
Trong mã VBA ở trên, trước tiên tôi đã chỉ định địa chỉ ô của ô mà tôi muốn kích hoạt [là B5], sau đó tôi sử dụng phương thức kích hoạt để biến nó thành ô hiện hoạt
Khi bạn chỉ muốn biến một ô thành ô hiện hoạt, bạn cũng có thể sử dụng phương thức chọn [mã bên dưới]
Sub Change_ActiveCell[] Range["B5"].Select End Sub
Như tôi đã đề cập trước đó, bạn chỉ có thể có một ô đang hoạt động ngay cả khi bạn đã chọn một dải ô
Với VBA, trước tiên bạn có thể chọn một dải ô, sau đó biến bất kỳ ô nào trong số đó thành ô hiện hoạt
Bên dưới mã VBA đầu tiên sẽ chọn phạm vi A1. B10, rồi đặt ô A5 thành ô hiện hoạt
________số 8Xóa ô hiện hoạt
Dưới đây là mã VBA trước tiên sẽ đặt ô A5 thành ô hiện hoạt, sau đó xóa nội dung của ô [nội dung ô cũng như bất kỳ định dạng nào được áp dụng cho ô]
Sub Clear_ActiveCell[] Range["A5"].Activate ActiveCell.Clear End Sub
Lưu ý rằng tôi đã chỉ cho bạn đoạn mã trên chỉ để cho bạn thấy phương thức rõ ràng hoạt động như thế nào với ô đang hoạt động. Trong VBA, bạn không cần phải luôn chọn hoặc kích hoạt ô để thực hiện bất kỳ phương thức nào trên đó
Ví dụ: bạn cũng có thể xóa nội dung của ô A5 bằng mã bên dưới
MsgBox ActiveCell.Value
0Lấy giá trị từ ô hiện hoạt
Bên dưới mã VBA có thể hiển thị cho bạn hộp thông báo hiển thị giá trị trong ô hiện hoạt
MsgBox ActiveCell.Value
1Tương tự, bạn cũng có thể sử dụng mã VBA đơn giản để hiển thị địa chỉ ô của ô đang hoạt động [mã bên dưới]
MsgBox ActiveCell.Value
2Đoạn mã trên sẽ hiển thị địa chỉ ở dạng tham chiếu tuyệt đối [chẳng hạn như $A$5]
Định dạng Ô hiện hoạt [Màu, Đường viền]
Bên dưới mã VBA sẽ làm cho ô đang hoạt động có màu xanh lam và thay đổi màu phông chữ thành màu trắng
MsgBox ActiveCell.Value
3Lưu ý rằng tôi đã sử dụng hằng số màu sẵn có [vbBlue và vbWhite]. Bạn cũng có thể sử dụng hằng số RGB. Ví dụ: thay vì vbRed, bạn có thể sử dụng RGB[255, 0, 0]
Bù đắp từ ô đang hoạt động
VBA trong Excel cho phép bạn tham chiếu đến các ô tương ứng với vị trí của ô đang hoạt động [điều này được gọi là bù trừ]
Ví dụ: nếu ô đang hoạt động của tôi là ô A1, tôi có thể sử dụng thuộc tính offset trên ô đang hoạt động và tham chiếu đến ô bên dưới nó bằng cách chỉ định vị trí của hàng đó tương ứng với ô đang hoạt động
Để tôi chỉ cho bạn một ví dụ
MsgBox ActiveCell.Value
4Đoạn mã trên trước tiên kích hoạt ô A1 và biến nó thành ô hiện hoạt. Sau đó, nó sử dụng thuộc tính offset trên ô đang hoạt động, để tham chiếu đến ô nằm bên dưới nó một hàng
Và trong cùng một dòng trong mã, tôi cũng đã gán một giá trị “Kiểm tra” cho ô nằm bên dưới ô đang hoạt động một hàng
Để tôi chỉ cho bạn một ví dụ khác trong đó việc bù trừ từ ô đang hoạt động có thể được sử dụng trong một tình huống thực tế
Dưới đây tôi có một mã VBA kích hoạt ô A1 trước tiên, sau đó sử dụng thuộc tính offset để phủ 10 ô bên dưới ô đang hoạt động và nhập các số từ 1 đến 10 vào ô A1. A10
MsgBox ActiveCell.Value
5Đoạn mã trên sử dụng vòng lặp For Next chạy 10 lần [và mỗi lần giá trị của biến 'i' tăng thêm 1]. Và vì tôi cũng đang sử dụng 'i' trong thuộc tính offset, nên nó sẽ tiếp tục giảm xuống một ô sau mỗi lần lặp lại
Nhận số hàng hoặc cột ActiveCell
Bên dưới mã VBA sẽ hiển thị cho bạn số hàng của ô đang hoạt động trong hộp thông báo
Sub Change_ActiveCell[] Range["B5"].Select End Sub0
Và đoạn mã dưới đây sẽ hiển thị cho bạn số cột trong hộp thông báo
Sub Change_ActiveCell[] Range["B5"].Select End Sub1
Gán giá trị ô hiện hoạt cho một biến
Bạn cũng có thể sử dụng VBA để gán ô hiện hoạt cho một biến. Khi điều này được thực hiện, bạn có thể sử dụng biến này thay vì ô hiện hoạt trong mã của mình
Và điều này giúp ích như thế nào?
Khi bạn gán ô hiện hoạt cho một biến, bạn có thể tiếp tục sử dụng biến này thay vì ô hiện hoạt. Lợi ích ở đây là không giống như ô đang hoạt động [có thể thay đổi khi các trang tính hoặc sổ làm việc khác được kích hoạt], biến của bạn sẽ tiếp tục tham chiếu đến ô đang hoạt động ban đầu mà nó được gán cho
Vì vậy, nếu bạn đang viết mã VBA chạy qua từng trang tính và kích hoạt các trang tính này, trong khi ô hiện hoạt của bạn sẽ thay đổi khi trang tính mới được kích hoạt, thì biến mà bạn đã gán cho ô hiện hoạt ban đầu sẽ không thay đổi
Dưới đây là mã ví dụ xác định biến 'varcell' và gán ô hiện hoạt cho biến này
Sub Change_ActiveCell[] Range["B5"].Select End Sub2
Chọn một dãy ô bắt đầu từ ô hiện hoạt
Và điều cuối cùng tôi muốn chỉ cho bạn về cách sử dụng ô hiện hoạt trong Excel VBA là chọn toàn bộ phạm vi ô bắt đầu từ ô hiện hoạt
Trường hợp sử dụng thực tế của điều này có thể là khi bạn muốn nhanh chóng định dạng một tập hợp các ô trong mỗi trang tính trong sổ làm việc của mình
Dưới đây là mã VBA sẽ chọn các ô trong 10 hàng và 10 cột bắt đầu từ ô hiện hoạt
Sub Change_ActiveCell[] Range["B5"].Select End Sub3
Khi chúng tôi chỉ định hai tham chiếu ô bên trong thuộc tính Phạm vi, VBA đề cập đến toàn bộ phạm vi được bao phủ giữa hai tham chiếu đó
Ví dụ: Phạm vi[Phạm vi[“A1”], Phạm vi[“A10”]]. Chọn sẽ chọn ô A1. A10
Tương tự, tôi đã sử dụng nó với ô đang hoạt động, trong đó tham chiếu đầu tiên chính là ô đang hoạt động và tham chiếu thứ hai bù cho ô đang hoạt động 10 hàng và 10 cột