ต้องการสร้าง List Box ใน Form
กระทู้เก่าบอร์ด อ.Yeadram

 5,593   3
URL.หัวข้อ / URL
ต้องการสร้าง List Box ใน Form

เรียน อ.สันติสุขและทุกท่าน

ผมได้พยายามค้นหาจาก board เรื่องการสร้าง list box แต่ยังไม่พบ ผมเลยอยากทราบการเขียน form ที่เป็นในรูปแบบ List Box คือผม table อยู่หนึ่งอันที่มีชือว่า tSendback โดยมีข้อมูลดังนี้
ReasonCode   Reason_Desc
01             ลืมใส่ ID
02             ขาดลายเซ็นต์ในบัตรประชาชน
03             ขาดทะเบียนบ้าน
04             ขาดสมุดบัญชี

ผมต้องการสร้างฟร์อมให้สามารถ trick box ที่หน้า reason code โดยสามารถ trick มากกว่า 1 รายการ และมี field รองรับในคิวรี่ว่ามีค่าเป็นอะไร เช่น 01;03

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R15676
ตกกระทู้นี้ไป คำถามน่าสนใจ เพราะหลายท่านมักจะดึงค่ากลับมาไม่ถูกหากใช้เป็น Multi Select ไม่ว่าจะใน Listbox หรือ Combobox ใช้เหมือนกันคือต้องใช้การลูป และรับค่าแบบเดียวกับ Array
วันนี้ว่างเกิน ขออนุญาติตอบอีกกระทู้แล้วกันนะครับ

- สร้าง List Box ใหม่บนฟอร์ม ตัวอย่าง List Box ใช้ชื่อ List1
- กำหนดค่าใน List Box Property > Other > Multi Select = Extended หรือ Simple
- กำหนด Row Source ใน List Box อย่างที่คุณทำ
- สร้างปุ่มใหม่ เพื่อไว้แสดงค่า Item ที่ได้จากการเลือก Multi Select ใน List Box
- เขียนโค๊ดลงในปุ่มที่สร้างใหม่ใน Event > On Click

- หากต้องการแสดงค่าเป็น MsgBox สามารถเขียนโค๊ดได้ดังนี้:
'---------------Start Code---------------
    Dim i As Integer
    For i = 0 To List1.ListCount - 1
        If List1.Selected(i) = True Then
            MsgBox List1.ItemData(i) ' หากต้องการค่าจาก Column อื่นให้ใช้เป็น List1.Column(1,i) แทน
        End If
    Next i
'----------------End Code----------------

- หากต้องการใส่ค่าลงใน Text Box ตัวอย่างใช้ชื่อ Text1 สามารถเขียนโค๊ดได้ดังนี้:
'---------------Start Code---------------
    Dim i As Integer
    Dim strSelected As String
    strSelected = ""
    For i = 0 To List1.ListCount - 1
        If List1.Selected(i) = True Then
            If strSelected = "" Then
               strSelected = List1.ItemData(i) ' หากต้องการค่าจาก Column อื่นให้ใช้เป็น List1.Column(1,i) แทน
            Else
               strSelected = strSelected & ";" & List1.ItemData(i)
            End If
        End If
    Next i
    Me.Text1 = strSelected
'----------------End Code----------------

* การใช้คำสั่ง List1.ItemData(i) คือ ส่งค่าข้อมูลใน List1 ที่บรรทัด (Row) เท่ากับ i ซึ่งค่าที่ได้จะเป็นค่า Column ตามที่กำหนดใน Property > Data > Bound Column: 1 ตามมาตรฐาน แต่หากต้องการให้ส่งค่าใน Column ถัดมา ก็ให้เปลี่ยนค่าใน Property > Data > Bound Column: 2 หรือ 3 ตามต้องการ แต่หากอยากคงค่า Property ไว้ ต้องการเปลี่ยนเฉพาะในโค๊ด VBA ก็เปลี่ยนจาก
List1.ItemData(i) เป็น List1.Column(1, i)
* Multi Select = Extended หรือ Simple
Extended:
หมายถึง เลือกแบบ Multi Select ต้องกดปุ่ม เพื่อเลือกตามที่คลิ๊ก หรือปุ่ม เพื่อเลือกหัวกับท้ายทั้งหมดที่คลิ๊ก (เหมือนเลือกไฟล์ใน Windows)
Simple:
หมายถึง เลือกแบบ Multi Select โดยคลิ๊กเมาส์ได้ทันที ไม่ต้องกดใดๆ

ประมาณนี้ครับ
2 @R15677
แก้ไข พอดีไปใส่วงเล็บใหญ่ ตัวหนังสือคำว่า Ctrl และ Shift
Extended:
หมายถึง เลือกแบบ Multi Select ต้องกดปุ่ม Ctrl เพื่อเลือกตามที่คลิ๊ก Shift หรือปุ่ม เพื่อเลือกหัวกับท้ายทั้งหมดที่คลิ๊ก (เหมือนเลือกไฟล์ใน Windows)
3 @R21799
แอบมาอ่าน กำลังศึกษาเรื่องนี้อยู่ครับ

ทำได้แล้วครับ ถ้ามี lstbox เดียว

แต่ถ้ามี listbox หลายตัวอ่ะครับ ต้องใช้โค๊ดประมาณไหนครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3024s