สอบถามเกียวกับการใช้ Protect
Posted: Tue Oct 11, 2011 12:09 pm
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
ตลอดไปจนกว่าจะปิดไฟล์ ไม่ทราบจะเข้าใจไหมครับ ยาวหรืเกิน
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
ตลอดไปจนกว่าจะปิดไฟล์ ไม่ทราบจะเข้าใจไหมครับ ยาวหรืเกิน