VBA khóa vùng trong sheet (1 người xem)

Liên hệ QC

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

MeThuongNho

Thành viên thường trực
Tham gia
30/10/09
Bài viết
368
Được thích
77
Nghề nghiệp
Sale - Planning
Kính chào Anh / Chị,
Em có file đính kèm, cần khóa vùng D5:D10, với điều kiện A1= trống là lock, A1 khác trống thì unlock.
Và khi lock thì vùng đó được format : NumberFormat = ";;;" ngược lại thì format: NumberFormat = "#,##0".
Em có code như file nhưng có vẻ không ưng ý lắm.
Lỗi nhỏ ở chỗ:
1. Khi A1 khác trống thì phải nhập 2 lần vào A1 mới unlock được
2. Khi A1= trống thì lock được rồi nhưng cũng phải nhấp enter mới hiểu chứ delete xong nó không tự cập nhật.

P/S: Mong muốn được chỉ cách khóa vùng an toàn nhất ( và cũng dễ dàng để chỉnh sửa dữ liệu trong vùng đó hàng ngày)
Mong mọi người giúp đỡ.
Chúc mọi người có kỳ nghỉ lễ vui vẻ và hạnh phúc
Trân trọng!
 

File đính kèm

Kính chào Anh / Chị,
Em có file đính kèm, cần khóa vùng D5:D10, với điều kiện A1= trống là lock, A1 khác trống thì unlock.
Và khi lock thì vùng đó được format : NumberFormat = ";;;" ngược lại thì format: NumberFormat = "#,##0".
Em có code như file nhưng có vẻ không ưng ý lắm.
Lỗi nhỏ ở chỗ:
1. Khi A1 khác trống thì phải nhập 2 lần vào A1 mới unlock được
2. Khi A1= trống thì lock được rồi nhưng cũng phải nhấp enter mới hiểu chứ delete xong nó không tự cập nhật.

P/S: Mong muốn được chỉ cách khóa vùng an toàn nhất ( và cũng dễ dàng để chỉnh sửa dữ liệu trong vùng đó hàng ngày)
Mong mọi người giúp đỡ.
Chúc mọi người có kỳ nghỉ lễ vui vẻ và hạnh phúc
Trân trọng!
Thử sửa lại code thế này xem sao.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$A$1" Then
   If Target.Value = "" Then
        Sheet1.Range("D4:D10").NumberFormat = ";;;"
        Sheet1.Protect ("123")
   Else
        Sheet1.Unprotect ("123")
        Sheet1.Range("D4:D10").NumberFormat = "#,##0"
   End If
End If
End Sub
 
Upvote 0
Thử sửa lại code thế này xem sao.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$A$1" Then
   If Target.Value = "" Then
        Sheet1.Range("D4:D10").NumberFormat = ";;;"
        Sheet1.Protect ("123")
   Else
        Sheet1.Unprotect ("123")
        Sheet1.Range("D4:D10").NumberFormat = "#,##0"
   End If
End If
End Sub
Cám ơn anh giaiphap
Em đã sửa code và được rồi.
Trân trọng!
 
Upvote 0
Web KT

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

Back
Top Bottom