Page 1 of 1

การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 9:31 am
by bank9597
:D อาจารย์ครับ โค๊ดด้านล้างเป็นโค๊ดสั่งเคลียร์ข้อมูล เวลามีข้อมูลอยู่ในฟอร์มครบตามเซลล์ที่เราระบุไว้ในโค๊ด แล้วเราสั่งเคลียร์ข้อมูล มันเคลียร์ได้
แต่เวลาไม่มีข้อมูลใดๆเลย แล้วเราสั่งเคลียร์ มันก็จะติด Debug ครับ คิดว่าน่าจะต้องมี IF เข้าไปช่วยอีก
รบกวนอาจารย์เพิ่มโค๊ดให้ด้วยน่ะครับ ผมยังจับทางไม่ถูก

Code: Select all

Sub Button1_Click()
    ActiveSheet.Unprotect Password:="240130" '<==UnProtect
    Sheets("PurchaseOrder").Select
    Selection.ClearContents
    Range("B17:H76,L3,G7,C13,B7").SpecialCells(xlCellTypeConstants).ClearContents
    ActiveSheet.Protect Password:="240130" '<== Protect Again
    Exit Sub

End Sub

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 9:36 am
by snasui
:D ลองใช้ On Error Resume Next มาช่วยครับ จะไ้ด้เป็น

Code: Select all

Sub Button1_Click()
    On Error Resume Next
    'Other code
    Range("B17:H76,L3,G7,C13,B7").SpecialCells(xlCellTypeConstants).ClearContents
    ActiveSheet.Protect Password:="240130" '<== Protect Again
    Exit Sub
End Sub

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:01 am
by bank9597
:D มันไม่ทำงานอ่ะครับ ผมเลยใส่โค๊ด

Code: Select all

ActiveSheet.Protect Password:="240130" '<== Protect Again
นี้ไปที่บรรทัดบนสุด มันเลยเป็นปรกติ

เพราะอะไรครับ

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:08 am
by snasui
:lol: ที่ยกมาถามนั้น ผิด Logic และ Code ไม่ควรทำงานได้ครับ

การทำงานกับชีทที่ป้องกันไว้นั้น ต้องปลดการป้องกันก่อน แล้วค่อย Run ตาม Statement อื่น ๆ จากนั้นค่อย Protect เข้าไปใหม่

หากนำ Code ที่ทำการ Protect ไว้ก่อน Code อื่น ๆ แล้วคำสั่งในการ Clear จะทำงานได้อย่างไรหากไปป้องกันการแก้ไขเอาไว้ :lol:

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:16 am
by bank9597
:D อ่อ ไม่ใช่ครับอาจารย์ คือว่าผมเอาโค๊ด

Code: Select all

ActiveSheet.Protect Password:="240130" '<== Protect Again
ไปไว้บรรทัดทัดบนสุด มันเลยกลายเป็นแบบนี้ครับ

Code: Select all

Sub Button1_Click()
    ActiveSheet.Unprotect Password:="240130" '<==UnProtect
    On Error Resume Next
    'Other code
    Range("B17:H76,L3,G7,C13,B7").SpecialCells(xlCellTypeConstants).ClearContents
    ActiveSheet.Protect Password:="240130" '<== Protect Again
    Exit Sub

