Page 1 of 1

สอบถามเกียวกับการใช้ Protect

Posted: Tue Oct 11, 2011 12:09 pm
by yodpao.b
Private Sub CommandButton4_Click()
On Error Resume Next
Sheets("ฐานข้อมูลล่วงเวลา").Select
If CobBox01.Value = True Then
If MsgBox(" ท่านต้องการ ลบ ข้อมูลนี้ใช่หรือไม่ ? ", vbYesNo + vbQuestion, "ลบข้อมูล") = vbYes Then
Range("A7").Select
Do While True
If ActiveCell.Value = CobBox01.Text Then
Call UnprotectSheets
ActiveCell.Offset(0, 0).EntireRow.Delete
Unload Me
Call ProtectSheets
UserForm5.Show
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
Else: End
End If
Else
MsgBox " ค้นหาข้อมูลก่อนจึงทำการลบได้", vbExclamation, "ลบข้อมูล"
End If
End Sub
จากตัวอย่างด้านบนที่ตัวอักษรสีแดง
จะเป็นการสั่ง ยกเลิกการ Protect แล้วจึงดำเนินการทำงาน หลังจากเสร็จขั้นตอนทำงานแล้วจึง Protect เพื่อไม่ให้แก้ไขได้

ที่มา
เนื่องจากผมได้ทำการ Protect ทุกหน้า เพื่อไม่ให้มีการแก้ไขในไฟล์ และต้องการให้ใช้ฟอร์มเพียงอย่างเดียว แต่เนื่องจากบางทีผู้ใช้งานที่ได้รับมอบหมาย
ต้องการเข้าไปเปลี่ยนแปลงบางอย่างในไฟล์จึงต้องการปลดลีอคทุกหน้า ผมจึงเขียนฟอรืมและโค้ดด้านล่างนี้ขึ้นมา เพื่อสั่งปลดล้อคทุกหน้า แต่เนื่องจากทำงานไปมันก็ล้อกเองอีก
เพราะคำสั่งที่เขียนมันสั่งหลังจากทำงานให้ล้อค จึงต้องปลดล็อคอีกครั้ง
Private Sub CommandButton1_Click()
Dim UserName, PassWord As String

UserName = TextBox1.Text
PassWord = TextBox2.Text

If UserName = "123" And PassWord = "456" Or UserName = "789" And PassWord = "000" Then
MsgBox " ÃËÑʼèÒ¹¶Ù¡µéͧ¤ÅÔê¡ OK à¾×èÍ·Ó§Ò¹µèÍ ", vbInformaticon
Unload Me
Call UnProtectAll
'UserForm5!CommandButton5.Visible = False
Else
MsgBox " ÃËÑʼèÒ¹äÁè¶Ù¡µéͧ¤ÅÔê¡ OK à¾×èͻԴä¿Åì ", vbcriltcal
TextBox1.Text = ""
TextBox2.Text = ""
End If
End Sub

คำถาม
ผมได้เขียนฟอร์มปลดล๊อค Protect ทุกหน้า แล้ว ดังที่กล่าวมามันไม่ตรงวัตถุประสงค์ เพราะต้องปลดล๊อคทุกครั้งที่แก้ไข
อยากถามอาจาร์ยว่าจะเขียนโค้ดอย่างไรให้ ยกเลิกคำสั่งนี้ Call ProtectSheets
ตลอดไปจนกว่าจะปิดไฟล์ ไม่ทราบจะเข้าใจไหมครับ ยาวหรืเกิน

Re: สอบถามเกียวกับการใช้ Protect

Posted: Tue Oct 11, 2011 1:53 pm
by snasui
yodpao.b wrote:คำถาม ผมได้เขียนฟอร์มปลดล๊อค Protect ทุกหน้า แล้ว ดังที่กล่าวมามันไม่ตรงวัตถุประสงค์ เพราะต้องปลดล๊อคทุกครั้งที่แก้ไขอยากถามอาจาร์ยว่าจะเขียนโค้ดอย่างไรให้ ยกเลิกคำสั่งนี้ Call ProtectSheetsตลอดไปจนกว่าจะปิดไฟล์ ไม่ทราบจะเข้าใจไหมครับ ยาวหรืเกิน
:D การยกเลิกให้ทำเป็น Comment ครับ และเมื่อจะปิดไฟล์ค่อย Protect ไว้เหมือนเดิมโดยเพิ่ม Code ไว้ที่ ThisWorkbook เป็นตามด้านล่าง

Code: Select all

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Call ProtectSheets
End Sub

Re: สอบถามเกียวกับการใช้ Protect

Posted: Tue Oct 11, 2011 2:46 pm
by yodpao.b
การยกเลิกให้ทำเป็น Comment ครับ หมายถึงอะไรครับ

Re: สอบถามเกียวกับการใช้ Protect

Posted: Tue Oct 11, 2011 3:55 pm
by yodpao.b
ที่อาจาร์ยบอกให้ คอมเมนต์คือใส่ฟันหนูขีดเดียวใช่ไหมครับ

ขอเรียบเรียงคำพูดใหม่นะครับ
ลัษณะการใช้งานของไฟล์นี้คือ
เป็นการแชร์ไฟล์เพื่อใช้งานหลายคน จึงจำเป็นต้อง Protect ทุกหน้าครับหลังการทำงานของโปรแกรม
แต่จะมีอยู่ 1 คนที่สามารถเข้าไปแก้ไขในไฟล์ได้ครับ คนคนนั้นต้องการให้สร้าง Password เพื่อปลด Lock ทุกหน้า

หลังจากผมได้เขียนโค้ดแล้ว ก็ยังติดปํญหาอยู่ คือ เมื่อใส่ Password แล้วก็สามารถแก้ไขได้แต่พอรันคำสั่งเดิมมันก็ล็อคPasswordอีก
ยกตัวอย่างเช่น เมื่อทำการแก้ไขข้อมูล ขั้นตอนดังนี้
1.เรียกข้อมูล แก้ไขข้อมูลในฟอร์ม ปลดProtect นำข้อมูลไปไว้ในฐาน ล็อคProtect
2.ผู้ใช้ต้องการ ปลดล็อคทุกหน้า จึงใส่ Password เพื่อทำการปลดล็อคทุกหน้า(แล้วจึงทำอะไรก็ได้กับข้อมูล)
3.หลังจากนั้น ก็ทำการแก้ไขข้อมูลเมื่อเดิมดังขั้นตอนที่1 แต่เมื่อทำเสร็จมันสั่งให้ ล็อค Protect อีกดครั้ง
เวลาเราจะแก้ไขก็ต้องใส่ Password อีก
password ตอนปลดล็อค อยากใส่ครั้งเดียวแล้วไม่ตอนใส่อีก

Re: สอบถามเกียวกับการใช้ Protect

Posted: Tue Oct 11, 2011 5:50 pm
by snasui
:D การทำเช่นนั้นสามารถดูการ Lock และปลด Lock ทีเดียวทุก Sheet ได้จากที่นี่ครับ :arrow: http://topicstock-tech.pantip.com/tech/ ... 61910.html แล้วลองประยุกต์ใช้ดูครับ จะได้ไม่ต้องทำไปปลด Lock ไป