Macro khi ô Excel thay đổi - Mẹo Excel

Mục lục

Một số độc giả đã đặt câu hỏi yêu cầu Excel chạy một phần macro mỗi khi giá trị thay đổi trong bảng tính Excel.

Đầu tiên, phương pháp được cải tiến chỉ có trong XL97: Excel 97 có một số trình xử lý sự kiện mới cho phép chạy macro mỗi khi ô thay đổi.

Giả sử rằng bất cứ lúc nào giá trị lớn hơn 100 được nhập vào cột A, bạn muốn định dạng ô bên cạnh nó thành màu đỏ.

  • Mở Visual Basic Edit (Công cụ> Macro> Visual Basic Editor)
  • Trong cửa sổ bên trái, nhấp chuột phải vào Sheet1 và chọn Mã Chế độ xem.
  • Ở đầu hộp thoại Book1 - Sheet1 Code, có hai danh sách thả xuống. Từ menu thả xuống bên trái, chọn Trang tính. Từ menu thả xuống bên phải, chọn Thay đổi.
  • Nhập các dòng mã sau:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Bất kỳ lúc nào giá trị trong ô bị thay đổi, macro này sẽ được chạy. Biến Target sẽ cho bạn biết ô nào và giá trị mới của ô đó. Đáng ngạc nhiên là sử dụng phương pháp này không làm chậm quá trình một cách đáng kể.

Lưu ý rằng macro sẽ vẫn hoạt động miễn là trang tính được mở hoặc cho đến khi bạn chạy macro có dòng sau:

Application.EnableEvents = False

/ p> Trong Excel 95 / 7.0: Bạn cần sử dụng phương pháp OnEntry. Bạn chỉ định macro mà bạn muốn chạy sau khi nhập bất kỳ giá trị nào. Trong trường hợp này, biến Application.Caller chứa địa chỉ và giá trị đã thay đổi. Nhập thông tin sau vào mô-đun mới:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Kiểm tra OnEntry sẽ vẫn hoạt động cho đến khi bạn chạy macro có mã sau:

Worksheets("Sheet1").OnEntry = False

thú vị bài viết...