:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

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

#1

Post 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
ตลอดไปจนกว่าจะปิดไฟล์ ไม่ทราบจะเข้าใจไหมครับ ยาวหรืเกิน
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#2

Post 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
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

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

#3

Post by yodpao.b »

การยกเลิกให้ทำเป็น Comment ครับ หมายถึงอะไรครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

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

#4

Post by yodpao.b »

ที่อาจาร์ยบอกให้ คอมเมนต์คือใส่ฟันหนูขีดเดียวใช่ไหมครับ

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

หลังจากผมได้เขียนโค้ดแล้ว ก็ยังติดปํญหาอยู่ คือ เมื่อใส่ Password แล้วก็สามารถแก้ไขได้แต่พอรันคำสั่งเดิมมันก็ล็อคPasswordอีก
ยกตัวอย่างเช่น เมื่อทำการแก้ไขข้อมูล ขั้นตอนดังนี้
1.เรียกข้อมูล แก้ไขข้อมูลในฟอร์ม ปลดProtect นำข้อมูลไปไว้ในฐาน ล็อคProtect
2.ผู้ใช้ต้องการ ปลดล็อคทุกหน้า จึงใส่ Password เพื่อทำการปลดล็อคทุกหน้า(แล้วจึงทำอะไรก็ได้กับข้อมูล)
3.หลังจากนั้น ก็ทำการแก้ไขข้อมูลเมื่อเดิมดังขั้นตอนที่1 แต่เมื่อทำเสร็จมันสั่งให้ ล็อค Protect อีกดครั้ง
เวลาเราจะแก้ไขก็ต้องใส่ Password อีก
password ตอนปลดล็อค อยากใส่ครั้งเดียวแล้วไม่ตอนใส่อีก
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#5

Post by snasui »

:D การทำเช่นนั้นสามารถดูการ Lock และปลด Lock ทีเดียวทุก Sheet ได้จากที่นี่ครับ :arrow: http://topicstock-tech.pantip.com/tech/ ... 61910.html แล้วลองประยุกต์ใช้ดูครับ จะได้ไม่ต้องทำไปปลด Lock ไป
Post Reply