Page 2 of 2

Re: การล๊อคชีท

Posted: Mon Oct 24, 2011 7:53 am
by snasui
:D ตัวอย่าง Code และไฟล์สำหรับการซ่อน Worksheet ตามด้านล่างครับ ซึ่งจะซ่อนชีท Temp และ Datastore เอาไว้ เหลือเฉพาะชีท Form

Code: Select all

Sub SaveToDatastore()
    ActiveSheet.Unprotect Password:="240130" '<==UnProtect
    Sheets("DataStore").Unprotect Password:="240130" '<==UnProtect
    If Range("A4") <> "" Then
        Sheets("Temp").Range("A2:G11") _
            .Resize(Sheets("Temp").Range("H1"), 7).Copy
        Sheets("DataStore").Range("A" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        Sheets("Form").Range("B4:D13,C1,C2") _
            .SpecialCells(xlCellTypeConstants).ClearContents
        MsgBox ("บันทึกข้อมูบเรียบร้อยแล้ว")
    Else
        MsgBox ("คุณยังไม่เลือกสินค้า")
        Range("A17").Activate
    End If
    Sheets("DataStore").Protect Password:="240130" '<==Protect
    ActiveSheet.Protect Password:="240130" '<==Protect
End Sub

Re: การล๊อคชีท

Posted: Mon Oct 24, 2011 9:58 am
by bank9597
:D ขอบคุณครับ

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

Re: การล๊อคชีท

Posted: Mon Oct 24, 2011 10:06 am
by snasui
:D โดยหลักแล้วการทำงานกับไฟล์กับชีทที่ป้องกันไว้ในลักษณะนี้นั้น จะใช้วิธีการเช่นที่ผมทำมาเป็นตัวอย่าง ซึ่ง Code นี้ทำงานได้อย่างถูกต้องแล้ว ส่วนจะเกิดข้อผิดพลาดจากนี้ต่อไปหรือไม่อยู่ที่การนำไปประยุกต์ใช้ครับ

Re: การล๊อคชีท

Posted: Mon Oct 24, 2011 10:12 am
by bank9597
:D ครับอาจารย์

ผมจะลองนำโค๊ดไปปรับใช้อีกครับ เพราะว่ายังมีขั้นตอนของการดึงข้อมูลจาก DataStore มา แก้ไข,ลบ,เพิ่ม ซึ่งชีท DataStore ได้ถูกซ่อนและป้องกันไว้
ผมคิดว่าน่าจะทำได้ แต่หากมีปัญหาอะไร ก็คงต้องรบกวนอาจารย์อีกครับ :D

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 9:53 am
by bank9597
:D สวัสดีครับอาจารย์ ผมมีเรื่องรบกวนครับ
ยังอยู่ในเรื่องเดิมครับ เรื่องของการซ่อนแผ่นงานครับ
ผมอยากถามว่า ในกรณีที่ผมซ่อนแผ่นไว้ และใส่พาสเวิร์ดป้องกันการยกเลิกการซ่อนไว้ด้วย ถ้าผมอยากให้ชีทที่ผมซ่อนไว้ออกมาแสดง และเมื่อแสดงเส็จก็ให้กลับไปซ่อนเหมือนเดิม ไม่ทราบว่าเราจะทำได้ไหมครับ
สมมุติว่าชีท Report ผมซ่อนไว้ พร้อมรหัสป้องกัน ปกติผมจะเขียนโค๊ดเลือกสมุดงานดังนี้

Code: Select all



Sub Report()
Sheets ("Report").Select
End Sub


หากชีทถูกซ่อนไว้ ไม่ทราบว่าเราจะใช้วิธีการไหนครับ

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 11:07 am
by snasui
:D สามารถยกเลิกการซ่อนชีท Report ด้วย Code ด้านล่างครับ

Code: Select all

Sheets("Report").Visible = True

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 11:58 am
by bank9597
:D ขอบคุณครับ

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 12:29 pm
by bank9597
:twisted: อาจารย์ครับ จากการตั้งกระทู้นี้ ทำให้ผมคิดอะไรออกอย่างนึง ซึ่งอยากให้อาจารย์ช่วยเหลือและให้คำแนะนำครับ
ผมมีไฟล์งานทดสอบแนบมาให้ ชื่อไฟล์ Form
ในไฟล์นี้จะมีทั้งหมด 4 ชีท คือ Home,Data,Product และ Supplier
ชีท Supplier จะถูกซ่อนไว้ครับ
ในชีท Home ผมมีปุ่ม Supplier ไว้ยกเลิกการซ่อนและแสดงชีท Supplier เมื่อกดปุ่มแล้วมันจะนำเราไปที่ชีท Supplier
ภายใน Supplier นั้น จะมีปุ่มปิดชีทและซ่อนชีท Supplier ไว้ตามเดิมครับครับ

สิ่งผมอยากทำคือ เวลาเราเปิดชีท Supplier โดยการกดปุ่มสั่งงานมาจากชีท Home และในเวลาที่ชีท Supplier กำลังแสดงอยู่นั้น ชีทต่างๆที่เหลือ(Home,Data,Product)จะต้องถูกล๊อคไว้ ไม่ให้สามารถใช้งานได้

เว้นแต่ว่าเราจะกดปุ่มปิดการทำงานในชีท Supplier ก่อนเท่านั้น โดยปุ่มปิดและซ่อนชีทตัวนี้ จะมีคำสั่งซ่อนชีท และนำเราให้กลับไปยังชีทต้นทางด้วย

:D ไม่รู้อาจารย์จะพอเข้าใจไหมน่ะครับ ผมได้ทำมาให้อาจารย์ดูบ้างแล้ว แต่ติดต้องการล๊อคชีทอื่นๆครับ อิอิ ผมคิดว่าถ้าเราทำวิธีการนี้ได้ เราน่าจะประหยัดเวลาขึ้นเยอะเลยครับ

รบกวนด้วยน่ะครับ

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 1:04 pm
by snasui
:D ลองเขียน Code มาแล้วยังครับ Code อยู่ที่ Module ไหน ชื่อ Procedure ใดครับ

การใช้ Icon แสดงอารมณ์ดูความเหมาะสมด้วยนะครับ Icon แยกเขี้ยว :twisted: แบบนี้นั้นผมใช้เตือนสมาชิก หากสมาชิกมาเตือนผมโดยไม่มีสาเหตุอาจจะถูก Ban นะครับ :evil:

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 1:29 pm
by bank9597
:D ขอโทษครับอาจารย์ ในความเข้าใจของผม ผมคิดว่าเป็นการทำหน้าทะเล้นอ่ะครับ ไม่รู้ว่าเค้าใช้ในกรณีไหนกัน ตรงนี้ผมต้องขอโทษด้วยน่ะครับ ผมไม่รู้จริงๆ :D

ผมเขียนโค๊ดไปให้แล้ว ในส่วนของการซ่อนและแสดงชีทครับ ซึ่งอยู่ในโมดูลที่ 2 ชื่อ OpenSub และ CloseSub ครับ ส่วนโค๊ดที่ใช้ล๊อคชีทนั้น ยังไม่สามารถทำได้เลยครับ :roll:

รบกวนให้คำแนะนำด้วยครับ :D

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 1:43 pm
by snasui
:D ผมเขียน Code ตัวอย่างการซ่อนชีทอื่น ๆ เมื่อชีท Supplier ถูก Activate ขึ้นมา เป็นการใช้ Event ของ Worksheet_Activate มาให้ตามด้านล่าง
หากต้องการยกเลิกการซ่อนชีทอื่นและทำการซ่อนชีท Supplier ไว้ใหม่ให้ลองใช้ Event Worksheet_Deactivate ลองปรับมาดูก่อนครับ

Code: Select all

Private Sub Worksheet_Activate()
    Dim wsh As Worksheet
    For Each whs In Worksheets
        If whs.Name <> "Supplier" Then
            whs.Visible = False
        End If
    Next
End Sub

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 2:46 pm
by bank9597
:D ผมลองปรับแล้วครับ รู้สึกว่าใช้ได้ดีเลยทีเดียวครับ
ตามโค๊ดด้านล่างครับ

Code: Select all

Sub CloseSup0()
Dim wsh As Worksheet
For Each wsh In Worksheets
        If wsh.Name <> "Supplier" Then
            wsh.Visible = True
        End If
    Next
    
Sheets("Home").Select
If Sheets("Home").Select Then
Sheets("Supplier").Visible = False
End If
End Sub
ขอบคุณครับ :D

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 3:27 pm
by bank9597
:) ในกรณีที่ชีทถูกซ่อนมีรหัสกำกับไว้ เราจะสามารถใช้วิธปลดล๊อควิธีแบบเดิมได้ไหมครับ คือใช้โค๊ด :ard:

