Page 1 of 1

การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่นงาน

Posted: Tue Jun 10, 2014 9:09 pm
by khanetnamnai
สวัสดีครับ ผมลองพยายามทำเองบ้าง หาจากอินเตอร์เน็ตบ้าง เพื่อที่จะป้องกันชีสโดยที่อนุญาติให้กรองข้อมูลได้
แต่ลองผิดลองถูกจนแล้วจนรอดก็ยังไม่สามารถทำได้ รบกวนผู้ใหญ่ใจดีชี้แนะข้อผิดพลาดที่มีอยู่ในโค้ดที่ผมแนบมาด้านล่างนี้ด้วยครับ :oops: :oops:




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
:D ต้องป้องกันแบบไหน เช่น ป้องการคีย์ข้อมูลลงในเซลล์และป้องกันการเปลี่ยนแปลงรูปแบบต่างๆ ลองอธิบายมาอีกครั้งครับ

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Wed Jun 11, 2014 9:21 am
by khanetnamnai
bank9597 wrote::D ต้องป้องกันแบบไหน เช่น ป้องการคีย์ข้อมูลลงในเซลล์และป้องกันการเปลี่ยนแปลงรูปแบบต่างๆ ลองอธิบายมาอีกครั้งครับ
ป้องกันโดยอนุญาตให้เลือกเซลล์ที่ล็อคไว้ได้ แต่แก้ไขข้อมูลในเซลล์ไม่ได้ และ อนุญาติให้กรองข้อมูลครับ
:cp: :cp: :thup:

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Wed Jun 11, 2014 2:16 pm
by bank9597
:D ลองตามนี้ครับ ไปที่แท็บ 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::D ลองตามนี้ครับ ไปที่แท็บ Review > protect sheet แล้วก็ใส่รหััสผ่าน > OK

หากจะล็อคด้วยโค๊ด ตัวอย่างเช่น

Code: Select all

Worksheets("TimeLog").Protect Password:="1234"
ครับ พอลองใส่โค้ดนี้ลงไปแล้ว แผ่นงานถูกป้องกันแล้วครับ แต่คลิกเลือกเซลล์ไหนไม่ได้เลยครับและก็กรองข้อมูลไม่ได้ด้วยครับ :o :o

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Wed Jun 11, 2014 7:55 pm
by bank9597
:D แนบไฟล์มาดูกันครับ

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Wed Jun 11, 2014 9:14 pm
by khanetnamnai
ตัวปัญหาอยู่ใน Module 6 ครับ


Sub AddNewEmp() :shock: :shock:

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Wed Jun 11, 2014 10:16 pm
by snasui
:D นำ 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::D นำ 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
แผ่นงานถูกป้องกันแล้วครับแต่ยังเลือกกรองข้อมูลไม่ได้ครับอาจารย์ พอจะแนะนำโค้ดที่ทำให้กรองข้อมูลอัตโนมัติด้วยได้ไหมครับ

:cp: :cp:

Re: การเขียนโค้ดให้ป้องกันแผ่นงานแต่อนุญาตให้กรองข้อมูลในแผ่

Posted: Fri Jun 13, 2014 7:12 am
by snasui
:D ที่เครื่องผมทำงานได้เป็นปกติ คือสามารถ 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::D ที่เครื่องผมทำงานได้เป็นปกติ คือสามารถ Filter ได้ Sort ได้ครับ

ลองอ่านที่ผมแนะนำไปช้า ๆ อีกครั้งว่าก่อน Sort ให้ทำอย่างไร

กรณีที่ต้องการ Protect แล้วให้ Sort ได้ คอลัมน์ที่ต้องการ Sort จะต้องปลด Locked ทั้งหมดก่อน สำหรับ Code นี้เป็นการใช้การ Protect และยกเลิกการ Protect มาช่วย หากไม่เลือกบรรทัดที่เป็นหัว Field เอาไว้ก่อนจะไม่สามารถ Sort ได้
กรองได้แล้วครับ ขอบพระคุณมากครับอาจารย์ :cp: :cp: