Sự Kiện Trong VBA

Menu Tự học VBA
  • Trang chủ
  • Diễn đàn Bài viết mới Tìm chủ đề
  • Có gì mới Bài viết mới Hoạt động mới nhất
Đăng nhập Đăng ký Có gì mới? Tìm kiếm

Tìm kiếm

Everywhere Chủ đề This forum This thread Chỉ tìm trong tiêu đề Bởi: Tìm Tìm kiếm nâng cao…
  • Bài viết mới
  • Tìm chủ đề
Menu Đăng nhập Đăng ký
  • Cách upload ảnh lên diễn đàn
  • Trang chủ
  • Diễn đàn
  • Kỹ thuật xử lý Excel
  • Class Module
Sự kiện trong VBA
  • Thread starter thanhphong
  • Ngày gửi 1/10/21
T

thanhphong

Guest
Lời mở đầu Topic này tôi sẽ giới thiệu phương pháp sử dụng sự kiện bằng macro VBA Excel. Sự kiện nghĩa là một đoạn code sẽ được thực thi khi một thao tác nào đó xảy ra làm biến đổi cái gì đó. Sự kiện là gì Chẳng hạn khi bạn click vào một nút bấm, đó là sự kiện. Khi bạn mở một file excel, đó là một sự kiện. Khi bạn nhập dữ liệu lên một sheet, đó cũng là sự kiện. Ứng với mỗi sự kiện đó, chúng ta sẽ viết code để nó thực thi một công việc nào đó. Nhận biết sự kiện Trong VBE (nơi viết code VBA), từ Project, các bạn click đúp lên sheet mà các bạn muốn viết sự kiện, hoặc click vào ThisWorkbook. Bạn cần đăng nhập để thấy đính kèm Ở cửa sổ bên trái (General) bạn click chọn Worksheet . Bạn cần đăng nhập để thấy đính kèm Ở cửa sổ bên phải (Declarations ) là nơi chúng ta lựa chọn sự kiện. Bạn cần đăng nhập để thấy đính kèm Một thủ tục sẽ được tạo ra. Đây là thủ tục sẽ thực thi khi sự kiện này phát sinh. Chúng ta sẽ viết code vào bên trong thủ tục này. Bạn cần đăng nhập để thấy đính kèm Trong thủ tục chứa đối số (ở ví dụ trên các bạn thấy đối số là Target ). Khi một cái gì đó thay đổi thì đối số này sẽ chứa thông tin ứng với sự thay đổi đó. Mã: 'Target cua su kien Change la Cells bi thay doi thong tin Private Sub Worksheet_Change(ByVal Target As Range) Target.Font.Color = RGB(255, 0, 0) ' Gia tri cua cell thay doi, cells se duoc to mau do End Sub Nếu chúng ta dùng ActiveX Control, thì việc tạo sự kiện cho nó cũng tươgn tự như với sheet ở trên. Bạn cần đăng nhập để thấy đính kèm Còn nữa. Đề nghị các bạn không comment vào topic này cho tới khi có thông báo đã dịch xong. Tham khảo và dịch từ : Bạn cần đăng nhập để thấy link B

bvtvba

Guest
Sự kiện với sheet :
Tên sự kiệnÝ nghĩa
ActivateKhi sheet được active (sẵn sàng cho trạng thái nhập dữ liệu)
BeforeDeleteTrước khi sheet được xóa
BeforeDoubleClickKhi click đúp vào cells, ngay trước khi thao tác click đúp được tiến hành
BeforeRightClickKhi click chuột phải vào cells, ngay trước khi thao tác click chuột phải được tiến hành
CalculateSau khi được tính toán lại trên sheet (cells tham chiếu được thay đổi)
ChangeKhi cells thay đổi (chẳng hạn như khi nhập giá trị)
DeactivateKhi sheet không còn ở trạng thái kích hoạt
FollowHyperlinkKhi click vào đường link có trên sheet
LensGalleryRenderCompleteKhi các biểu tượng thư viện dòng dẫn đầu (động và tĩnh) được hiển thị (THVBA: Tôi chưa hiểu mục này)
PivotTableAfterValueChangeSau khi một ô hoặc dải ô trong bảng tổng hợp đã được chỉnh sửa hoặc tính toán lại
PivotTableBeforeAllocateChangesTrước khi các thay đổi được áp dụng cho bảng tổng hợp
PivotTableBeforeCommitChangesTrước khi các thay đổi đối với nguồn dữ liệu OLAP của bảng tổng hợp được áp dụng
PivotTableBeforeDiscardChangesTrước khi các thay đổi đối với bảng tổng hợp bị hủy
PivotTableChangeSyncSau khi bảng tổng hợp đã thay đổi
PivotTableUpdateKhi bảng tổng hợp được cập nhật
SelectionChangeKhi lựa chọn ô thay đổi
TableUpdateSau khi bảng truy vấn được kết nối với mô hình dữ liệu được cập nhật trong trang tính
Y

Yukino Ichikawa

VIP

Ở bài trên các bạn đã được giới thiệu các sự kiện của Worksheet. Sau đây tôi sẽ giới thiệu các sự kiện của Workbook.
Tên sự kiệnÝ nghĩa
ActivateWorkbook được kích hoạt
AddinInstallPhát sinh sau khi Addin được cài đặt
AddinUninstallPhát sinh sau khi Addin được hủy bỏ
AfterSavePhát sinh sau khi workbook được save
AfterXmlExportPhát sinh sau khi lưu dữ liệu XML vào workbook của Microsoft Office Excel. Hoặc sau khi xuất dữ liệu (Export).
AfterXmlImportSau khi dữ liệu XML được làm mới, hoặc khi nạp dữ liệu XML vào workbook.
BeforeCloseTrước khi đóng workbook. Hoặc khi workbook có sự thay đổi và người dùng lưu sự thay đổi này thì sự kiện sẽ phát sinh ngay trước khi điều này xảy ra.
BeforePrintSự kiện phát sinh trước khi thực hiện lệnh in.
BeforeSaveSự kiện phát sinh ngay trước khi workbook được lưu.
BeforeXmlExportPhát sinh trước khi lưu dữ liệu XML vào workbook của Microsoft Office Excel. Hoặc sau khi xuất dữ liệu (Export).
BeforeXmlImportTrước khi dữ liệu XML được làm mới, hoặc khi nạp dữ liệu XML vào workbook.
DeactivateWorkbook hủy kích hoạt
ModelChangeXảy ra sau khi mô hình dữ liệu Excel đã thay đổi.
NewChartPhát sinh khi có đồ thị biểu đồ mới được tạo ra trên workbook.
NewSheetPhát sinh khi có sheet mới được tạo ra.
OpenKhi workbook được mở ra.
PivotTableCloseConnectionBáo cáo PivotTable xảy ra sau khi bạn đóng kết nối với nguồn dữ liệu đó.
PivotTableOpenConnectionBáo cáo PivotTable xảy ra sau khi thiết lập kết nối với nguồn dữ liệu đó.
RowsetCompleteSự kiện xảy ra khi người dùng gọi hành động tập hợp hàng trên bảng tổng hợp OLAP hoặc xem tập hợp bản ghi chi tiết.
SheetActivateXảy ra khi trang tính hoạt động.
SheetBeforeDeleteXảy ra trước khi trang tính bị xóa.
SheetBeforeDoubleClickXảy ra khi một trang tính được nhấp đúp, trước khi quá trình nhấp đúp mặc định diễn ra.
SheetBeforeRightClickXảy ra khi một trang tính được nhấp chuột phải, trước khi quá trình nhấp chuột phải mặc định diễn ra.
SheetCalculateXảy ra sau khi trang tính đã được tính toán lại hoặc sau khi dữ liệu sửa đổi đã được vẽ trên biểu đồ.
SheetChangeXảy ra khi một ô trang tính được sửa đổi bởi người dùng hoặc một liên kết bên ngoài.
SheetDeactivateXảy ra khi trang tính không hoạt động.
SheetFollowHyperlinkXảy ra khi người dùng click vào đường link liên kết trên workbook.
SheetLensGalleryRenderCompleteXảy ra sau khi các biểu tượng thư viện dòng dẫn đầu trang tính (động và tĩnh) đã được hiển thị.
SheetPivotTableAfterValueChangeXảy ra sau khi một ô hoặc dải ô trong bảng tổng hợp đã được chỉnh sửa hoặc tính toán lại.
SheetPivotTableBeforeAllocateChangesXảy ra trước khi các thay đổi được áp dụng cho PivotTable.
SheetPivotTableBeforeCommitChangesXảy ra trước khi các thay đổi đối với nguồn dữ liệu PivotTable OLAP được áp dụng.
SheetPivotTableBeforeDiscardChangesXảy ra trước khi các thay đổi đối với PivotTable bị loại bỏ.
SheetPivotTableChangeSyncXảy ra sau khi bảng tổng hợp đã thay đổi.
SheetPivotTableUpdateXảy ra sau khi trang báo cáo PivotTable đã được cập nhật.
SheetSelectionChangeXảy ra khi vùng chọn thay đổi trong trang tính. Nó không xảy ra khi vùng chọn ở dạng biểu đồ.
SheetTableUpdateXảy ra sau khi bảng chỗ ngồi đã được cập nhật.
SyncXảy ra khi bản sao cục bộ của trang tính có trong không gian làm việc tài liệu được đồng bộ hóa với bản sao trên máy chủ.
WindowActivateXảy ra khi cửa sổ sổ làm việc hoạt động.
WindowDeactivateXảy ra khi cửa sổ sổ làm việc không hoạt động.
WindowResizeXảy ra khi cửa sổ làm việc của workbook được thay đổi kích thước.
Y

