Giúp cách để protect các ô đã nhập dữ liệu

Liên hệ QC

Cu Tồ

Tìm đến kiến thức! ꧁༺ Cu Tồ ༻꧂
Tham gia
6/5/20
Bài viết
735
Được thích
347
các bác cho mình hỏi là muốn tạo một macro chỉ cho nhập dữ liệu vào ô trống còn những ô đã chứa dữ liệu hoặc vừa nhập xong thì protect ô chứa dữ liệu đó không cho xóa,chỉnh sửa hay bất kỳ thao tác nào khác kể cả xóa cả vùng dữ liệu và dòng điều không cho xóa thì làm như thế nào ah?
 
Lần chỉnh sửa cuối:
Mình sẽ thay bằng 1 biến nào đó. Mà bác ko cần bỏ cũng được, bác có thể move nó tới chỗ ko ai nhìn thấy hoặc viết bebe.visible=false xem sao
Mình chưa thử qua. Cứ tưởng là bỏ phần đó đi thì sẽ không sao. Vì hình như phần đó giống với điều kiện để protect hoặc unprotect. Nhưng giờ thay bằng sự kiện rồi thì có thể nỏ đi
 
Upvote 0
cái cũ dùng nút Bebe đó để kiểm tra sheet đang bị protect hay unprotect. Giờ xóa cái nút đó đi thì mình kiểm tra sheet có bị protect hay không bằng sheet.ProtectContents
 

File đính kèm

  • Day khong phai tro tre con.xls
    42.5 KB · Đọc: 8
Upvote 0
cái cũ dùng nút Bebe đó để kiểm tra sheet đang bị protect hay unprotect. Giờ xóa cái nút đó đi thì mình kiểm tra sheet có bị protect hay không bằng sheet.ProtectContents
bác cho thỉnh giáo thêm là bắt buộc phải dùng hai macro xong gọi như thế hay vẫn có thể gộp lại được với nhau,dùng với điều kiện if đc ko bác?
 
Upvote 0
bác cho thỉnh giáo thêm là bắt buộc phải dùng hai macro xong gọi như thế hay vẫn có thể gộp lại được với nhau,dùng với điều kiện if đc ko bác?
Dựa vào code các bạn ở trên, tôi có cải tiến chút là chỉ cần 2 sự kiện Worksheet_SelectionChange và Worksheet_Change như dưới đây, đồng thời giấu cái nút lệnh. Còn các code khác không cần nữa, có thể bỏ đi. Bạn thử xem thế nào.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = True
            Sheet1.Protect "GPE", False, True, True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
        If UCase(InputBox("Input Pass : ", "Bebebe!")) = "GPE" Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = False
            Sheet1.Protect "GPE", False, True, True
        End If
    End If
End Sub
 
Upvote 0
Dựa vào code các bạn ở trên, tôi có cải tiến chút là chỉ cần 2 sự kiện Worksheet_SelectionChange và Worksheet_Change như dưới đây, đồng thời giấu cái nút lệnh. Còn các code khác không cần nữa, có thể bỏ đi. Bạn thử xem thế nào.
Mã:
 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Len(Target.Value) > 0 Then ActiveSheet.Unprotect "GPE" Target.Locked = True Sheet1.Protect "GPE", False, True, True End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Resume Next If Len(Target.Value) > 0 Then If UCase(InputBox("Input Pass : ", "Bebebe!")) = "GPE" Then ActiveSheet.Unprotect "GPE" Target.Locked = False Sheet1.Protect "GPE", False, True, True End If End If End Sub
Dựa vào code các bạn ở trên, tôi có cải tiến chút là chỉ cần 2 sự kiện Worksheet_SelectionChange và Worksheet_Change như dưới đây, đồng thời giấu cái nút lệnh. Còn các code khác không cần nữa, có thể bỏ đi. Bạn thử xem thế nào.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = True
            Sheet1.Protect "GPE", False, True, True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
        If UCase(InputBox("Input Pass : ", "Bebebe!")) = "GPE" Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = False
            Sheet1.Protect "GPE", False, True, True
        End If
    End If
End Sub
Dựa vào code các bạn ở trên, tôi có cải tiến chút là chỉ cần 2 sự kiện Worksheet_SelectionChange và Worksheet_Change như dưới đây, đồng thời giấu cái nút lệnh. Còn các code khác không cần nữa, có thể bỏ đi. Bạn thử xem thế nào.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = True
            Sheet1.Protect "GPE", False, True, True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Len(Target.Value) > 0 Then
        If UCase(InputBox("Input Pass : ", "Bebebe!")) = "GPE" Then
            ActiveSheet.Unprotect "GPE"
            Target.Locked = False
            Sheet1.Protect "GPE", False, True, True
        End If
    End If
End Sub
rất cảm ơn bác đã đóng góp ý kiến,code của bác đã bỏ được khần .bebe rồi ah.nhưng khi nhập pass thì nó không hẳn là mở protect cho ô đó mà hình như nó chỉ mở xong đó nhấp đúp chuột vào ô để sửa nội dung chứ những phần như xóa các kiểu thì vẫn bị khóa ah
 
Upvote 0
rất cảm ơn bác đã đóng góp ý kiến,code của bác đã bỏ được khần .bebe rồi ah.nhưng khi nhập pass thì nó không hẳn là mở protect cho ô đó mà hình như nó chỉ mở xong đó nhấp đúp chuột vào ô để sửa nội dung chứ những phần như xóa các kiểu thì vẫn bị khóa ah
Đúng rồi bạn. Nếu muốn thêm, xóa ô, cột thì vãn phải nhờ code của nút lệnh bebe.
 
Upvote 0
Web KT

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

Back
Top Bottom