Page 1 of 1

VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 7:35 pm
by yangkodza

Code: Select all

Sub Macro1()
    Sheets(Array("2", "3", "4")).Select
    Sheets("2").Activate
    ActiveSheet.Protect "password", True, True
End Sub
มีแผ่นงาน 5 แผ่น แต่ต้องการล๊อคเพียงแค่ 3 แผ่นงาน
เราจะเขียนเป็น VBA ได้อย่างไรครับ
Sheet.xlsm
(15.98 KiB) Downloaded 19 times

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 7:52 pm
by puriwutpokin
yangkodza wrote: Thu Mar 22, 2018 7:35 pm

Code: Select all

Sub Macro1()
    Sheets(Array("2", "3", "4")).Select
    Sheets("2").Activate
    ActiveSheet.Protect "password", True, True
End Sub
มีแผ่นงาน 5 แผ่น แต่ต้องการล๊อคเพียงแค่ 3 แผ่นงาน
เราจะเขียนเป็น VBA ได้อย่างไรครับ

Sheet.xlsm
ตัวอย่างโค้ดครับ

Code: Select all

Sub Macro1()
   For Each ws In Sheets(Array("2", "3", "4"))
    ws.Protect "password", True, True
    Next
End Sub

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 8:39 pm
by yangkodza
puriwutpokin wrote: Thu Mar 22, 2018 7:52 pm
yangkodza wrote: Thu Mar 22, 2018 7:35 pm

Code: Select all

Sub Macro1()
    Sheets(Array("2", "3", "4")).Select
    Sheets("2").Activate
    ActiveSheet.Protect "password", True, True
End Sub
มีแผ่นงาน 5 แผ่น แต่ต้องการล๊อคเพียงแค่ 3 แผ่นงาน
เราจะเขียนเป็น VBA ได้อย่างไรครับ

Sheet.xlsm
ตัวอย่างโค้ดครับ

Code: Select all

Sub Macro1()
   For Each ws In Sheets(Array("2", "3", "4"))
    ws.Protect "password", True, True
    Next
End Sub
ตอนนี้ Protect ทั้ง 3 แผ่นงานดังกล่าวได้ครับ
แต่ติดที่ว่า จะ Unprotect ทั้ง 3 แผ่นงานพร้อมกันไม่ได้ครับ
ผมสั่งแบบนี้ครับ

Code: Select all

Sub Macro1()
   For Each ws In Sheets(Array("2", "3", "4"))
    ws.Unprotect "password", True, True
    Next
End Sub

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 9:19 pm
by yangkodza
Code ที่ผมใช้งานครับ

Code: Select all

Sub Macro3()
   For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
    ws.Unprotect Password:="2501"
            Next
    Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1")).Select
    Sheets("C1T1").Activate
    Range("A4:AR57").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("E7").Select
    Range("Y7:AP7,Y8:AA57,AD8:AF57,AI8:AI57,AL8:AP57").Select
    Selection.Locked = True
       For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
       ws.Protect Password:="2501"
    Next
End Sub
ติด ตรงส่วนก่อนจบครับ

!
ws.Protect Password:="2501"

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 9:45 pm
by snasui
:D แนบไฟล์ล่าสุดมาด้วยจะได้สะดวกในการทดสอบครับ

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Thu Mar 22, 2018 10:45 pm
by puriwutpokin
yangkodza wrote: Thu Mar 22, 2018 9:19 pm Code ที่ผมใช้งานครับ

Code: Select all

Sub Macro3()
   For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
    ws.Unprotect Password:="2501"
            Next
    Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1")).Select
    Sheets("C1T1").Activate
    Range("A4:AR57").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("E7").Select
    Range("Y7:AP7,Y8:AA57,AD8:AF57,AI8:AI57,AL8:AP57").Select
    Selection.Locked = True
       For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
       ws.Protect Password:="2501"
    Next
End Sub
ติด ตรงส่วนก่อนจบครับ

!
ws.Protect Password:="2501"
ลองใส่คำสั่ง

Code: Select all

 Sheets("ขื่อชีทที่ไม่ได้อยู่ในArray").Select
ไว้ใต้คำสั่งนี้ดูครับ

Code: Select all

 Selection.Locked = True

Re: VBA lock sheet หลายๆ sheet พร้อมกัน

Posted: Fri Mar 23, 2018 12:44 pm
by yangkodza
puriwutpokin wrote: Thu Mar 22, 2018 10:45 pm
yangkodza wrote: Thu Mar 22, 2018 9:19 pm Code ที่ผมใช้งานครับ

Code: Select all

Sub Macro3()
   For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
    ws.Unprotect Password:="2501"
            Next
    Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1")).Select
    Sheets("C1T1").Activate
    Range("A4:AR57").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("E7").Select
    Range("Y7:AP7,Y8:AA57,AD8:AF57,AI8:AI57,AL8:AP57").Select
    Selection.Locked = True
       For Each ws In Sheets(Array("C1T1", "C2T1", "C3T1", "C4T1", "C5T1"))
       ws.Protect Password:="2501"
    Next
End Sub
ติด ตรงส่วนก่อนจบครับ

!
ws.Protect Password:="2501"
ลองใส่คำสั่ง

Code: Select all

 Sheets("ขื่อชีทที่ไม่ได้อยู่ในArray").Select
ไว้ใต้คำสั่งนี้ดูครับ

Code: Select all

 Selection.Locked = True
ขอบคุณมากครับ ทำตามคำแนะนำใช้งานได้แล้วครับ :D