Yukino Ichikawa

VIP

Vô hiệu hóa sự kiện Để vô hiệu hóa sự kiện ta sử dụng Application.EnableEvents = False Mã: Application.EnableEvents = False 'Tại đây không phát sinh sự kiện Application.EnableEvents = True Sau khi xử lý xong, ta kích hoạt lại bắt sự kiện bằng lệnh Application.EnableEvents = True Làm phát sinh sự kiện Bạn không thể tạo ra các sự kiện liên quan tới sheet hay nút bấm (button). Những sự kiện này phát sinh tự động bởi thao tác Excel hay bằng VBA. Khi bạn muốn tạo ra một sự kiện, hãy tạo ra một hàm để thực hiện xử lý đó, và gọi hàm đó ra. Mã: Sub Main_thucthi() Call SelectionChangeCore(Range("A1")) 'Gọi hàm xử lý sự kiện End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call SelectionChangeCore(Target) 'Gọi hàm xử lý sự kiện End Sub Private Sub SelectionChangeCore(ByVal Target As Range) ' Xử lý sự kiện ở đây End Sub Nếu là sự kiện được tạo bởi class ta đều có thể kích hoạt nó. D

Davicnguyen

Yêu THVBA
Yukino Ichikawa nói: Vô hiệu hóa sự kiện Để vô hiệu hóa sự kiện ta sử dụng Application.EnableEvents = False Mã: Application.EnableEvents = False 'Tại đây không phát sinh sự kiện Application.EnableEvents = True Sau khi xử lý xong, ta kích hoạt lại bắt sự kiện bằng lệnh Application.EnableEvents = True Làm phát sinh sự kiện Bạn không thể tạo ra các sự kiện liên quan tới sheet hay nút bấm (button). Những sự kiện này phát sinh tự động bởi thao tác Excel hay bằng VBA. Khi bạn muốn tạo ra một sự kiện, hãy tạo ra một hàm để thực hiện xử lý đó, và gọi hàm đó ra. Mã: Sub Main_thucthi() Call SelectionChangeCore(Range("A1")) 'Gọi hàm xử lý sự kiện End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call SelectionChangeCore(Target) 'Gọi hàm xử lý sự kiện End Sub Private Sub SelectionChangeCore(ByVal Target As Range) ' Xử lý sự kiện ở đây End Sub Nếu là sự kiện được tạo bởi class ta đều có thể kích hoạt nó. Nhấn để mở rộng...
E có ô A1 có dữ liệu là 20 và ô A2 có công thức lấy dữ liệu từ ô A1 khi e sửa dữ liệu ô A1 thì ô A1 được tô màu còn ô A2 thì không. Vậy làm thế nào để tô màu cả ô có công thức lấy dữ liệu từ ô đó ạ T

Thvba84

Yêu THVBA
Davicnguyen nói: E có ô A1 có dữ liệu là 20 và ô A2 có công thức lấy dữ liệu từ ô A1 khi e sửa dữ liệu ô A1 thì ô A1 được tô màu còn ô A2 thì không. Vậy làm thế nào để tô màu cả ô có công thức lấy dữ liệu từ ô đó ạ Nhấn để mở rộng...
Code để tìm công thức liên quan đến cell, nếu có liên kết thì bôi màu, không thì thôi. Bạn phải đăng nhập hoặc đăng ký để bình luận. Chia sẻ: Facebook Twitter WhatsApp Email Link
  • Trang chủ
  • Diễn đàn
  • Kỹ thuật xử lý Excel
  • Class Module
Top

Từ khóa » Sự Kiện Worksheet_change Trong Vba