PDA

View Full Version : การทำให้ Option Button สามารถเรียงลำดับได้นะครับ



nutty
12 Jun 2007, 10:06
ผมกำลังพยายามสร้างฟอร์มเพื่อค้นหาข้อมูลเกี่ยวกับข้อมูลวัตถุดิบ โดยให้ผู้ใช้งานสามารถสืบค้นได้จาก รหัสเอกสาร (MQR No.) หรือ ชื่อวัตถุดิบ (Material Code)

เมื่อทำการทดลองใช้งานโดยเลือก Option button ที่ รหัสเอกสาร (MQR No.) พบว่า ไม่มีปัญหาใด แต่เมื่อเลือก Option button ที่ ชื่อวัตถุดิบ (Material Code) พบว่า การค้นหายากมาก เนื่องจากชื่อรายการไม่ได้เรียงตามตัวอักษรนะครับ

มีท่านใดมีคำแนะนำในการแก้ปัญหานี้ไหมครับ คือ ผมต้องการทำให้ได้ว่า เมื่อเลือก Option button ใดๆแล้วให้ข้อมูลที่แสดงใน Combo box ถูกเรียงลำดับจากน้อยไปมากนะครับ

ในที่นี้ ผมได้แนบไฟล์ตัวอย่างแบบฟอร์มมาให้ด้วยนะครับ
ขอบคุณทุกท่านครับ

มิตรภาพ
12 Jun 2007, 12:31
ตามความเข้าใจของผม ComboBox ไม่สามารถเรียงข้อมูลข้างในได้นะครับ (หากเข้าใจผิดพลาดต้องขออภัย)
แต่ผมจะแก้ปัญหานี้โดย...

เพิ่มคอลัมน์ "No." มาข้างหน้า MQR No. แล้วรันลำดับที่ลงไป
เมื่อเริ่มงาน ให้มีมาโครสำหรับจัดเรียงตาม No. นี้เสมอ
Option button ตัวแรก (MQR No.) ให้มีมาโครจัดเรียง data table ตาม MQR No. นี้ก่อน
Option button ตัวหลัง (Code) ให้มีมาโครจัดเรียง data table ตาม Code นี้ด้วยเวลาคลิกเลือกแต่ละครั้ง ข้อมูลที่เข้าไปแสดงใน Combo Box ก็จะเป็นไปตามต้องการครับผม

nutty
14 Jun 2007, 19:57
ขอบคุณ คุณมิตรภาพ มากเลยนะครับ

nutty
4 Jul 2007, 09:44
รบกวนถาม คุณมิตรภาพ และผู้รู้ทุกท่านครับ

ผมได้ลองพยายามเขียน Code ให้ Option Button สามารถเรียงลำดับข้อมูล โดยใช้การ Dynamic range แต่เขียนเป็น Code VBA นะครับ ตามข้างล่างนี้

Sub OptionButton2_Click()
Dim MQRDBase As Range ' กำหนดค่าเป็น Range Name
Dim TableRange As Range ' กำหนดค่าเป็น Range ที่ใช้อ้างอิงในตารางข้อมูล
Dim CountRow As Single ' ใช้รับค่าจำนวนแถว จากการใช้ฟังก์ชัน CountA

With Workbooks("MQR-Summary »Õ 47-49.xls")

Set TableRange = Worksheets("DataTable").Range("D6:AH34")
CountRow = Application.WorksheetFunction.CountA(Worksheets("DataTable").Range("D6:D26265"))
Set MQRDBase = TableRange.Offset(rowoffset:=CountRow, columnoffset:=0)
MQRDBase.Sort key1:=MQRDBase(CountRow, 2), order1:=xlAscending

End With

End Sub

แต่พอรันกลับไม่มีการเปลี่ยนแปลงใดๆอะไรเกิดขึ้นเลยครับ ไม่ทราบว่า ผมทำผิดตรงหรือเปล่าครับ รบกวนทุกท่านช่วยแนะนำด้วยนะครับ