Nhờ giúp đỡ – Tự động chay macro khi giá trị trong Ô ( có công thức) thay đổi
Xin được phép mở lại chủ đề nhờ mọi người giúp đỡ vì trước đó cũng có chủ đề tương tự nhưng không giải quyết được vấn đề
Tự động chạy macro khi thay đổi Ô giá trị – nhưng do ô là công thức không thay đổi, không được gọi là macro như vậy nhờ các bác chỉ giúp.
topic cũ
www.giaiphapexcel.com/diendan/threads/t%E1%BB%B1-%C4%91%E1%BB%99ng-ch%E1%BA%A1y-macro-khi-thay-%C4%91%E1%BB%95i-gi%C3%A1-tr%E1%BB%8B-cell.7019/
Điều gì làm thay đổi ô chứa công thức vậy bạn? Ví dụ ô chứa công thức là: E3 và công thức của nó là =A1+A2
Vì nó chứa công thức nên nó không chạy sự kiện Change, thế thì 1 trong 2 ô A1 và A2 là nhân tố có thể thay đổi, vậy thì sự kiện Change thay vì lấy E3 làm Target, thì lấy 2 ô tham chiếu kia làm Target.
Private Sub Worksheet_Calculate()
'Call SubXYZ
End Sub.
Làm như vậy cũng chưa ổn, bởi vì có khi giá trị của sheet này nhưng công thức lại link từ sheet khác, nếu ta không Active sheet này thì sự kiện không được thực hiện, vậy thì ta phải bao quát hơn mà chọn sự kiện trong ThisWorkbook.
Tại Module của ThisWorkbook ta chép các sự kiện này vào trong đó:
Public pubValue
Private Sub Workbook_Activate()
pubValue = Sheet1.Range("E3").Value
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If pubValue <> Sheet1.Range("E3").Value Then
MsgBox "Nó kìa!"
pubValue = Sheet1.Range("E3").Value
End If
End Sub
Với ô E3 là ô chứa công thức trong Sheet1 nhằm để chạy sự kiện.
Cảm ơn bạn đã quan tâm, vd ô E3 của minh là điều kiện liên kết công thức từ các sheet khác hoặc mình làm nó thay đổi khi dung spin button
Tôi đã viết tổng quát cho bạn tại bài số #4. Bạn kiểm tra đi.
cảm ơn anh, tôi đã làm theo nhưng không được, có tập tin đang làm nhờ anh xem giúp
Thế bạn muốn chạy sự kiện trên ô nào của sheet nào vậy? Bạn không đọc kỹ bài #4 và tôi kêu bạn làm gì bạn không làm theo, tôi ghi 2 sự kiện và một biến Public bạn cũng không copy đầy đủ, bảo sao nó không chạy?
www.giaiphapexcel.com/diendan/threads/nh%E1%BB%9D-gi%C3%BAp-%C4%91%E1%BB%A1-t%E1%BB%B1-%C4%91%E1%BB%99ng-chay-macro-khi-gi%C3%A1-tr%E1%BB%8B-trong-%C3%94-c%C3%B3-c%C3%B4ng-th%E1%BB%A9c-thay-%C4%91%E1%BB%95i.158434/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Tôi vẫn không hiểu, Maximum số hàng có 44, nghĩa là thêm 29 hàng là giới hạn tối đa, nhưng bạn cho max của nó là 35???
Bạn không cần phải dùng VLOOKUP để tham chiếu, bạn chỉ cần cài đặt trên SpinButton là OK. Hãy xem hình:
Đầu tiên bạn click trái vào Spin, sau đó chọn vào Format Control:
– Giá trị nhỏ nhất: 5
– Giá trị lớn nhất: 35
– Bước nhảy số: 5
Như vậy tại ô T4 của sheet chay, công thức chỉ là =danhmuc!A1
Nếu giới hạn 29 dòng là max, thì công thức tại ô T4 sẽ như sau: =IF(danhmuc!A1>29,29,danhmuc!A1)
Nếu không làm như vậy thì bạn phải insert hàng tới dòng 50 chứ không phải là 44 dòng chứa công thức.1091
Thôi để tôi làm luôn cho bạn để đỡ mất thời gian:
1) Công thức tại ô O17 phải bẫy lỗi: =IFERROR(IF(O16+1>$T$4,"",O16+1),"")
2) Tạo sự kiện cho sheet1 (danhmuc), khi ô A1 thay đổi (bằng cách gõ vào) thì sự kiện Change hoạt động:
3) Gán macro cho SpinButton để khi sử dụng nó sẽ chạy macro:
4) Sửa lại thủ tục AnHienDongHD2 cho bớt rườm rà:
Giờ thì hãy xem file nhé.
Sự kiện change chỉ thay đổi khi ta tác động vào ô đó bằng cách active ô đó, nếu thay đổi khi ô được active thì nó mới chạy được sự kiện.