Page 1 of 1

กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Thu Sep 08, 2016 4:39 pm
by titus
สอบถามเพื่อนสมาชิกครับ
งานที่ต้องการทำตอนนี้ การป้อนข้อมูลเข้าไป แล้วทำการล็อคเซลทันทีไม่ให้แก้ไขได้
ถ้าต้องการแก้ข้อมูลให้ทำการกดปุ่ม จะทำการปลดล็อคทั้งหมดแล้ว ล้างข้อมูล ทั้งหมด จะเขียนโค๊ดแก้ยังไง ดีครับ

Code: Select all

Sub Macro1()
ActiveSheet.Unprotect Password:="s1234"
ActiveCell.Locked = False
    Range("G6:J22,M6:M22,O6:AA22").Select
    Range("O6").Activate
    Range("G6:J22,M6:M22,O6:AA22,B26:F44").Select
    Range("B26").Activate
    Selection.ClearContents
    ActiveSheet.Protect Password:="s1234"
End Sub
ขอบคุณครับ

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Thu Sep 08, 2016 4:56 pm
by snasui
:D ช่วยอธิบายขั้นตอนการทำงานมาด้วยครับว่า คีย์เซลล์ใดแล้ว Lock วิธีการ Lock ให้ Lock เป็นเซลล์ไปหรืออย่างไร ฯลฯ

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Thu Sep 08, 2016 5:05 pm
by titus
snasui wrote::D ช่วยอธิบายขั้นตอนการทำงานมาด้วยครับว่า คีย์เซลล์ใดแล้ว Lock วิธีการ Lock ให้ Lock เป็นเซลล์ไปหรืออย่างไร ฯลฯ
คีย์ในเฉพาะเซลที่ระบายสีเหลืองครับ แล้วก็ล็อคทันที ไม่ให้แก้ไขข้อมูลได้
ตอนนี้ผมใช้โค๊ดตัวนี้ อยู่ครับ ที่ใช้ล็อค แต่พอปริ๊นงานออกมา ก็จะไปกดปุ่ม "ลบข้อมูลหน้านี้" เพื่อ ทำการปลดล็อคแล้วทำการล้างข้อมูลครับ

Code: Select all

Option Explicit
Private Sub Workbook_Open()
Sheets(1).Unprotect Password:="s1234"
Sheets(1).Cells.Locked = False
End Sub

Code: Select all

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    lock1
End Sub

Code: Select all

Sub lock1()
    ActiveSheet.Unprotect Password:="s1234"
    If ActiveCell.Row <> 1 Then
        ActiveCell.Offset(-1, 0).Locked = True
        ActiveSheet.Protect Password:="s1234"
    Else
    ActiveCell.Locked = True
    ActiveSheet.Protect Password:="s1234"
    End If
End Sub

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Thu Sep 08, 2016 6:04 pm
by snasui
:D Code ที่เขียนมาด้านบนติดปัญหาอะไรครับ :?:

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Fri Sep 09, 2016 8:15 am
by titus
snasui wrote::D Code ที่เขียนมาด้านบนติดปัญหาอะไรครับ :?:
โค๊ด ด้านบนไม่ติดครับ ล็อคได้ตามปกติ ติด โค๊ดปุ่มที่จะไปปลดล็อคและลบข้อมูลมันไม่ยอมให้ลบครับ
มันติดเงื่อนไข If ActiveCell.Row <> 1 Then ใน code Lock 1 นะครับ
ด้านล่างนี้เป็นคำสั่งให้ปลดและลบข้อมูลครับ

Code: Select all

Sub Macro1()
ActiveSheet.Unprotect Password:="s1234"
ActiveCell.Locked = False
    Range("G6:J22,M6:M22,O6:AA22").Select
    Range("O6").Activate
    Range("G6:J22,M6:M22,O6:AA22,B26:F44").Select
    Range("B26").Activate
    Selection.ClearContents
    ActiveSheet.Protect Password:="s1234"
End Sub

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Fri Sep 09, 2016 6:18 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro1()
    Application.EnableEvents = False
    ActiveSheet.Unprotect Password:="s1234"
    ActiveCell.Locked = False
    Range("G6:J22,M6:M22,O6:AA22").Select
    Range("O6").Activate
    Range("G6:J22,M6:M22,O6:AA22,B26:F44").Select
    Range("B26").Activate
    Selection.ClearContents
    ActiveSheet.Protect Password:="s1234"
    Application.EnableEvents = True
End Sub

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Sat Sep 10, 2016 2:27 pm
by titus
snasui wrote::D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Macro1()
    Application.EnableEvents = False
    ActiveSheet.Unprotect Password:="s1234"
    ActiveCell.Locked = False
    Range("G6:J22,M6:M22,O6:AA22").Select
    Range("O6").Activate
    Range("G6:J22,M6:M22,O6:AA22,B26:F44").Select
    Range("B26").Activate
    Selection.ClearContents
    ActiveSheet.Protect Password:="s1234"
    Application.EnableEvents = True
End Sub
รบกวนอาจาร์ย อธิบาย ความหมายโค๊ด Application.EnableEvents = False หน่อยครับ อยากรู้ ขอบคุณครับ

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Sat Sep 10, 2016 2:49 pm
by snasui
:D ใช้สำหรับการระงับใช้ Event จากการ Run Sub Procedure นี้ เมื่อ Run เสร็จแล้วค่อยเปิดใช้ใหม่

Event คือเหตุการณ์ที่ก่อให้เกิดการทำงานของ Code เช่น การเลือกเซลล์ การเปลี่ยนแปลงค่าในเซลล์ การเลือกชีต ฯลฯ หากเรามีการเขียน Code ใน Event เหล่านั้น จะเกิดการดักจับเหตุการณ์ที่เกิดขึ้น Statement นี้จะปิดการดักจับ Event ครับ

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน

Posted: Sat Sep 10, 2016 3:43 pm
by titus
snasui wrote::D ใช้สำหรับการระงับใช้ Event จากการ Run Sub Procedure นี้ เมื่อ Run เสร็จแล้วค่อยเปิดใช้ใหม่

Event คือเหตุการณ์ที่ก่อให้เกิดการทำงานของ Code เช่น การเลือกเซลล์ การเปลี่ยนแปลงค่าในเซลล์ การเลือกชีต ฯลฯ หากเรามีการเขียน Code ใน Event เหล่านั้น จะเกิดการดักจับเหตุการณ์ที่เกิดขึ้น Statement นี้จะปิดการดักจับ Event ครับ
ขอบคุณมากครับ