Page 1 of 1

ขอความช่วยเหลือ Code VB เพื่อป้องกันการลบข้อมูล

Posted: Fri May 19, 2017 3:33 pm
by tigerwit
ในไฟล์งานผมมีชีท student และทำปุ่มสำหรับลบข้อมูลนักเรียน นำเข้าข้อมูลนักเรียน
ไว้สำหรับเจ้าหน้าที่ฝ่ายวิชาการที่ทำหน้าที่บันทึกรายชื่อทำงานได้สะดวกขึ้น
แต่ก็ต้องการป้องกันไม่ให้ ครู ผู้ซึ่งเป็นเป็นผู้ใช้งาน เผลอไปลบโดยไม่ตั้งใจ
โดยได้ใส่ Code ในปุ่มให้ใส่รหัสปลดล็อคชีทก่อน ถ้ารหัสถูกจึงสามารถปลดล็อคชีท
และลบข้อมูลได้ ซึ่งเมื่อลองทดสอบแล้วมีปัญหาดังนี้ครับ
เมื่อกดที่ปุ่ม "ลบข้อมูลนักเรียน" จะมีกรอบให้ใส่รหัสปลดล้อคชีท ถ้าใส่ไม่ถูก หรือไม่ใส่แล้วกดปุ่ม "ยกเลิก"
หรือ กากะบาทมุมบนขวา ข้อมูลในชีทจะถูกลบทันที

จึงเรียนสอบถามเพื่อแก้ปัญหานี้ครับ

Code: Select all

Sub Del_Stu()

Application.EnableEvents = False
On Error Resume Next
    Sheets("student").Select
    ActiveSheet.Unprotect
    If Err <> 0 Then
        MsgBox "รหัสผ่านไม่ถูกต้อง โปรดติดต่อผู้พัฒนาโปรแกรม"
        Exit Sub
    End If
If MsgBox("คุณแน่ใจหรือไม่ที่จะลบข้อมูลนักเรียนทั้งหมด?", 36, "ยืนยันการลบข้อมูล") = 6 Then
    Range("B3").Select
    Range("B3:G1502").Select
    Selection.ClearContents
    Range("B3").Select
    MsgBox "ข้อมูลนักเรียนถูกลบหมดแล้ว "
        End If
End Sub

Re: ขอความช่วยเหลือ Code VB เพื่อป้องกันการลบข้อมูล

Posted: Fri May 19, 2017 3:35 pm
by tigerwit
ไฟล์ครับ

Re: ขอความช่วยเหลือ Code VB เพื่อป้องกันการลบข้อมูล

Posted: Fri May 19, 2017 7:53 pm
by pong2532
ปรับโค๊ดตามนี้ครับ

Code: Select all

Application.EnableEvents = False
On Error Resume Next
    Sheets("student").Select
    ActiveSheet.Unprotect
    If Err <> 0 Then
       MsgBox "รหัสผ่านไม่ถูกต้อง โปรดติดต่อผู้พัฒนาโปรแกรม"
        Exit Sub
    End If
    
   If Sheets("Student").ProtectContents = False Then
If MsgBox("คุณแน่ใจหรือไม่ที่จะลบข้อมูลนักเรียนทั้งหมด?", 36, "ยืนยันการลบข้อมูล") = 6 Then
    Range("B3").Select
    Range("B3:G1502").Select
    Selection.ClearContents
    Range("B3").Select
    MsgBox "ข้อมูลนักเรียนถูกลบหมดแล้ว "
 End If
   End If

Re: ขอความช่วยเหลือ Code VB เพื่อป้องกันการลบข้อมูล

Posted: Fri May 19, 2017 11:26 pm
by tigerwit
ขอบคุณครับ