:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

ต้องการให้ drop down list เลือกค่าได้หลายค่า

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

ต้องการให้ drop down list เลือกค่าได้หลายค่า

#1

Post by kaikungzaa »

ต้องการให้ drop down list ของทุกเซลล์ ใน column J เลือกค่าที่กำหนด (ทั่วราช ภาค จังหวัด) ได้หลายค่า หรือ มี checkbox ให้เลือก แล้วส่งค่ากลับไปที่เซลล์นั้นๆ ใน column J ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#2

Post by parakorn »

ยกตัวอย่างผลลัพท์ที่ต้องการด้วยครับ Database ที่อ้างอิงใน list คืออะไรครับ
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#3

Post by kaikungzaa »

parakorn wrote: Thu May 03, 2018 9:53 am ยกตัวอย่างผลลัพท์ที่ต้องการด้วยครับ Database ที่อ้างอิงใน list คืออะไรครับ
ผลลัพท์ที่ต้องการครับ
Image
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#4

Post by parakorn »

มีหลายวิธีครับ แต่การใช้ Check box หรือ เขียน โค้ด VBA เพื่อ Input ข้อมูล ผู้ถามจะต้องทดลองเขียนมาเองก่อนตามกฏของบอร์ด เพราะการเขียนโปรแกรมเป็นเรื่องที่ผู้ถามจะต้องมีพื้นฐานมาก่อนครับ ส่วนวิธีง่ายๆคือเพิ่มตัวเลือกตรง Database ให้ครอบคลุมในสิ่งที่ต้องการทั้งหมดครับ
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#5

Post by kaikungzaa »

ลองทำดูแล้ว ต้องการแบบนี้ครับ

Image
https://www.img.in.th/images/055274186e ... efe7c5.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#6

Post by snasui »

:D ไฟล์ที่แนบมานั้นไม่มี Macro มาด้วย ไฟล์ที่จะมี Macro ได้ต้องมีนามสกุลเป็น .xlsm เป็นอย่างน้อยครับ
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#7

Post by kaikungzaa »

snasui wrote: Mon May 07, 2018 8:29 pm :D ไฟล์ที่แนบมานั้นไม่มี Macro มาด้วย ไฟล์ที่จะมี Macro ได้ต้องมีนามสกุลเป็น .xlsm เป็นอย่างน้อยครับ
ขอบคุณครับ ผมแนบไฟล์ใหม่แล้ว

ผลลัพท์ที่ต้องการแบบนี้ครับ
Image
https://www.img.in.th/images/055274186e ... efe7c5.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#8

Post by snasui »

:D ภาพเล็กมากอ่านแล้วไม่เข้าใจ กรุณาแนบภาพมาที่ฟอรัมนี้แทนการแนบไฟล์ที่อื่นตามกฎการใช้บอร์ดข้อ 4 ด้านบน :roll: ไม่เช่นนั้นก็อธิบายประกอบมาในไฟล์แนบ จะได้สะดวกในการทำความเข้าใจครับ

ในเบื้องต้นคาดว่าต้องการเลือกหลายค่าแล้วให้แสดงข้อมูลในเซลล์เดียว หากผมเข้าใจถูกต้องการทำงานนี้จะมีขั้นตอนดังนี้ครับ
  1. สร้าง Form Control อาจจะเป็น ListBox มีปุ่ม Close เพื่อคลิกปิด ทำการซ่อน Control นี้ไว้
  2. เมื่อคลิกเซลล์ใด ๆ ในพื้นที่ที่กำหนดให้แสดง Form Control ในข้อ 1 ที่เซลล์ด้านบนของเซลล์ที่เลือกหรือตำแหน่งใด ๆ ทีสะดวกกับการเลือก
  3. เมื่อผู้ใช้เลือกให้แสดงค่าลงในเซลล์ หากเลือกหลายค่าให้แสดงเครื่องหมายคอมม่าคั่นแต่ละค่า
  4. เมื่อเลือกค่าเรียบร้อยแล้วให้คลิกปุ่ม Close ทำการซ่อน Form Control ไว้เช่นเดิม
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#9

Post by snasui »