End Sub
เพราะตรงนี้อาจารย์เคยบอกผมแล้ว ผมจำได้แม่นครับ :mrgreen:

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:26 am
by snasui
:D ครับ ไม่ทราบปัญหาคืออะไรครับ :?:

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:34 am
by bank9597
:D คือตอนที่เอาโค๊ดของอาจารย์มาใส่ แล้วผมก็ลองทดสอบ ปรากฏว่ามันเคลียร์ข้อมูลปกติ แต่พอกดครั้งที่2 ตอนที่ไม่มีข้อมูลในฟอร์มเลย ปุ่มมันไม่ทำงาน ผมเลยกลับไปดูโค๊ดของอาจารย์ ซึ่งผมเห็นโค๊ด ActiveSheet.Protect Password:="240130" '<== Protect Again อันนี้อยู่ด้านล่าง คำว่า "Protect Again" ทำให้ผมเข้าใจว่า เราต้องปลดล๊อคชีทก่อน ผมเลยกลับไปดูตัวอย่างโค๊ดที่อาจารย์เคยให้ไว้ เลยจำได้ ผมจึงเอา ActiveSheet.Unprotect Password:="240130" '<==UnProtect ไว้บรรทัดบนสุด แล้วลองRUn ดู ปรากฏว่าปัญหาหมดไป ผมเลยถามอาจารย์ว่า เพราะเหตุใดมันถึงเป็นเช่นนั้น เพราะผมคิดว่าอาจารย์ต้องทราบอย่างแน่นอนครับ :D

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:39 am
by snasui
:lol: แสดงว่าผมตอบย่อไปหน่อย ไม่ได้นำ Code Unprotect มาใส่ไว้ด้วยเนื่องจากละไว้ในฐานที่เข้าใจ
bank9597 wrote:ผมเลยกลับไปดูตัวอย่างโค๊ดที่อาจารย์เคยให้ไว้ เลยจำได้ ผมจึงเอา ActiveSheet.Unprotect Password:="240130" '<==UnProtect ไว้บรรทัดบนสุด แล้วลองRUn ดู ปรากฏว่าปัญหาหมดไป ผมเลยถามอาจารย์ว่า เพราะเหตุใดมันถึงเป็นเช่นนั้น เพราะผมคิดว่าอาจารย์ต้องทราบอย่างแน่นอนครับ
สำหรับคำตอบนี้ได้ตอบไปแล้วครับ :ard:
snasui wrote:การทำงานกับชีทที่ป้องกันไว้นั้น ต้องปลดการป้องกันก่อน แล้วค่อย Run ตาม Statement อื่น ๆ จากนั้นค่อย Protect เข้าไปใหม่

หากนำ Code ที่ทำการ Protect ไว้ก่อน Code อื่น ๆ แล้วคำสั่งในการ Clear จะทำงานได้อย่างไรหากไปป้องกันการแก้ไขเอาไว้

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:48 am
by bank9597
:D อิอิ อาจารย์ต้องทำใจหน่อยน่ะครับ พอดีว่าผมยังไม่ได้คล่องในเรื่องการเขียนโค๊ดเลย หนังสือก็ยังไม่ได้ซื้อมาอ่านเลย (น้ำท่วม อิอิ)
ดังนั้นถ้าอาจารย์ตอบอะไรมาแล้วผมไม่เข้าใจ ผมต้องขอโทษด้วยครับ เพราะความรู้ยังไม่ถึงจริงๆ :mrgreen:

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 10:58 am
by bank9597
อีกนิดครับอาจารย์ ผมไม่อยากตั้งกระทู้ใหม่

ปัญหาที่ผมกลัวมาตลอด ตอนนี้มันเริ่มปรากฏแล้วครับ ไม่รู้ว่าเป็นเพราะมีสูตรและ มาโคร เยอะไปหรือเปล่า มันถึงได้ Error บ่อยเวลากด Save
กลัวว่าเวลาเอาไปใช้งานจริงจะเกิดปัญหาครับ
Error.JPG

Re: การเคลียร์ข้อมูล

Posted: Fri Oct 21, 2011 11:09 am
by snasui
:D ตอบไว้แล้วตามนี้ครับ :ard:
snasui wrote: :shock: ทดสอบวิธีนี้และไฟล์นี้กับเครื่องอื่น ๆ ครับ หากว่าสามารถทำงานได้ปกติ แสดงว่าเป็นที่โปรแกรม Uninstall แล้ว Install ใหม่ด้วยตัวที่สมบูรณ์ หากเครื่องอื่นก็ได้ผลทำให้โปรแกรมปิดไปเหมือนกันก็แสดงว่าเป็นที่ไฟล์ครับ