Page 1 of 1
การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่นงาน
Posted: Tue Jun 10, 2014 9:09 pm
by khanetnamnai
สวัสดีครับ ผมลองพยายามทำเองบ้าง หาจากอินเตอร์เน็ตบ้าง เพื่อที่จะป้องกันชีสโดยที่อนุญาติให้กรองข้อมูลได้
แต่ลองผิดลองถูกจนแล้วจนรอดก็ยังไม่สามารถทำได้ รบกวนผู้ใหญ่ใจดีชี้แนะข้อผิดพลาดที่มีอยู่ในโค้ดที่ผมแนบมาด้านล่างนี้ด้วยครับ
With ActiveSheet
.Protect Password:="xxxx", AllowFiltering:=True
.EnableSelection = xlNoRestrictions
End With
If ActiveSheet.Protection.AllowSorting = False Then
ActiveSheet.Protect AllowSorting:=True
End If
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Tue Jun 10, 2014 10:26 pm
by bank9597

ต้องป้องกันแบบไหน เช่น ป้องการคีย์ข้อมูลลงในเซลล์และป้องกันการเปลี่ยนแปลงรูปแบบต่างๆ ลองอธิบายมาอีกครั้งครับ
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 9:21 am
by khanetnamnai
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 2:16 pm
by bank9597

ลองตามนี้ครับ ไปที่แท็บ Review > protect sheet แล้วก็ใส่รหััสผ่าน > OK
หากจะล็อคด้วยโค๊ด ตัวอย่างเช่น
Code: Select all
Worksheets("TimeLog").Protect Password:="1234"
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 6:45 pm
by khanetnamnai
bank9597 wrote:
ลองตามนี้ครับ ไปที่แท็บ Review > protect sheet แล้วก็ใส่รหััสผ่าน > OK
หากจะล็อคด้วยโค๊ด ตัวอย่างเช่น
Code: Select all
Worksheets("TimeLog").Protect Password:="1234"
ครับ พอลองใส่โค้ดนี้ลงไปแล้ว แผ่นงานถูกป้องกันแล้วครับ แต่คลิกเลือกเซลล์ไหนไม่ได้เลยครับและก็กรองข้อมูลไม่ได้ด้วยครับ

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 7:55 pm
by bank9597

แนบไฟล์มาดูกันครับ
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 9:14 pm
by khanetnamnai
ตัวปัญหาอยู่ใน Module 6 ครับ
Sub AddNewEmp()

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Wed Jun 11, 2014 10:16 pm
by snasui

นำ Code นี้ไปใส่ไว้ที่ชีท Lis Name ก่อน Sort ให้คลิกบรรทัดที่ 2 ซึ่งเป็นหัว Field ก่อนเสมอครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
If Target.Row = 2 Then
.Unprotect Password:=2112
Else
.Protect Password:=2112, AllowSorting:=True, AllowFiltering:=True
End If
End With
End Sub
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Thu Jun 12, 2014 6:26 pm
by khanetnamnai
snasui wrote:
นำ Code นี้ไปใส่ไว้ที่ชีท Lis Name ก่อน Sort ให้คลิกบรรทัดที่ 2 ซึ่งเป็นหัว Field ก่อนเสมอครับ
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
If Target.Row = 2 Then
.Unprotect Password:=2112
Else
.Protect Password:=2112, AllowSorting:=True, AllowFiltering:=True
End If
End With
End Sub
แผ่นงานถูกป้องกันแล้วครับแต่ยังเลือกกรองข้อมูลไม่ได้ครับอาจารย์ พอจะแนะนำโค้ดที่ทำให้กรองข้อมูลอัตโนมัติด้วยได้ไหมครับ

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Fri Jun 13, 2014 7:12 am
by snasui

ที่เครื่องผมทำงานได้เป็นปกติ คือสามารถ Filter ได้ Sort ได้ครับ
ลองอ่านที่ผมแนะนำไปช้า ๆ อีกครั้งว่าก่อน Sort ให้ทำอย่างไร
กรณีที่ต้องการ Protect แล้วให้ Sort ได้ คอลัมน์ที่ต้องการ Sort จะต้องปลด Locked ทั้งหมดก่อน สำหรับ Code นี้เป็นการใช้การ Protect และยกเลิกการ Protect มาช่วย หากไม่เลือกบรรทัดที่เป็นหัว Field เอาไว้ก่อนจะไม่สามารถ Sort ได้
Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่
Posted: Fri Jun 13, 2014 2:00 pm
by khanetnamnai
snasui wrote:
ที่เครื่องผมทำงานได้เป็นปกติ คือสามารถ Filter ได้ Sort ได้ครับ
ลองอ่านที่ผมแนะนำไปช้า ๆ อีกครั้งว่าก่อน Sort ให้ทำอย่างไร
กรณีที่ต้องการ Protect แล้วให้ Sort ได้ คอลัมน์ที่ต้องการ Sort จะต้องปลด Locked ทั้งหมดก่อน สำหรับ Code นี้เป็นการใช้การ Protect และยกเลิกการ Protect มาช่วย หากไม่เลือกบรรทัดที่เป็นหัว Field เอาไว้ก่อนจะไม่สามารถ Sort ได้
กรองได้แล้วครับ ขอบพระคุณมากครับอาจารย์
