Dùng VBA để tạo thông báo khi có sự thay đổi dữ liệu của file nguồn đến file đích (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tuanda85

Thành viên mới
Tham gia
30/8/11
Bài viết
29
Được thích
2
Mình hiện đang phải làm báo cáo tổng hợp từ báo cáo chi tiết của 900 nhà hàng khác nhau. mình đã đặt công thức trên file excel tổng hợp link đến file chi tiết để lấy số liệu hàng ngày, mình muốn hỏi có cách nào khi số liệu trên file chi tiết thay đổi thì sẽ hiện thông báo trên file tổng hợp bằng VBA ko?
Thanks
 
Có thể làm được, tuy nhiên bạn phải gửi cả 2 file (nguồn & đích) lên để mọi người tiện giúp cho bạn.

Tuy nhiên, cũng khó giải quyết vì dùng VBA khó có thủ tục nhận diện sự kiện Change:

- Khác nhau về định dạng

- Khác nhau về dữ liệu

- Các dữ liệu chi tiết khác nhau, nhưng số tổng (mình căn cứ để làm thay đổi) lại giống nhau...

- v.v...
 
Upvote 0
Cảm ơn bạn, bạn cho mình hỏi khi mình làm một VBA-Macro để bảo vệ công thức excel với đoạn code như thế này:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
For Each rng In Target.Cells
If rng.HasFormula Then
ActiveSheet.Protect
Exit Sub
Else
ActiveSheet.Unprotect
End If
Next rng
End Sub

Nhưng khi người dung họ copy cả sheet đó để paste vào sheet mới thì họ vẫn sửa đc công thức mình đặt ban đầu, có các nào để khi copy thì ô công thức của mình vẫn được bảo vệ ko bạn.
Thanks
 
Upvote 0
Cảm ơn bạn, bạn cho mình hỏi khi mình làm một VBA-Macro để bảo vệ công thức excel với đoạn code như thế này:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
For Each rng In Target.Cells
If rng.HasFormula Then
ActiveSheet.Protect
Exit Sub
Else
ActiveSheet.Unprotect
End If
Next rng
End Sub

Nhưng khi người dung họ copy cả sheet đó để paste vào sheet mới thì họ vẫn sửa đc công thức mình đặt ban đầu, có các nào để khi copy thì ô công thức của mình vẫn được bảo vệ ko bạn.
Thanks

Khi bạn chạy thủ tục này, thì sheet bạn sẽ được bảo vệ, tuy nhiên, bạn cần phải thêm password vào để không bị mở ra, cái code này người dùng chỉ việc bấm vào unprotect sheet trên menu là mở được rồi, đâu cần phải copy chứ!
 
Upvote 0
Tại vì trong file excel của mình làm vẫn có ô cho phép người dùng nhập số liệu, chỉ những ô chứa công thức thì mình cần bảo vệ, nếu đặt pass thì muốn cho họ nhập thì họ có thể sửa đc công thức của mình, có cách nào để sửa đoạn thủ tục trên ko bạn.
Thanks
 
Upvote 0
Tại vì trong file excel của mình làm vẫn có ô cho phép người dùng nhập số liệu, chỉ những ô chứa công thức thì mình cần bảo vệ, nếu đặt pass thì muốn cho họ nhập thì họ có thể sửa đc công thức của mình, có cách nào để sửa đoạn thủ tục trên ko bạn.
Thanks

Bạn vừa khóa, vừa ẩn công thức luôn phải không?

Chỉ cần vầy thôi:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Dim rng As Range
    For Each rng In Target.Cells
        If rng.HasFormula Then
            ActiveSheet.Unprotect ("HoangTrongNghia")
                rng.Locked = True
                rng.FormulaHidden = True
            ActiveSheet.Protect ("HoangTrongNghia")
        End If
    Next rng
End Sub

Khi chép thủ tục này vào Sheet Module, bạn chọn khối toàn bộ sheet đó và vào Format Cell, bỏ chọn Locked và Hidden. Sau đó chép thủ tục này vào.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom