Nguyễn Thế Trung
Nguyễn Thế Trung
Thảo luận 1 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 381 lượt xem

Theo em tìm hiểu ApplicationEnableEvents được dùng để ngăn event chạy Ví dụPrivate

Theo em tìm hiểu, Application.EnableEvents được dùng để ngăn event chạy. Ví dụ:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True

Columns(Target.Column).AutoFit
End Sub

Cho em hỏi, tại sao chúng ta phải sử dụng Application.EnableEvents thì code trong ví dụ trên mới chạy như mong muốn?
Thảo luận 1 câu trả lời
Lượt xem 381 lượt xem
Vỗ tay vỗ tay
Nguyễn Thế Trung 21:04 - Apr 01, 2020
Với lệnh trên, mục đích chính của sự kiện là muốn tự động chỉnh độ rộng cột theo dữ liệu bạn nhập vào. Như thế chỉ cần lệnh Columns(Target.Column).AutoFit là đủ.
Phần lệnh:
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
ở đây là để tránh các lỗi, các sự kiện có thể xảy ra khi xét Target.Value = UCase(Target.Value)
mà lệnh này không cần thiết lắm (vì không liên quan tới việc AutoFit ở dưới).
Thường chạy code thì tập trung vào 1 số lệnh để tăng tốc:
Application.ScreenUpdating (nháy màn hình)
Application.DisplayArlets (các thông báo)
Application.Calculation (chế độ tính toán)
Còn cũng khá hạn chế việc dùng EnableEvents
---
Ngoài ra khi sử dụng AutoFit thì bạn cần cân nhắc việc khi không có dữ liệu trong cột thì độ rộng cột nên để trở về độ rộng mặc định (ColumnWidth = 8.11)
Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông