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

ช่วยอธิบายขั้นตอนการทำงานมาด้วยครับว่า คีย์เซลล์ใดแล้ว Lock วิธีการ Lock ให้ Lock เป็นเซลล์ไปหรืออย่างไร ฯลฯ
Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน
Posted: Thu Sep 08, 2016 5:05 pm
by titus
snasui wrote:
ช่วยอธิบายขั้นตอนการทำงานมาด้วยครับว่า คีย์เซลล์ใดแล้ว 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

Code ที่เขียนมาด้านบนติดปัญหาอะไรครับ

Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน
Posted: Fri Sep 09, 2016 8:15 am
by titus
snasui wrote:
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

ตัวอย่างการปรับ 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:
ตัวอย่างการปรับ 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

ใช้สำหรับการระงับใช้ Event จากการ Run Sub Procedure นี้ เมื่อ Run เสร็จแล้วค่อยเปิดใช้ใหม่
Event คือเหตุการณ์ที่ก่อให้เกิดการทำงานของ Code เช่น การเลือกเซลล์ การเปลี่ยนแปลงค่าในเซลล์ การเลือกชีต ฯลฯ หากเรามีการเขียน Code ใน Event เหล่านั้น จะเกิดการดักจับเหตุการณ์ที่เกิดขึ้น Statement นี้จะปิดการดักจับ Event ครับ
Re: กดปุ่มแล้วเคลียร์การป้องกันแผ่นงาน
Posted: Sat Sep 10, 2016 3:43 pm
by titus
snasui wrote:
ใช้สำหรับการระงับใช้ Event จากการ Run Sub Procedure นี้ เมื่อ Run เสร็จแล้วค่อยเปิดใช้ใหม่
Event คือเหตุการณ์ที่ก่อให้เกิดการทำงานของ Code เช่น การเลือกเซลล์ การเปลี่ยนแปลงค่าในเซลล์ การเลือกชีต ฯลฯ หากเรามีการเขียน Code ใน Event เหล่านั้น จะเกิดการดักจับเหตุการณ์ที่เกิดขึ้น Statement นี้จะปิดการดักจับ Event ครับ
ขอบคุณมากครับ