น่าจะมีคนใช้บ่อย ๆ กับแบบฟอร์มที่อยู่ ที่อยากให้เลือกข้อมูล จังหวัด แล้วแสดงอำเภอเฉพาะจังหวัดที่เลือก แล้วแสดงตำบลของอำเภอที่เลือก เป็นแบบลูกโซ่ ใน Excel (Dependent Dropdown List) สามารถทำได้ครับ ไม่ยาก ผมได้ทำมาสำเร็จรูปมาให้ใช้งานแล้วครับ โดยเป็น Droplist ธรรมดา ไม่ได้ใช้แมโครหรือคำสั่งพิเศษแต่ประการใด แต่ใช้วิธีสร้าง Formula Name ตามชื่อจังหวัด จังหวัด+อำเภอ เอาไว้ล่วงหน้า แล้วใช้คำสั่ง INDIRECT ในการดึงมาใช้งานอีกที (ลองใช้คำสั่ง Data→Data Validation เพื่อดูสูตรได้)
ในไฟล์ 20190301_address_autolist.xlsx จะมีชีทชื่อ Provice อยู่ ให้ทำการคัดลอกไปที่ไฟล์ที่เราต้องการจะทำแบบฟอร์ม
จากนั้นให้ทำการคัดลอกตัวเลือก จังหวัด อำเภอ ตำบล แล้วนำไปวางที่แบบฟอร์มที่เราต้องการจะใช้งาน โดยให้วางไว้ที่ว่าง ๆ เพื่อจะได้ทำการย้ายตัว Droplist ไปวางบนฟอร์มอีกที
หากสนใจจะใช้งาน สามารถดาวน์โหลดไฟล์ไปใช้งานได้เลย
เนื่องจากข้อมูล จังหวัด อำเภอ ตำบล ผมเอามาจากเว็บไซต์หน่วยงานรัฐ ซึ่งไม่แน่ใจว่าถูกต้อง 100% หรือไม่ หากพบว่ามีข้อผิดพลาด รบกวนช่วยแจ้งไว้ใน Comment อีเมลมาแจ้ง หรือจะเปิด Issue ใน GitHub ก็ได้ครับ เพื่อผมจะได้ปรับปรุงข้อมูลให้ถูกต้องต่อไป ขอบคุณครับ
หากใครแกะสูตรดู จะพบว่า ชื่อที่อ้างในสูตร INDIRECT ไม่พบใน Name Manager เลยสงสัยว่ามันอ้างอย่างไร ต้องอธิบายอย่างนี้ครับ ในการสร้าง List สำหรับใช้เลือก อำเภอ และ ตำบล ผู้เขียนใช้วิธีเขียนโปรแกรม VBA ขึ้นมาเพื่อทำการสร้างชื่อให้อัตโนมัติตามตารางในชีท Province เช่น หากเลือกจังหวัดเป็น กรุงเทพมหานคร ใช่ช่องเลือกอำเภอ จากสูตร จากสูตร =INDIRECT("a_" & C7) เมื่อแทน C7 ผลที่ได้คือ =INDIRECT("a_กรุงเทพมหานคร") ซึ่งชื่อ "a_กรุงเทพมหานคร" ถูกสร้างด้วย VBA และซ่อนเอาไว้
แล้วไมผมต้องซ่อนชื่อของ List ที่สร้างขึ้นมา ที่ต้องทำแบบนี้เพราะ หากแสดงชื่อ List ทั้งหมด จะรบกวนการใช้งานปกติทันที เพราะจำนวน List จะเยอะมาก (จำนวนจังหวัด + จำนวนอำเภอ = 77 + 928 = 1,005 ชื่อ) จึงเป็นเหตุผลที่ต้องซ่อนเอาไว้ครับ
หากใครอยากได้ทำแบบนี้ใช้เองโดยไม่ต้องใช้ VBA ในอินเทอร์เน็ตมีคนสอนอยู่แล้วครับ สามารถ Google หาดูได้ ของผู้เขียนเน้นเอาไปใช้งานได้เลยมากกว่าที่จะเน้นให้มาแกะสูตรสร้างใช้เองครับ