Khóa từng dòng excel

Liên hệ QC

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

  • Khoa dong co Dieu kien.xls
    23 KB · Đọc: 26
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

  • Khoa dong co Dieu kien.xls
    28 KB · Đọc: 51
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

  • Khoa dong co Dieu kien_2_2.xls
    44 KB · Đọc: 67
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom