Mở khoá của câu lệnh if not intersect....is nothing then bằng VBA cho một dòng mà mình mới chọn

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

lvh1064

Thành viên mới
Tham gia
3/8/21
Bài viết
11
Được thích
0
Mình có một file muốn để công khai cho mọi người xem nhưng không muốn cho chỉnh sửa và chỉ những người được phép thì mới vào được chỉnh sửa nhưng phải nhập password và khi vào chỉ một dòng duy nhất mà thôi qua số Stt ở đầu dòng, những dòng còn lại vẫn bị khoá, mỗi dòng là cần một password khác nhau. Các bạn giúp mình với, Cám ơn nhiều nhé.
 

File đính kèm

  • Not intersect is nothing.xlsm
    17 KB · Đọc: 5
Mình có một file muốn để công khai cho mọi người xem nhưng không muốn cho chỉnh sửa và chỉ những người được phép thì mới vào được chỉnh sửa nhưng phải nhập password và khi vào chỉ một dòng duy nhất mà thôi qua số Stt ở đầu dòng, những dòng còn lại vẫn bị khoá, mỗi dòng là cần một password khác nhau. Các bạn giúp mình với, Cám ơn nhiều nhé.
Thử xem, hy vọng đúng ý.
pass để mở khóa ô là 123.
pass để mở khóa dòng là "le" hoặc "chan" (không phân biệt chữ hoa chữ thường)
Khi click vào 1 ô trong cột A (từ A7:A1000) sẽ hiện lên 1 inputbox bạn nhập pass là "le" hoặc "chan" cho dòng lẻ và ngược lại, sau đó bạn nhập dữ liệu cho dòng đó và xác nhận nhập vào ô O.. tương ứng.
Khi ở dòng lẻ mà nhập vào inputbox là "chan" thì sẽ hiện cảnh báo và dòng đó vẫn được khóa.
 

File đính kèm

  • Not intersect is nothing.xlsm
    24.6 KB · Đọc: 5
Thử xem, hy vọng đúng ý.
pass để mở khóa ô là 123.
pass để mở khóa dòng là "le" hoặc "chan" (không phân biệt chữ hoa chữ thường)
Khi click vào 1 ô trong cột A (từ A7:A1000) sẽ hiện lên 1 inputbox bạn nhập pass là "le" hoặc "chan" cho dòng lẻ và ngược lại, sau đó bạn nhập dữ liệu cho dòng đó và xác nhận nhập vào ô O.. tương ứng.
Khi ở dòng lẻ mà nhập vào inputbox là "chan" thì sẽ hiện cảnh báo và dòng đó vẫn được khóa.
Nếu người khác Disable macros, thì khóa dòng, khóa vùng có giá trị chi đâu hè.
Mục đích code VBA là thao tác thuận tiện, chính xác, nhanh và tránh thao tác lại nhiều lần cùng 1 hành đông. Và cái này dành cho chính người làm bảng tính excel đó. Chớ khóa người khác là vô dụng.
Mình nghỉ vậy, phải không bạn @HUONGHCKT hỳ
 
Nếu người khác Disable macros, thì khóa dòng, khóa vùng có giá trị chi đâu hè.
Mục đích code VBA là thao tác thuận tiện, chính xác, nhanh và tránh thao tác lại nhiều lần cùng 1 hành đông. Và cái này dành cho chính người làm bảng tính excel đó. Chớ khóa người khác là vô dụng.
Mình nghỉ vậy, phải không bạn @HUONGHCKT hỳ
Khóa cell không cho người khác nhập vào, hoặc sửa chữa cũng là 1 ý tưởng tốt.
1 file excel nếu chỉ có mỗi 1 module khóa cell thì thì chỉ cần disable là được nhưng nếu có 1 số module (sub ) khác phục vụ cho tổng hợp, rút trích dữ liệu, .... thì disable sẽ không sử dụng được các chức năng khác. Do vậy cần phải cân nhắc trước khi disanble.
Chân thành khuyên bạn: nên có thái độ nghiêm túc thì dễ được cảm thông và giúp đỡ. Chứ với thái độ cợt nhả như ở bài "nhập liệu nhanh..." thì tôi tin là ... chắc bạn hiểu.
 
Nếu trường hợp này, chủ tóp nên phát triễn thêm cho khóa dữ liệu đã nhập, không cho chỉnh sửa sau 1 thời gian nào đó.
Nếu dữ liệu có nhiều người cùng nhập liệu.
Theo suy nghỉ riêng của mình là vậy, chớ chỉ 1 mình chủ tóp tương tác file thì thôi, khỏi khoa luôn cho lành.
 
Thử xem, hy vọng đúng ý.
pass để mở khóa ô là 123.
pass để mở khóa dòng là "le" hoặc "chan" (không phân biệt chữ hoa chữ thường)
Khi click vào 1 ô trong cột A (từ A7:A1000) sẽ hiện lên 1 inputbox bạn nhập pass là "le" hoặc "chan" cho dòng lẻ và ngược lại, sau đó bạn nhập dữ liệu cho dòng đó và xác nhận nhập vào ô O.. tương ứng.
Khi ở dòng lẻ mà nhập vào inputbox là "chan" thì sẽ hiện cảnh báo và dòng đó vẫn được khóa.
Mong muốn mỗi học sinh là 1 pass khác nhau. Giả sử bạn là người quản lý chung, và có 1 giáo viên xin phép được sửa điểm cho của 1 HS A nào đó và đã được chấp thuận, thì chỉ cấp cho họ pass của HS đó thôi và vào sửa. Bảo đảm rằng GV này không thể sửa của HS B được.
Nếu cố định pass, công khai pass như "chan" hay "le" thì cần gì khóa nữa nhỉ...
Theo mình thì tại từng dòng sẽ có 1 cột lưu trữ pass của dòng đó, và lock cột đó lại (có thể dùng cột gần cuối bảng) và chỉ người quản lý biết.
Cần sửa dòng nào thì chỉ cho pass của dòng đó thôi.
 
Mong muốn mỗi học sinh là 1 pass khác nhau. Giả sử bạn là người quản lý chung, và có 1 giáo viên xin phép được sửa điểm cho của 1 HS A nào đó và đã được chấp thuận, thì chỉ cấp cho họ pass của HS đó thôi và vào sửa. Bảo đảm rằng GV này không thể sửa của HS B được.
Nếu cố định pass, công khai pass như "chan" hay "le" thì cần gì khóa nữa nhỉ...
Theo mình thì tại từng dòng sẽ có 1 cột lưu trữ pass của dòng đó, và lock cột đó lại (có thể dùng cột gần cuối bảng) và chỉ người quản lý biết.
Cần sửa dòng nào thì chỉ cho pass của dòng đó thôi.
Cảm ơn anh đã xem bài.
Tôi muốn đưa Pass là "chan", "le" là muốn chủ thớt lựa chọn cho dễ và cũng dễ sửa.
Còn tất nhiên là pass là một số ( 123, 963,...) hay chuỗi (Mã hS có ký tự là chữ: H0986xxx, be2198xxxx) hay "gì gì đây", ... thì tính bảo mật càng cao. chỉ khi được chủ file cung cấp pass (ví dụ là mã HS như anh đề xuất) thì mới sửa được dòng đó.
Mà cũng không biết là chủ tút đã nhận ra chưa mà cũng không thấy phản hồi gì?!?Chắc là co/thầy này tự biết được.
 
