Note: The other languages of the website are Google-translated. Back to English

 Làm cách nào để tự động chạy macro khi kết quả công thức ô thay đổi?

Giả sử, tôi có một danh sách các công thức dựa trên dữ liệu trong cột A và cột B như ảnh chụp màn hình sau đây, bây giờ, tôi muốn tự động chạy một mã macro cụ thể khi kết quả công thức thay đổi với các ô tương đối của nó thay đổi. Có ý tưởng hay nào để giải quyết công việc này trong Excel không?

Tự động chạy macro khi kết quả công thức ô thay đổi với mã VBA


Tự động chạy macro khi kết quả công thức ô thay đổi với mã VBA

Mã VBA sau có thể giúp bạn tự động thực thi một mã cụ thể khi ô kết quả công thức thay đổi, vui lòng thực hiện như sau:

1. Bấm chuột phải vào tab trang tính mà bạn muốn sử dụng, sau đó chọn Mã Chế độ xem từ menu ngữ cảnh, trong Microsoft Visual Basic cho các ứng dụng cửa sổ, sao chép và dán mã sau vào Mô-đun trống:

Mã VBA: Tự động chạy macro khi kết quả công thức ô thay đổi:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

Chú thích: Trong đoạn mã trên, C2: C8 là phạm vi ô công thức mà bạn muốn sử dụng ,maco1 là tên của macro bạn muốn chạy tự động. Vui lòng thay đổi nó theo nhu cầu của bạn.

2. Sau đó, lưu và đóng cửa sổ mã này, bây giờ, khi dữ liệu trong phạm vi A2: B8 thay đổi khiến kết quả công thức thay đổi, mã macro cụ thể của bạn sẽ được kích hoạt cùng một lúc.


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (10)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn rất nhiều! Điều này thực sự đã giúp tôi ra ngoài.
Có phương pháp nào để lấy địa chỉ của ô đã thay đổi không (với công thức tức là Cột C trong ví dụ này).
Cảm ơn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điểm của điều kiện là gì? Nó sẽ luôn trả về true ... nói cách khác: nó sẽ chạy mà không có nó. Điều này cũng chạy bất cứ khi nào bất kỳ ô nào trên trang tính thay đổi giá trị.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vì vậy, tên macro của tôi là gì. Tôi có thể tìm thấy tên macro của mình ở đâu?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Cenk,
Tên macro là mã macro bạn đã chèn vào tệp Excel và bạn chỉ cần thay đổi Macro1 trong mã trên thành mã của riêng bạn.
Ví dụ: tôi chèn một mã ở đây và tên macro là: ColorCompanyDuplicates

Màu phụCompanyDuplicates ()
'Cập nhật bởi Extendoffice 20160704
Dim xRg theo phạm vi
Làm mờ xTxt dưới dạng chuỗi
Dim xCell As Range
Làm mờ xChar thành chuỗi
Dim xCellPre As Range
Dim xCIndex miễn là
Bộ sưu tập Dim xCol As
Dim I As Long
On Error Resume Next
Nếu ActiveWindow.RangeSelection.Count> 1 Thì
xTxt = ActiveWindow.RangeSelection.AddressLocal
Khác
xTxt = ActiveSheet.UsedRange.AddressLocal
Cuối Nếu
Đặt xRg = Application.InputBox ("vui lòng chọn dải dữ liệu:", "Kutools cho Excel", xTxt,,,,, 8)
Nếu xRg không có gì thì thoát Sub
xC Index = 2
Đặt xCol = Bộ sưu tập mới
Đối với mỗi xCell Trong xRg
On Error Resume Next
xCol.Add xCell, xCell.Text
Nếu Err.Number = 457 thì
xC Index = xC Index + 1
Đặt xCellPre = xCol (xCell.Text)
Nếu xCellPre.Interior.ColorIndex = xlNone Thì xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Sau đó
MsgBox "Quá nhiều công ty trùng lặp!", VbCritical, "Kutools cho Excel"
Thoát Sub
Cuối Nếu
Về lỗi GoTo 0
Sau
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
xin lỗi nó không hoạt động nó hoạt động nếu tôi nhập dữ liệu theo cách thủ công. nhưng tôi muốn nó hoạt động tự động bcz dữ liệu của tôi đang cập nhật bằng rand calcaulate
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
"Đặt Xrg = Range (" C2: C8 ")
If Not Intersect (Xrg, Range ("C2: C8")) Không có gì thì "
tình trạng này LUÔN LUÔN gặp phải ....
Có lý ???
Hay có điều gì đó tôi không hiểu?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đúng rồi, bạn đã giải quyết vấn đề này chưa, và bạn có thể chia sẻ cho tôi được không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Này các cậu,
Tôi đã sử dụng mã sau cho vấn đề này, hy vọng nó sẽ giúp ai đó:

Private Sub Worksheet_Calculate ()
Giá trị cũ tĩnh
Nếu Phạm vi ("MyNamedRange") <> oldValue Thì
Code Here
oldValue = Range ("MyNamedRange"). Giá trị
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Này các cậu,
Dưới đây là mã và tôi muốn khóa các ô A2 và A3 sau khi ô A1 (A1 = B1 + C1) đang thay đổi trong kết quả thay đổi B1 hoặc C1 hoặc cả hai. Nhưng nó không hoạt động. Bất cứ ai có thể giúp đỡ với điều đó, xin vui lòng?

Private Sub Worksheet_Calculate ()

Dim sPass
sPass = "123"
Dim rng As Range
Đặt rng = [A2: A3]
If Not Intersect (rng, [A1]) Is Nothing then
Với ActiveSheet
.Unprotect Password: = sPass
.Cells.Locked = Sai
Giá trị cũ tĩnh
Nếu Phạm vi ("A1") <> oldValue Thì
rng.Locked = Đúng
.Protect Password: = sPass
oldValue = Range ("A1"). Giá trị

Cuối Nếu
Kết thúc với

Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào nhóm,

Tôi biết đây là một chủ đề cũ nhưng làm thế nào để có sự kết hợp giữa phương pháp tính toán này và điều này: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

Mục tiêu là ghi lại một ngày trên ô tiếp theo mỗi khi các giá trị được tính thay đổi cho mỗi ô trong một cột.

Trân trọng,
James
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL