Page 1 of 1

Code ยกเลิกการป้องกันชีทค่ะ

Posted: Tue Feb 25, 2014 7:35 pm
by suka
เรียนอาจารย์และท่านผู้รู้ช่วยปรับ Code ด้านล่างนี้ค่ะ

ต้องการให้ Code ยกเลิกการป้องกันที่ชีท Suppliers ที่มีการป้องกันชีทไว้ และ Copy ข้อมูลจากไฟล์ CustomID_Share
มาที่ชีท Suppliers ไฟล์ PO.Form แล้วค่อยป้องกันชีท Suppliers ไว้ตามเดิมค่ะ

Code ที่แนบมานี้ หากไม่ใส่ ActiveSheet.Unprotect และ ActiveSheet.Protect สามารถ Copy ข้อมูลมาได้ค่ะ

Code: Select all

Sub CusID1_Click()
        Windows("CustomID_Share.xlsx").Activate
                Cells.Select
                Range("A:Q").Activate
                Selection.Copy
        Windows("PO.Form.xlsm").Activate
                ActiveSheet.Unprotect   '<=== ยกเลิกป้องกันชีท Suppliers
                Sheets("Suppliers").Range("A1").Select
                ActiveSheet.Paste
                ActiveSheet.Protect     '<=== ป้องกันชีท Suppliers
                ThisWorkbook.Save
End Sub

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Tue Feb 25, 2014 8:46 pm
by DhitiBank
โค้ด
ActiveSheet.Unprotect
น่าจะวางไว้ก่อนโค้ด
Selection.Copy
ครับ เพราะหากสั่งคัดลอกก่อน แล้วค่อยสั่ง Unprotect คำสั่งคัดลอกเมื่อสักครู่นี้จะยกเลิกไป ทำให้วางข้อมูลไม่ได้

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Wed Feb 26, 2014 7:16 pm
by suka
ขอบคุณมากๆค่ะคุณ DhitiBank

ขอรบกวนอาจารย์และท่านผู้รู้ช่วยปรับ Code ด้านล่างนี้ให้ถูกหลักการเขียนโค๊กที่ถูกต้องให้ค่ะ Code นี้ได้จากการบันทึกแมโครค่ะ ขอบคุณค่ะ

Code: Select all

Sub CopyCusID_Click()             
        ActiveSheet.Unprotect            
        Windows("CustomID_Share.xlsx").Activate
        ActiveWindow.WindowState = xlNormal
        ActiveWindow.WindowState = xlNormal
        Cells.Select
        Selection.Copy
        Windows("PO.Form.xlsm").Activate
        ActiveWindow.WindowState = xlNormal
        ActiveWindow.WindowState = xlNormal
        Cells.Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Protect    
        Cells.Select
        ActiveWorkbook.Save
End Sub

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Wed Feb 26, 2014 7:20 pm
by snasui
:D Code ที่ได้จากการบันทึก Macro ไม่ผิดหลักของการเขียน Code แน่นอน แถมจะถูกหลักกว่าการเขียนด้วยมือ อ่านแล้วเข้าใจได้ทันที หาก Code ทำงานได้ก็ไม่จำเป็นต้องปรับ

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Wed Feb 26, 2014 7:29 pm
by suka
ขอขคุณค่ะอาจารย์

อาจารย์คะ Code ActiveSheet.Protect ต่างกับ

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True อย่างไรคะ

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Wed Feb 26, 2014 8:22 pm
by snasui
:D ไม่ต่างกันครับ ค่าที่บันทึกด้วย Macro โปรแกรมแสดงค่าที่ตั้งเป็นค่า Default หรือค่าเริ่มต้นสำหรับการกระทำนั้น ๆ มาให้ด้วย

Re: Code ยกเลิกการป้องกันชีทค่ะ

Posted: Thu Feb 27, 2014 1:22 pm
by suka
ขอบพระคุณค่ะอาจารย์