Khóa từng dòng excel (1 người xem)

Liên hệ QC

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

Duong gia

Thành viên thường trực
Tham gia
15/1/07
Bài viết
352
Được thích
118
Chào các bạn. Mong các bạn giúp đỡ : mình muốn khóa từng dòng trong Excel với điều kiện sau: Bất cứ dòng nào mà cột F có chữ X thì macro sẽ khóa dữ liệu cả dòng đó không cho chỉnh sửa, còn các dòng khác thì không. Cám ơn nhiều Mở file đính kèm. Thanks +-+-+-+
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bạn. Mong các bạn giúp đỡ : mình muốn khóa từng dòng trong Excel với điều kiện sau:
Bất cứ dòng nào mà cột F có chữ X thì macro sẽ khóa dữ liệu cả dòng đó không cho chỉnh sửa, còn các dòng khác thì không. Cám ơn nhiều
Mở file đính kèm. Thanks +-+-+-+

Bạn thử code sau nhé.

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If UCase(Range("F" & ActiveCell.Row)) = "X" Then
  Range("G" & ActiveCell.Row).Select
End If

End Sub
 

File đính kèm

Upvote 0
Có lẽ như thế này mới là ý tác giả thì phải (Coi nhu mật khẩu là 123)

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As Range
If Target.Column = 6 Then
Unprotect "123"
Cells.Locked = False
For Each Cl In [F5].Resize(WorksheetFunction.CountA([A5:A65536]))
If UCase(Cl.Value) = "X" Then Rows(Cl.Row).EntireRow.Locked = True
Next
Protect "123"
End If
End Sub
 
Upvote 0
Có lẽ như thế này mới là ý tác giả thì phải (Coi nhu mật khẩu là 123)
Mã:
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cl As Range If Target.Column = 6 Then Unprotect "123" Cells.Locked = False For Each Cl In [F5].Resize(WorksheetFunction.CountA([A5:A65536])) If UCase(Cl.Value) = "X" Then Rows(Cl.Row).EntireRow.Locked = True Next Protect "123" End If End Sub
Hay lắm, cám ơn bạn nhiều. Nhưng bạn có thể cải tiến sau không: Những dòng nào Cột F không có dấu X thì vẫn cho phép Copy và Insert dòng . . . Thanks
 
Lần chỉnh sửa cuối:
Upvote 0
Có lẽ như thế này mới là ý tác giả thì phải (Coi nhu mật khẩu là 123)

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As Range
If Target.Column = 6 Then
Unprotect "123"
Cells.Locked = False
For Each Cl In [F5].Resize(WorksheetFunction.CountA([A5:A65536]))
If UCase(Cl.Value) = "X" Then Rows(Cl.Row).EntireRow.Locked = True
Next
Protect "123"
End If
End Sub
Dùng code sau khỏi dùng vòng lặp:

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect ("123")
  If UCase(Range("F" & ActiveCell.Row)) = "X" Then
     ActiveSheet.Protect ("123")
  End If
        
End Sub
 
Upvote 0
Dùng code sau khỏi dùng vòng lặp:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Unprotect ("123") If UCase(Range("F" & ActiveCell.Row)) = "X" Then ActiveSheet.Protect ("123") End If  End Sub
Cám ơn bạn. Nhưng sao từ dòng số 17 trở đi khi Cột F có dấu X lẽ ra là khóa lại, không cho xóa, nhưng nó vẫn không khóa. Mong bạn chỉnh giúp
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn. Nhưng sao từ dòng số 17 trở đi khi Cột F có dấu X lẽ ra là khóa lại, không cho xóa, nhưng nó vẫn không khóa. Mong bạn chỉnh giúp
Bạn tô khối từ cột A-> cột F, Nhấn tổ hợp phím Ctrl+1, chọn Tab Protection, click chọn Locked, nhấn OK là được
 
Upvote 0
Bạn tô khối từ cột A-> cột F, Nhấn tổ hợp phím Ctrl+1, chọn Tab Protection, click chọn Locked, nhấn OK là được
Vẫn chưa thông, mình click vào Protection chỉ thấy Protect sheet và Protect workbook ... chứ không thấy Locked đâu cà. Chỉ giúp.
 
Lần chỉnh sửa cuối:
Upvote 0
Cần đa năng vậy thì phải dùng nút thôi (Mật khẩu 123)
Tham khảo file nha
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom