Page 1 of 1
สอบถามการยกเลิกโด้บางบรรทัด
Posted: Mon Nov 07, 2011 9:26 am
by yodpao.b
Code: Select all
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
จากโค้ดด้านบน
ถ้าผมสร้างปุ่มCommandButtonมา 1 ปุ่ม ปุ่มนี้ต้องการสั่งให้ยกเลิกทุกโค้ดที่ชื่อ Call ProtectSheets
จะเขียนอย่างไรครับ
Re: สอบถามการยกเลิกโด้บางบรรทัด
Posted: Mon Nov 07, 2011 8:38 pm
by snasui

การยกเลิก Statement ใด ๆ ให้ใช้การ Replace แทนการเขียน Code ไปยกเลิกครับ
โดยการกดแป้น Ctrl+H > ช่องบน คีย์ค่าที่ต้องการเปลี่ยน > ช่องล่างคีย์ค่าที่ต้องการเปลี่ยนไปเป็น
เช่น ช่องบนคีย์ Call ProtectSheets
ช่องล่างคีย์
'Call ProtectSheets
จากนั้นกดปุ่ม Replace All จะทำให้ Call ProtectSheets กลายเป็น Comment ทั้งหมด
หากยกเลิก Precedure ที่มีคำว่า Call ProtectSheets ให้กดแป้น Ctrl+F แล้วคีย์ Call ProtectSheets จากนั้นกด Find Next เพื่อหาว่า Prodcedure ใดมีคำว่า Call ProtectSheets อยู่บ้าง จากนั้นให้ทำเป็น Comment ตามต้องการ
การใช้ Code VBA เพื่อเปลี่ยน Code VBA อื่น ๆ ก็สามารถทำได้แต่ไม่ง่ายครับ
Re: สอบถามการยกเลิกโด้บางบรรทัด
Posted: Tue Nov 08, 2011 8:32 am
by yodpao.b
การค้นหาแล้วแก้ไขเข้าใจครับอาจารย์
แต่ที่ผมต้องการคือโดยปกติให้ รันโค้ดCall ProtectSheets (การทำงานตามปกติผู้ใช้คนอื่นสามารถเข้ามาดู REport ได้ หรือค้นหาข้อมูลได้แต่ไม่สามารถกรอกข้อมูลหรือแก้ไขได้)
แต่จะมีผู้รับผิดชอบในการกรอกข้อมูลต้องการปลดลีอคเวลาที่เขาจะกรอกหรือแก้ไขข้อมูล ชึ่งผมได้อทิบายให้เขาฟังแล้วว่าการทำแบบนั้นอาจเป็นผมเสียกับโปรแกรมควรจะใช้ฟอรืมกรอกหรือแก้ไขแทน ชึ่งเขาก็เข้าใจแต่เขาเสริมว่าและถ้าในกรณีที่ต้องการปรับขนาดตัวหนังสือหรือขยับแถวหรือจัดรูปแบบหรือผมพิมพ์ชื่อหัวข้อผิดจะแก้ไขได้อย่างไร
ผมจึงแก้ไขโดยการทำ ปุ่มPassword เพิ่ม ปุ่มนี้ต้องการ สั่วยกเลิก รันโค้ดCall ProtectSheets นี่ละครับคือที่มาของความต้องการ
อาจาร์ยคงจะแปลกใจว่าทำไมไม่สั่ง รันโค้ค UnProtectSheetsAll ใช้แล้วครับแต่พอรันโปรแกรมมันก็ Protect อีก เพราะทุกโค้ดผมสั่ง Protect หมด ยาวหน่อยนะครับ ข้อมูลอันนี้ขอใช้เป็นความรู้เพื่อพัฒนางานในโอกาสต่อไป
Re: สอบถามการยกเลิกโด้บางบรรทัด
Posted: Tue Nov 08, 2011 10:35 am
by snasui

ยังไม่เคลียร์ครับ
การกำหนดให้ใครทำอะไรได้สามารถ
เพิ่มขั้นตอนให้ผู้นั้นระบุตัวตนก่อนก็ทำได้ครับ เช่น ถ้ากรอกชื่อหรือรหัสใด ๆ ถูกต้องก็อนุญาตให้ทำงานนั้น ๆ ได้ เช่นการเปลี่ยนขนาดตัวอักษร ใส่สี ตีเส้น ซึ่งจะเป็นการเรียกใช้รหัสเพื่อทำการปลดการ Protect และเมื่อทำแล้วก็ทำการ Protect เข้าไปใหม่
นอกจากนี้เราสามารถกำหนดรหัสเฉพาะพื้นที่ใน Excel ได้ครับ เช่น A1:C100 เช่นนี้เป็นต้น
Re: สอบถามการยกเลิกโด้บางบรรทัด
Posted: Tue Nov 08, 2011 12:19 pm
by yodpao.b
ขอบคุณครับ
"กำหนดรหัสเฉพาะพื้นที่ใน Excel ได้ครับ เช่น A1:C100 เช่นนี้เป็นต้น"
จะจำไว้ครับไว้ใช้สอบถามวันหลัง