กรณีที่เราสร้างไฟล์เพื่อให้ผู้ใช้งานกรอกข้อมูล บางกรณีจำเป็นที่จะต้องมีการ 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
ดูภาพประกอบทั้งสองวิธีตามด้านล่างครับ
Revised: January 28, 2017 at 20:06
ขอขอบคุณที่ี่ให้ข้อมูลความรู้ซึ่งมีประโยชน์อย่างมากผมได้ลองทำตาม custom view แล้ว ใช้ได้ผลดีแต่อยากลองทำแบบ VBA ดูด้วย โดยคัดลอกคำสั่งมาจากเวป แล้วเรียกใช้แมคโคร delunlocked จนขึ้นว่า complete ok แต่ไม่มีการลบข้อมูลครับ ไม่ทราบว่าต้องตั้งค่าอะไรอีกหรือเปล่าครับขอบคุณครับ
ลองส่งแนบไฟล์ตัวอย่างที่ทำแล้วไปที่ http://www.snasui.com/ ซึ่งต้องสมัครสมาชิก(ฟรี)ก่อนถึงจะโพสต์ได้ จะช่วยดูให้ครับ
ขอบคุณสำหรับคำแนะนำครับตามความเข้าใจของผม สำหรับคนที่มาอ่านที่หลัง เทคนิคนี้มีเงื่อนไขการใช้งาน เช่น1 ถ้ามีการ merge cell หรือชื่อ worksheet อื่น จะใช้งาน vba นี้ไม่ได้ถ้าจะใช้กับ merge cell, vba จะมี่ความซับซ้อนมากขึ้น2 ถ้าต้องการลบเซลล์ที่เลือกใน custom view จะต้องเลือกและสร้างใหม่ทั้งหมดแต่ถ้าต้องการเพิ่มเซลล์ สามารถเพิ่มได้โดยตั้งชื่อแทนชื่อเดิมถ้าจะเลือกเซลล์หลาย ๆ สิบเซลล์ ควรใช้ความระมัดระวังJoe