Thực hiện khóa dòng tự động khi đã hoàn thành nhập dữ liệu

Liên hệ QC

bambijoh

Thành viên mới
Tham gia
2/3/12
Bài viết
17
Được thích
2
Cho tôi hỏi có cách nào để excel tự động khóa các ô trên 1 dòng khi đã nhập dữ liệu đúng theo điều kiện không ạ?
ví dụ:
mình có bảng dữ liệu 10 cột, khi người nhập vừa nhập xong cột thứ 10 trên 1 dòng và xuống dòng thứ 2 thì dòng 1 khóa lại không cho chỉnh sửa hoặc là khóa sau khi lưu file và mở lại thì không được chỉnh sử không ạ?
Các Bác nào biết hướng dẫn giúp. xin cảm ơn ạ.
 
Cho tôi hỏi có cách nào để excel tự động khóa các ô trên 1 dòng khi đã nhập dữ liệu đúng theo điều kiện không ạ?
ví dụ:
mình có bảng dữ liệu 10 cột, khi người nhập vừa nhập xong cột thứ 10 trên 1 dòng và xuống dòng thứ 2 thì dòng 1 khóa lại không cho chỉnh sửa hoặc là khóa sau khi lưu file và mở lại thì không được chỉnh sử không ạ?
Các Bác nào biết hướng dẫn giúp. xin cảm ơn ạ.
Có vba nhé bạn.
 

File đính kèm

  • filetheodoihoiexcel.xlsx
    14.6 KB · Đọc: 9
Quy định cột "ngày nhập liệu" phải nhập sau cùng, sau khi nhập vào cột "ngày nhập liệu" thì tất cả các ô của dòng đó sẽ khóa lại sau khi lưu file. Nhờ bạn giúp nhé. Tks
Bạn xem file ví dụ của tôi. Nghiên cứu đổi tham chiếu cột cho file của bạn
 

File đính kèm

  • KhoaDong.xlsm
    17.5 KB · Đọc: 29
Bạn xem file ví dụ của tôi. Nghiên cứu đổi tham chiếu cột cho file của bạn
Cảm ơn bạn rất nhiều, nhưng mình muốn cài pass mặc định chứ không hiển thị ra cho người nhập khóa, vì mình mong muốn là không để người nhập, nhập xong rồi lại chỉnh lại những gì đã nhập.
 
Cảm ơn bạn rất nhiều, nhưng mình muốn cài pass mặc định chứ không hiển thị ra cho người nhập khóa, vì mình mong muốn là không để người nhập, nhập xong rồi lại chỉnh lại những gì đã nhập.
Bạn thêm Password:="123" sau ActiveSheet.Unprotect và đặt pass cho code VBA để người dùng thông thường không thấy được pass unprotect.
 
Thanks bạn rất nhiều, mình đang chập chững học VBA, mình có mua sách của Thầy Hướng nhưng đọc vẫn chưa được thông, chắc phải tìm thầy học trực tiếp bạn biết chỉ giúp mình. code bạn viết đúng yêu cầu của mình. Mình có thêm yêu cầu nhờ bạn giúp tếp được không? cũng file đấy tại cột D (mã đơn vị) nếu nhập mã đơn vị lần thứ 2 (duplicate) thì khóa không cập nhật từ cột G đến cột I của dòng đó các cột khác nhập bình thường cho đến khi nhập ngày nhập liệu thì khóa tất giống code bạn đã viết. Thanks bạn nhé
 
Mất công này nọ mà cũng chẳng được gì nhiều.
Người dùng sẽ tự biết mở một file Excel, gõ dữ liệu tuỳ thích, sửa đổi ưng ý rồi mới copy vào file chủ.
 
bạn Huuthang_bd ơi! Giúp mình 1 yêu cầu nữa nhé, cũng file đấy tại cột D (mã đơn vị) nếu nhập mã đơn vị trùng với mã đơn vị đã nhập (duplicate) thì khóa không cập nhật từ cột G đến cột I của dòng đó các cột khác nhập bình thường cho đến khi nhập ngày nhập liệu thì khóa tất giống code bạn đã viết. Cảm ơn bạn nhiều.
 
bạn Huuthang_bd ơi! Giúp mình 1 yêu cầu nữa nhé, cũng file đấy tại cột D (mã đơn vị) nếu nhập mã đơn vị trùng với mã đơn vị đã nhập (duplicate) thì khóa không cập nhật từ cột G đến cột I của dòng đó các cột khác nhập bình thường cho đến khi nhập ngày nhập liệu thì khóa tất giống code bạn đã viết. Cảm ơn bạn nhiều.
Bạn dùng code này thay cho code hiện tại.
Mã:
Private Const sPassword As String = "1"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Cll As Range, TmpCll As Range
Set Rng = Intersect(Target, Me.Range("B:B"))
If Not Rng Is Nothing Then
    If Sheet1.ProtectContents Then Sheet1.Unprotect sPassword
    Intersect(Rng.EntireRow, Me.Range("A:J")).Locked = True
End If
Set Rng = Intersect(Target, Me.Range("D:D"))
If Not Rng Is Nothing Then
    For Each Cll In Rng.Cells
        Set TmpCll = Me.Range("D:D").Find(Cll.Value, Me.Range("D5"), xlValues, xlWhole, , xlNext, False, False)
        If TmpCll.Row < Cll.Row Then
            If Sheet1.ProtectContents Then Sheet1.Unprotect sPassword
            Me.Range("G" & Cll.Row & ":I" & Cll.Row).Locked = True
        End If
    Next
End If
If Not Sheet1.ProtectContents Then Sheet1.Protect sPassword
End Sub
 
Bạn dùng code này thay cho code hiện tại.
Mã:
Private Const sPassword As String = "1"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Cll As Range, TmpCll As Range
Set Rng = Intersect(Target, Me.Range("B:B"))
If Not Rng Is Nothing Then
    If Sheet1.ProtectContents Then Sheet1.Unprotect sPassword
    Intersect(Rng.EntireRow, Me.Range("A:J")).Locked = True
End If
Set Rng = Intersect(Target, Me.Range("D:D"))
If Not Rng Is Nothing Then
    For Each Cll In Rng.Cells
        Set TmpCll = Me.Range("D:D").Find(Cll.Value, Me.Range("D5"), xlValues, xlWhole, , xlNext, False, False)
        If TmpCll.Row < Cll.Row Then
            If Sheet1.ProtectContents Then Sheet1.Unprotect sPassword
            Me.Range("G" & Cll.Row & ":I" & Cll.Row).Locked = True
        End If
    Next
End If
If Not Sheet1.ProtectContents Then Sheet1.Protect sPassword
End Sub
Cám ơn huuthang_bd rất nhiều.
 
Không liên quan nhưng có phải bác này làm bên sở chứng khoán HCM không?
Mới nhận cái file báo cáo, có ý tưởng y chang làm nhập vào xong không sửa được.
 
Không liên quan nhưng có phải bác này làm bên sở chứng khoán HCM không?
Mới nhận cái file báo cáo, có ý tưởng y chang làm nhập vào xong không sửa được.
Chắc ai đó chứ người của Sở chứng khoán HCM giỏi lắm, sao phải nhờ code ở đây được. :''"
 
Web KT
Back
Top Bottom