Code: Select all

ActiveSheet.Unprotect Password:="1234"

และปลคล๊อคด้วย

Code: Select all

ActiveSheet.Protect Password:="1234"
ยังไงผมจะลองทำดูก่อนครับ

Re: การล๊อคชีท

Posted: Thu Oct 27, 2011 3:36 pm
by bank9597
:D รายผลครับ ผมลองใช้แล้ว มันเป็นการป้องกันแผ่นงานครับ

แสดงว่าต้องหาวิธีใหม่ :|

Re: การล๊อคชีท

Posted: Fri Aug 30, 2013 4:09 pm
by Piyawan_kibke2523
สวัสดีค่ะคุณ bank9597 ดิฉันอยากรบกวนสอบถามคุณได้หรือเปล่าค่ะ ไม่รู้จะติดต่อยังไงอยากให้ตอบคำถามดิฉันหน่อยนะค่ะ

Re: การล๊อคชีท

Posted: Fri Aug 30, 2013 4:23 pm
by bank9597
Piyawan_kibke2523 wrote:สวัสดีค่ะคุณ bank9597 ดิฉันอยากรบกวนสอบถามคุณได้หรือเปล่าค่ะ ไม่รู้จะติดต่อยังไงอยากให้ตอบคำถามดิฉันหน่อยนะค่ะ
:D หากเป็นคำถามเกี่ยวกับสูตรเอ็กซ์เซลล์สามารถตั้งคำถามในฟอรั่มได้เลยครับ

หากเป็นคำถาม vba ต้องให้ท่านอื่นช่วยดูด้วยครับ เพราะผมไม่ค่อยถนัดครับ

หากติดต่อทางอื่น สามารถสอบถามเรื่องปลีกย่อยการใช้งานโปรแกรมได้ทางอีเมลล์ bank9597@gmail.com ครับ