Tạo một Macro khóa ô khi ô khác có dữ liệu không thỏa mãn điều kiện

Liên hệ QC

trandieulinh

Thành viên mới
Tham gia
19/2/11
Bài viết
31
Được thích
1
Em muốn tạo một Macro để khi một ô khác có dữ liệu thỏa mãn điều kiện thì ô đó có thể sửa chữa. Nếu không thỏa mãn điều kiện thì ô đó sẽ bị khóa hoặc sửa nhưng dữ liệu lại trở về như cũ cùng với 1 cảnh báo "Không được phép sửa". Em có gửi kèm ví dụ các anh chị xem và giúp em với. Cám ơn anh chị.
 

File đính kèm

Em muốn tạo một Macro để khi một ô khác có dữ liệu thỏa mãn điều kiện thì ô đó có thể sửa chữa. Nếu không thỏa mãn điều kiện thì ô đó sẽ bị khóa hoặc sửa nhưng dữ liệu lại trở về như cũ cùng với 1 cảnh báo "Không được phép sửa". Em có gửi kèm ví dụ các anh chị xem và giúp em với. Cám ơn anh chị.
Không hiểu khóa kiểu này có lợi gì nhỉ?
Tôi tên Trần Thị D nhưng tôi nhập vào ô E3 là Trần Thị H thì tôi sửa được giá của Trần Thị H rồi. Chỉ tốn thêm động tác nhập.
 
Upvote 0
Hi! Đó là bảng giản lược chứ em lại bê hết bảng tính lên mạng thì chít em. Ô E3 sẽ là ô khóa và sẽ chia việc cho nhiều người trực ban khác nhau nhưng chỉ làm 1 file để thuận tiện cho người quản lý.
 
Upvote 0
Hi! Đó là bảng giản lược chứ em lại bê hết bảng tính lên mạng thì chít em. Ô E3 sẽ là ô khóa và sẽ chia việc cho nhiều người trực ban khác nhau nhưng chỉ làm 1 file để thuận tiện cho người quản lý.
Vậy thì làm theo kiểu "giản lược", sau nữa hổng biết à nghe.
Nhập tên em nào thì em đó UnLock, các em khác Lock hết.
 

File đính kèm

Upvote 0
Em chỉ muốn khoá 3 cell của cột giá thôi. Cái anh làm lại khoá tất cả dòng đó. Anh có thể chỉnh lại cho em được không?
 
Upvote 0
Em chỉ muốn khoá 3 cell của cột giá thôi. Cái anh làm lại khoá tất cả dòng đó. Anh có thể chỉnh lại cho em được không?
Thay Sub cũ bằng Sub này thử coi sao:
PHP:
Public Sub KyKy()
Dim Rng As Range, Cll As Range, Tem As String
ActiveSheet.Unprotect "123"
With Sheet1
Set Rng = .Range(.[J6], .[J65000].End(xlUp))
    Tem = .[E3].Value
End With
    For Each Cll In Rng
        With Union(Cll.Offset(, -5), Cll.Offset(, -3), Cll.Offset(, -1))
            If Cll.Value = Tem Then
                .Interior.ColorIndex = 6
                .Locked = False
            Else
                .Interior.ColorIndex = 0
                .Locked = True
            End If
        End With
    Next
Set Rng = Nothing
ActiveSheet.Protect "123"
End Sub
 
Upvote 0
Hi. vẫn không được mà. Em thấy vẫn như cũ, ko bít có lỗi gì không. Anh chạy thử xem.
 
Upvote 0
Đã sửa code theo yêu cầu ô trống không có tên cũng không khoá.
 

File đính kèm

Upvote 0
Hi! Đó là bảng giản lược chứ em lại bê hết bảng tính lên mạng thì chít em. Ô E3 sẽ là ô khóa và sẽ chia việc cho nhiều người trực ban khác nhau nhưng chỉ làm 1 file để thuận tiện cho người quản lý.

Mình thấy khóa như thế có gì đó không ổn, theo mình thì nên sử dụng chức năng AllowUserstoEditRange và cấp cho người sử dụng mật khẩu của từng người

Bạn nhập thêm tên người quản lý trong sheet pass và chủ động tạo pass cho những người này, nếu khóa thì khóa cả vùng chứ nếu không người này sửa dữ liệu của người kia thì ai chịu trách nhiệm?
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hic. Kiểu này em cứ chia mỗi người 1 file rồi chịu khó gộp lại thui. Em cảm ơn anh Quanghaibinhduong và anh Ba Tê nhiều nhiều. Rất mong sự giúp đỡ của các anh.
 
Upvote 0
Mình thấy khóa như thế có gì đó không ổn, theo mình thì nên sử dụng chức năng AllowUserstoEditRange và cấp cho người sử dụng mật khẩu của từng người

Bạn nhập thêm tên người quản lý trong sheet pass và chủ động tạo pass cho những người này, nếu khóa thì khóa cả vùng chứ nếu không người này sửa dữ liệu của người kia thì ai chịu trách nhiệm?
Em cũng có trường hợp yêu cầu như thế này nhưng em muốn quản lý theo cột thì làm thế nào ạ. @quanghai1969 giúp em với ạ.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom