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

Làm thế nào để chạy macro khi giá trị ô thay đổi trong Excel?

Thông thường, trong Excel, chúng ta có thể nhấn phím F5 hoặc nút Run để thực thi mã VBA. Tuy nhiên, bạn đã bao giờ thử chạy mã macro cụ thể khi giá trị ô thay đổi chưa? Bài viết này, tôi sẽ giới thiệu một số thủ thuật nhanh chóng để giải quyết công việc này trong Excel.

Chạy hoặc gọi macro khi một giá trị ô cụ thể thay đổi với mã VBA

Chạy hoặc gọi macro khi bất kỳ giá trị ô nào thay đổi trong một phạm vi có mã VBA


mũi tên màu xanh bong bóng bên phải Chạy hoặc gọi macro khi một giá trị ô cụ thể thay đổi với mã VBA

Để chạy mã macro bằng cách thay đổi giá trị ô, mã VBA sau có thể giúp bạn, 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 thực thi macro nếu giá trị ô thay đổi, rồi chọn Mã Chế độ xem từ menu ngữ cảnh và 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: Chạy macro khi giá trị ô thay đổi:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc chạy macro nếu ô thay đổi 1

Chú thích: Trong đoạn mã trên, A1 là ô cụ thể mà bạn muốn chạy mã dựa trên, mymacro là tên macro mà bạn muốn chạy. Vui lòng thay đổi chúng theo nhu cầu của bạn.

2. Và sau đó lưu và đóng cửa sổ mã, bây giờ, khi bạn nhập hoặc thay đổi giá trị trong ô A1, mã cụ thể sẽ được kích hoạt cùng một lúc.


mũi tên màu xanh bong bóng bên phải Chạy hoặc gọi macro khi bất kỳ giá trị ô nào thay đổi trong một phạm vi có mã VBA

Nếu bạn muốn chạy hoặc kích hoạt macro khi bất kỳ giá trị ô nào thay đổi trong một phạm vi ô, đoạn mã sau có thể giúp bạn.

1. Bấm chuột phải vào tab trang tính mà bạn muốn thực thi macro nếu giá trị ô thay đổi, rồi chọn Mã Chế độ xem từ menu ngữ cảnh và 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: Chạy macro khi bất kỳ giá trị ô nào thay đổi trong một phạm vi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc chạy macro nếu ô thay đổi 2

Chú thích: Trong đoạn mã trên, A1: B100 là các ô cụ thể mà bạn muốn chạy mã dựa trên, mymacro là tên macro mà bạn muốn chạy. Vui lòng thay đổi chúng theo nhu cầu của bạn.

2. Và sau đó lưu và đóng cửa sổ mã, bây giờ, khi bạn nhập hoặc thay đổi giá trị trong bất kỳ ô nào của A1: B100, mã cụ thể sẽ được thực thi cùng một lúc.


Xóa tất cả các macro khỏi nhiều sổ làm việc

Kutools cho Excel's Hàng loạt Xóa tất cả Macro tiện ích có thể giúp bạn xóa tất cả các macro khỏi nhiều sổ làm việc khi bạn cần. Tải xuống và dùng thử miễn phí Kutools cho Excel ngay bây giờ!

Kutools cho Excel: với hơn 300 bổ trợ Excel tiện dụng, dùng thử miễn phí không giới hạn trong 30 ngày. Tải xuống và dùng thử miễn phí ngay!


Các bài liên quan:

Làm cách nào để chạy macro tự động trước khi in trong Excel?

Làm thế nào để chạy macro dựa trên giá trị ô trong Excel?

Làm cách nào để chạy macro dựa trên giá trị được chọn từ danh sách thả xuống trong Excel?

Làm thế nào để chạy macro bằng cách nhấp vào siêu liên kết trong Excel?

Làm cách nào để chạy macro khi trang tính được chọn từ sổ làm việ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 (17)
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
Mô-đun này không hoạt động đối với tôi. Nó cho biết khi GIÁ TRỊ của ô thay đổi, nó sẽ thực thi mã. Tôi thấy nếu tôi GỬI vào ô thì nó hoạt động, nhưng nếu giá trị của ô được thay đổi bởi một công thức, chẳng hạn như Counta, thì nó không thực thi. Bạn có giải pháp nào để thực thi macro khi GIÁ TRỊ thay đổi qua một công thức không? Cảm ơn, Wayne
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vấn đề tương tự như Wayne. Bất kỳ giúp đỡ nhiều đánh giá cao! Cảm ơn Ronnie
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, các bạn,

Có, mã trên chỉ khả dụng khi giá trị ô thay đổi theo cách thủ công, nếu bạn cần tự động chạy 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, vui lòng truy cập bài viết này:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Hãy thử nó, và hy vọng trả lời của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nó không hoạt động ... và tôi đang thay đổi giá trị ô theo cách thủ công. Có bất kỳ cấu hình sẵn nào phải được thiết lập 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
Kiểm tra điều này trong quy trình và sử dụng làm tham số


Worksheet_Change phụ riêng tư (Mục tiêu ByVal dưới dạng phạm vi)

MsgBox Target.Address & "-" e Target.AddressLocal

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
Vâng, mô tả nói rằng nó sẽ kích hoạt khi giá trị thay đổi, nhưng mã thứ hai cho biết đó là khi giá trị không có gì và mã đầu tiên không kích hoạt khi giá trị thay đổi, nhưng nếu tôi nhấn F5 khi xem mã, nó muốn để kích hoạt MyMacro, nhưng dường như không phản ứng với các thay đổi giá trị nhiều như chuyển từ không sang thứ gì đó hoặc ngược lại.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này làm việc lần đầu tiên đối với tôi bằng cách sử dụng danh sách xác thực dữ liệu hiển thị văn bản dựa trên lựa chọn danh sách.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm việc rất tốt cho tôi! Vấn đề khó xử của tôi là tôi muốn nó là một macro tham chiếu tương đối và có sự khác biệt giữa việc nhấn enter để lưu mục nhập và xóa để xóa ô.
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, mã hữu ích. Tôi đang nghĩ liệu có thể chèn một vòng quanh các ô được thay đổi khi chúng được thay đổi không? Và đặt lại các vòng kết nối vào thứ Hai hàng tuần?
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 Kevin,
Đây là không có ý tưởng để giải quyết vấn đề của bạn, nếu bạn có bất kỳ giải pháp tốt, xin vui lòng bình luận tại đây.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Macro mà bạn đang gọi, bạn có cái này nằm ở đâu? Tôi có của tôi trong thư mục Mô-đun nhưng khi tôi đặt bất kỳ giá trị nào vào bất kỳ ô nào của trang tính, tôi gặp lỗi Biên dịch cho biết:
Biến hoặc thủ tục mong đợi, không phải mô-đun.

Xin vui lòng giúp đỡ.
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, DrCartwright,
Xin lỗi vì đã trả lời bạn quá muộn.
Có, như bạn đã nói, mã macro phải được đặt trong Mô-đun và bạn cần thay đổi tên mã thành tên của chính mình như hình minh họa sau:
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào buổi chiều tốt lành
quisiera saber el codigo para que se hoạt động una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por công thức, sin que el usuario giới thiệu ningun valor.
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 các bạn, tôi đang giải quyết vấn đề sau: Tôi muốn xóa tiêu đề của trang web khi liên kết được chèn vào cột A và đặt giá trị này vào ô có liên quan (bên cạnh nó) trong cột B. Vấn đề là khi tôi dán trang web trong cột A, mã chạy lại toàn bộ danh sách từ cột A2 đến "hàng cuối cùng" như được xác định trong mã. Có cách nào để chỉ sửa đổi cột B khi một cột A được sửa đổi không? Tức là nếu Ipaste một liên kết trong cột A36, tôi sẽ nhận được tiêu đề trong B36, bất kể ô nằm ở giữa phạm vi đã sử dụng hay ở dưới cùng. Tôi muốn sử dụng điều này mà không cần phải chạy lại nhiều đầu vào như hiện tại; (tức là vòng lặp "cho i = 2 đến hàng cuối cùng")? Ngoài ra, tôi muốn thay đổi bên dưới từ macro Mô-đun tức là sub sang sub private phản ứng để thay đổi (tức là hàm giao nhau) trong đó 'target' là bất kỳ ô nào từ phạm vi A: A. Cảm ơn nhiều!