:D เนื่องจากการปรับความปลอดภัยให้กับฟอรัมทำให้โพสต์ #9 ที่โพสต์แจ้งมาก่อนหน้านี้โดนลบไป ผมจึงตอบให้ก่อนตามด้านล่าง

ตัวอย่าง Code ที่ Sheet1 ครับ

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim lb As Object, i As Integer, lsrng As Range
    Set lb = ActiveSheet.ListBox1
    Set c = Target
    Set lsrng = Range("k2:k4")
    If Not Intersect(Target, Range("j13:j" & Rows.Count)) Is Nothing Then
        With lb
            For i = .ListCount - 1 To 0 Step -1
                .RemoveItem (i)
            Next i
            For i = 0 To lsrng.Count - 1
                .AddItem lsrng(i + 1).Value
            Next i
            .Left = Target.Offset(0, 1).Left
            .Top = Target.Offset(0, 1).Top
            .Visible = True
        End With
    Else
        lb.Visible = False
    End If
End Sub
ตัวอย่าง Code ที่ Module1 ครับ

Code: Select all

Public c As Range

Sub Bevel1_Click()
    Dim i As Integer, t As String
    Set lb = Sheets(1).ListBox1
    With lb
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                t = t & ";" & .List(i)
            End If
        Next i
    End With
    c.Value = Mid(t, 2)
End Sub
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#10

Post by kaikungzaa »

ขึ้น error ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#11

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Module1

Code: Select all

'Other Code...
    If Not Intersect(c, Range("j13:j" & Rows.Count)) Is Nothing Then
        c.Value = Mid(t, 2)
    End If
End Sub
Sheet1

Code: Select all

'Other code...
With lb
    .ListFillRange = ""
    For i = .ListCount - 1 To 0 Step -1
        .RemoveItem (i)
    Next i
    For i = 0 To lsrng.Count - 1
        .AddItem lsrng(i + 1).Value
    Next i
    .Left = Target.Offset(0, 1).Left
    .Top = Target.Offset(0, 1).Top
    .Visible = True
End With
'Other code...
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#12

Post by kaikungzaa »

ต้องการเพิ่มอีกปุ่มครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#13

Post by snasui »

:D ลองปรับ Code มาเองก่อน ติดแล้วค่อยถามกันต่อครับ
kaikungzaa
Member
Member
Posts: 20
Joined: Thu Jun 09, 2016 3:09 pm

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#14

Post by kaikungzaa »

ลองปรับแล้วก้ยังติดครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการให้ drop down list เลือกค่าได้หลายค่า

#15

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

ที่ Sheet1

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim lb As Object, i As Integer, lsrng As Range
    Set lb = ActiveSheet.ListBox1
    Set c = Target
    If Target.Column = Columns("j").Column Then
        Set lsrng = Range("j2:j4")
    ElseIf Target.Column = Columns("k").Column Then
        Set lsrng = Range("k2:k4")
    End If
    If Not Intersect(Target, Range("j9:k" & Rows.Count)) Is Nothing Then
        With lb
            .ListFillRange = ""
            For i = .ListCount - 1 To 0 Step -1
                .RemoveItem (i)
            Next i
            For i = 0 To lsrng.Count - 1
                .AddItem lsrng(i + 1).Value
            Next i
                .Left = Target.Offset(0, 1).Left
                .Top = Target.Offset(0, 1).Top
                .Visible = True
        End With
    Else
        lb.Visible = False
    End If
End Sub
ที่ Module1

Code: Select all

Public c As Range

Sub Bevel1_Click()
    Dim i As Integer, t As String
    Set lb = Sheets(1).ListBox1
    With lb
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                t = t & "; " & .List(i)
            End If
        Next i
    End With
        If Not Intersect(c, Range("j9:k" & Rows.Count)) Is Nothing Then
            c.Value = Mid(t, 2)
        End If
End Sub
ทำการ Assign Macro Bevel1_Click ให้กับปุ่มเลือกสีแดง สังเกตว่าทั้งสองปุ่มเราจะให้ Run Code เดียวกัน สามารถลบให้เหลือเพียงปุ่มเดียวก็ได้เช่นกัน
Post Reply