Page 2 of 2
Re: การล๊อคชีท
Posted: Mon Oct 24, 2011 7:53 am
by snasui

ตัวอย่าง 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

ขอบคุณครับ
อีกนิดครับ โค๊ดที่อาจารย์ให้มานี้ ถูกต้องตามหลักการแล้วใช่ไหมครับ คือว่ามันจะไม่เกิดข้อผิดพลาดภายหลังดังที่อาจารย์เคยกล่าวไว้
ถ้ายังไงแล้ว ผมจะเอาไปปรับรูปแบบใหม่ให้ถูกต้องตามหลักครับ
Re: การล๊อคชีท
Posted: Mon Oct 24, 2011 10:06 am
by snasui

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

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

Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 9:53 am
by bank9597

สวัสดีครับอาจารย์ ผมมีเรื่องรบกวนครับ
ยังอยู่ในเรื่องเดิมครับ เรื่องของการซ่อนแผ่นงานครับ
ผมอยากถามว่า ในกรณีที่ผมซ่อนแผ่นไว้ และใส่พาสเวิร์ดป้องกันการยกเลิกการซ่อนไว้ด้วย ถ้าผมอยากให้ชีทที่ผมซ่อนไว้ออกมาแสดง และเมื่อแสดงเส็จก็ให้กลับไปซ่อนเหมือนเดิม ไม่ทราบว่าเราจะทำได้ไหมครับ
สมมุติว่าชีท Report ผมซ่อนไว้ พร้อมรหัสป้องกัน ปกติผมจะเขียนโค๊ดเลือกสมุดงานดังนี้
Code: Select all
Sub Report()
Sheets ("Report").Select
End Sub
หากชีทถูกซ่อนไว้ ไม่ทราบว่าเราจะใช้วิธีการไหนครับ
Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 11:07 am
by snasui

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

ขอบคุณครับ
Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 12:29 pm
by bank9597

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

ไม่รู้อาจารย์จะพอเข้าใจไหมน่ะครับ ผมได้ทำมาให้อาจารย์ดูบ้างแล้ว แต่ติดต้องการล๊อคชีทอื่นๆครับ อิอิ ผมคิดว่าถ้าเราทำวิธีการนี้ได้ เราน่าจะประหยัดเวลาขึ้นเยอะเลยครับ
รบกวนด้วยน่ะครับ
Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 1:04 pm
by snasui

ลองเขียน Code มาแล้วยังครับ Code อยู่ที่ Module ไหน ชื่อ Procedure ใดครับ
การใช้ Icon แสดงอารมณ์ดูความเหมาะสมด้วยนะครับ Icon แยกเขี้ยว

แบบนี้นั้นผมใช้เตือนสมาชิก หากสมาชิกมาเตือนผมโดยไม่มีสาเหตุอาจจะถูก Ban นะครับ

Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 1:29 pm
by bank9597

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

Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 1:43 pm
by snasui

ผมเขียน 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

ผมลองปรับแล้วครับ รู้สึกว่าใช้ได้ดีเลยทีเดียวครับ
ตามโค๊ดด้านล่างครับ
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
ขอบคุณครับ

Re: การล๊อคชีท
Posted: Thu Oct 27, 2011 3:27 pm
by bank9597

ในกรณีที่ชีทถูกซ่อนมีรหัสกำกับไว้ เราจะสามารถใช้วิธปลดล๊อควิธีแบบเดิมได้ไหมครับ คือใช้โค๊ด
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

รายผลครับ ผมลองใช้แล้ว มันเป็นการป้องกันแผ่นงานครับ
แสดงว่าต้องหาวิธีใหม่

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 ดิฉันอยากรบกวนสอบถามคุณได้หรือเปล่าค่ะ ไม่รู้จะติดต่อยังไงอยากให้ตอบคำถามดิฉันหน่อยนะค่ะ

หากเป็นคำถามเกี่ยวกับสูตรเอ็กซ์เซลล์สามารถตั้งคำถามในฟอรั่มได้เลยครับ
หากเป็นคำถาม vba ต้องให้ท่านอื่นช่วยดูด้วยครับ เพราะผมไม่ค่อยถนัดครับ
หากติดต่อทางอื่น สามารถสอบถามเรื่องปลีกย่อยการใช้งานโปรแกรมได้ทางอีเมลล์
bank9597@gmail.com ครับ