Sub get_title_header ()



Làm mờ wb dưới dạng đối tượng

Làm mờ tài liệu làm đối tượng

Làm mờ sURL dưới dạng chuỗi

Dim cuối cùng As Long

lastrow = Sheet1.Cells (Rows.Count, "A"). End (xlUp) .row



Đối với i = 2 Đến cuối cùng

Đặt wb = CreateObject ("internetExplorer.Application")

sURL = Ô (i, 1)



wb.navigate sURL

wb.Vible = Sai



Trong khi wb.Busy

làm sự kiện

Wend



'' Tài liệu HTML

Đặt doc = wb.document



Cells (i, 2) = doc.Title



Lỗi GoTo err_clear

Cells (i, 3) = doc.GetElementsByTagName ("h1") (0) .innerText

err_clear:

Nếu Err <> 0 Thì

Err.Clear

Tiếp tục Tiếp theo

Cuối Nếu

wb.Quit

Phạm vi (Ô (i, 1), Ô (i, 3)). Cột.AutoFit

Tiếp theo



End Sub




Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang cố gắng tự động hóa 1 sổ làm việc (BOM) khi một sổ làm việc khác (Trạng thái Bộ phận) thực hiện thay đổi. Tệp trạng thái Bộ phận cập nhật 15 phút một lần. Tôi cần biết cách tự động hóa một cột cụ thể khi những thay đổi này xảy ra? Mọi ý kiến
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang sử dụng mã bên dưới để ẩn các cột khác nhau tùy thuộc vào lựa chọn từ hộp thả xuống nằm trong ô C3, nhưng sau khi thực hiện một phép tính ở bất kỳ vị trí nào trong trang tính, TẤT CẢ các cột đều trở thành UNHIDDEN. Làm cách nào để sửa lỗi này?

Private Sub Worksheet_Change (ByVal Target As Range)

Các cột ("D: F"). AutoFit

Dim Proj1 dưới dạng chuỗi
Dim Proj2 dưới dạng chuỗi
Dim Proj3 dưới dạng chuỗi
Dim Proj4 dưới dạng chuỗi
Dim Proj5 dưới dạng chuỗi
Dim Proj6 dưới dạng chuỗi
Dim Proj7 dưới dạng chuỗi
Dim Proj8 dưới dạng chuỗi
Dim Proj9 dưới dạng chuỗi
Dim Proj10 dưới dạng chuỗi

Proj1 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A1"). Giá trị
Proj2 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A2"). Giá trị
Proj3 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A3"). Giá trị
Proj4 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A4"). Giá trị
Proj5 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A5"). Giá trị
Proj6 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A6"). Giá trị
Proj7 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A7"). Giá trị
Proj8 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A8"). Giá trị
Proj9 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A9"). Giá trị
Proj10 = ActiveWorkbook.Sheets ("Dự án"). Phạm vi ("A10"). Giá trị

Làm mờ xRG theo phạm vi
Dim xHrow dưới dạng số nguyên
Đặt xRG = Range ("C3")
Nếu không giao nhau (Target, xRG) thì không có gì

Nếu Target.Value = Proj1 Thì
Application.Columns ("E: F"). Hidden = True
Application.Columns ("D"). Hidden = False

ElseIf Target.Value = Proj2 Sau đó
Phạm vi ("D: D, F: F"). EntireColumn.Hidden = True
Application.Columns ("E"). Hidden = False

Cuối Nếu
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
Đây chính xác là những gì tôi đang tìm kiếm. Khi người dùng nhập một giá trị vào một ô, một macro sắp xếp đơn giản sẽ chạy. Macro tự chạy tốt nhưng tôi gặp lỗi sử dụng thuộc tính không hợp lệ khi sử dụng mã được đề xuất.

Điều gì có thể là vấn đề?
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