snasui wrote: Sat Sep 21, 2019 10:53 am
การให้โชว์หัวคอลัมน์ของ ListBox อยู่ตลอดเวลาให้สร้าง Label เอาไว้เองแล้วใช้การ Loop ค่าเข้าไปแทนการใช้ RowSource ครับ
แต่หากใช้ RowSource ในการ Clear ทิ้งลองกำหนดให้เหลือบรรทัดบนสุดไว้สักบรรทัดแทนการ Clear ทิ้งทั้งหมดดูครับ
ควรจะแจ้งมาด้วยเสมอว่าผู้ตอบจะต้องทดสอบไฟล์ที่แนบมาอย่างไรจึงจะเห็นว่าไม่มีหัวคอลัมน์ จะได้เข้าใจปัญหาได้โดยเร็วครับ

ผมตอบไปแล้วตามโพสต์ที่ยกมาครับ
ในการทำงานกับ ListBox จะเลือกใช้อย่างใดอย่างหนึ่งคือ Loop ค่าเข้าไปเองแล้วสร้าง Label เป็นหัวคอลัมน์รอไว้เมื่อลบหรือเพิ่มข้อมูลหัวคอลัมน์จะไม่หาย
หากสร้างรายการด้วย RowSource เมื่อมีการ Clear RowSource จะ
ไม่เลือก Clear ทิ้งทั้งหมดแต่ให้เหลือบรรทัดที่ 1 ของข้อมูลซึ่งเป็นหัวคอลัมน์เอาไว้ เมื่อมีการ Loop เพิ่มขึ้นทีละบรรทัดก็จะขยายพื้นที่ให้กับ RowSource แต่มีข้อจำกัดคือข้อมูลที่จะนำมาแสดงใน ListBox จะต้องติดกันลงไปด้านล่าง จึงเหมาะที่จะ Loop ข้อมูลไปพักไว้ที่ใด ๆ ก่อนแล้วนำข้อมูลจากพื้นที่นั้นเข้ามาแสดงใน ListBox ทีเดียวทุกรายการ
การเขียน Code เป็น
Me.ListBox1.RowSource = "" เรียกว่า Clear ทิ้งทั้งหมดรวมทั้งหัวบรรทัด เมื่อทำเช่นนี้จะไม่มีหัวคอลัมน์แสดงอยู่ครับ
จากงานนี้ ควรจะสร้าง Label รอไว้แล้ว Loop ค่าเข้าไปใส่ใน ListBox แทนการใช้ RowSource จะมีความยืดหยุ่นกว่าครับ