Mong muốn mỗi học sinh là 1 pass khác nhau. Giả sử bạn là người quản lý chung, và có 1 giáo viên xin phép được sửa điểm cho của 1 HS A nào đó và đã được chấp thuận, thì chỉ cấp cho họ pass của HS đó thôi và vào sửa. Bảo đảm rằng GV này không thể sửa của HS B được.
Nếu cố định pass, công khai pass như "chan" hay "le" thì cần gì khóa nữa nhỉ...
Theo mình thì tại từng dòng sẽ có 1 cột lưu trữ pass của dòng đó, và lock cột đó lại (có thể dùng cột gần cuối bảng) và chỉ người quản lý biết.
Cần sửa dòng nào thì chỉ cho pass của dòng đó thôi.
Cám ơn bạn, rất đúng với ý mình.
 
Cám ơn bạn, rất đúng với ý mình.
Nếu "thích" thì mình "nhích" thôi
Đăng ký pass tại cột "AAA" (hoặc 1 cột bất kỳ mà bạn muốn. Hide nó đi, hoặc lock với password lại không cho mở)

PHP:
Option Explicit
Private Sub Worksheet_Activate()
lockRange ' khoa vung khi thoat khoi sheet
End Sub
Sub lockRange()
Dim lr&
With ActiveSheet
    lr = .Cells(Rows.Count, "B").End(xlUp).Row
    .Range("B7:N" & lr).Locked = True ' khoa vung
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lr&, i&, ask, ip
lr = Cells(Rows.Count, "B").End(xlUp).Row
Const solan = 5 ' so lan nhap password toi da
If Intersect(Range("B7:N" & lr), Target) Is Nothing Or Target.Count > 1 Then Exit Sub
If Target.Locked = False Then Exit Sub
ask = MsgBox("Chi Duoc Xem va Khong duoc chinh sua. Ban co muon sua khong? ", vbYesNo)
If ask = vbNo Then Exit Sub
Do
    On Error Resume Next
    ip = CLng(InputBox("Vui long nhap ma:")) ' nhap password da thiet lap tai cot AAA, cung dong
    On Error GoTo 0
    If ip = Cells(Target.Row, "AAA").Value Then
        MsgBox "Chúc mung ban. Ban da co the sua diem roi!"
        Exit Do
    End If
    i = i + 1
    If i = 5 Then
        MsgBox "Da nhap qua so lan cho phep. Bye bye"
        Exit Sub
    End If
    ask = MsgBox("Ban da nhap sai ma. Ban co muon nhap lai khong? " & vbLf & "So lan nhap password con lai: " & solan - i, vbYesNo)
    If ask = vbNo Then Exit Sub
Loop Until i >= 5
Range(Cells(Target.Row, "B"), Cells(Target.Row, "N")).Locked = False ' mo khoa cho dong do
End Sub
 

File đính kèm

  • Not intersect is nothing.xlsm
    22.1 KB · Đọc: 6
Nếu "thích" thì mình "nhích" thôi
Đăng ký pass tại cột "AAA" (hoặc 1 cột bất kỳ mà bạn muốn. Hide nó đi, hoặc lock với password lại không cho mở)
Dùng sự kiện Selection change thì cứ click chơi 1 cái là đã bị hỏi, nhấn tab, enter, mũi tên, cứ nhấn 1 phím bị hỏi 1 lần.
Kể cả cho sửa đi nữa, sửa xong chả lẽ đứng luôn ở đó mãi? Phải tab, enter, mũi tên các kiểu để hoàn thành việc sửa chứ?
 
Cám ơn bạn, rất đúng với ý mình.
Bạn ơi, Đoạn code của bạn rất tuyệt vời. Tuy nhiên nếu xuất hiện hộp yêu cầu nhập password mà mình No thì ô đó vẫn nhập được, mình đang nghĩ nếu chọn No thì ô mà mình chọn sẽ di chuyển sang chổ khác ngoài bảng thì hay quá, thêm một vấn đề nữa khi mở một dòng xong và sau khi thao tác xong , lưu lại thì dòng đó không còn khoá nữa. Cám ơn bài viết của bạn rất nhiều.
 
Web KT
Back
Top Bottom