กรณีที่เราสร้างไฟล์เพื่อให้ผู้ใช้งานกรอกข้อมูล บางกรณีจำเป็นที่จะต้องมีการ Protect Worksheet เพื่อไม่ให้แก้ไขเซลล์ที่สำคัญและเปิดให้แก้ไขได้เฉพาะบางเซลล์ หากเปิดให้มีการแก้ไขได้หลาย ๆ เซลล์ในพื้นที่ไม่ติดกัน ในขั้นตอน Clear ข้อมูลจะค่อนข้างลำบากหากต้องคลิกเลือกเซลล์เหล่านั้นเอง
การเลือกเซลล์ที่ไม่ได้ทำการ Locked เอาไว้พร้อม ๆ กันทีเดียวขอเสนอไว้ 2 วิธีดังนี้ครับ
- ด้วยการสร้าง Custom View โดยการเลือกเซลล์ที่ให้แก้ไขได้ไว้ก่อน จากนั้นเข้าไปกำหนดชื่อให้กับ View โดยเข้าเมนู View > Custom View > Add > กำหนดชื่อ View
เมื่อจะเรียกใช้งานให้เข้าเมนูเดียวกันแล้วเลือกชื่อ View ที่ต้องการ - ด้วยการเขียน Code VBA ซึ่งมีตัวอย่าง Code ตามด้านล่าง
Option Explicit
Sub DelUnlocked()
Dim r As range
Dim uRange As range
Set uRange = Worksheets("Sheet1").UsedRange
For Each r In uRange
If r.Locked = False Then r.ClearContents
Next r
MsgBox "Complete"
End Sub
3 ความคิดเห็น:
ขอขอบคุณที่ี่ให้ข้อมูลความรู้ซึ่งมีประโยชน์อย่างมาก
ผมได้ลองทำตาม custom view แล้ว ใช้ได้ผลดี
แต่อยากลองทำแบบ VBA ดูด้วย โดยคัดลอกคำสั่งมาจากเวป แล้วเรียกใช้แมคโคร delunlocked จนขึ้นว่า complete ok แต่ไม่มีการลบข้อมูลครับ ไม่ทราบว่าต้องตั้งค่าอะไรอีกหรือเปล่าครับ
ขอบคุณครับ
ลองส่งแนบไฟล์ตัวอย่างที่ทำแล้วไปที่ http://www.snasui.com/ ซึ่งต้องสมัครสมาชิก(ฟรี)ก่อนถึงจะโพสต์ได้ จะช่วยดูให้ครับ
ขอบคุณสำหรับคำแนะนำครับ
ตามความเข้าใจของผม สำหรับคนที่มาอ่านที่หลัง เทคนิคนี้มีเงื่อนไขการใช้งาน เช่น
1 ถ้ามีการ merge cell หรือชื่อ worksheet อื่น จะใช้งาน vba นี้ไม่ได้
ถ้าจะใช้กับ merge cell, vba จะมี่ความซับซ้อนมากขึ้น
2 ถ้าต้องการลบเซลล์ที่เลือกใน custom view จะต้องเลือกและสร้างใหม่ทั้งหมด
แต่ถ้าต้องการเพิ่มเซลล์ สามารถเพิ่มได้โดยตั้งชื่อแทนชื่อเดิม
ถ้าจะเลือกเซลล์หลาย ๆ สิบเซลล์ ควรใช้ความระมัดระวัง
Joe
แสดงความคิดเห็น