: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

การใช้ Data Validation กับ combo box(Active X)

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

การใช้ Data Validation กับ combo box(Active X)

#1

Post by sakajohn »

ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
Serverchita
Bronze
Bronze
Posts: 292
Joined: Wed Nov 18, 2015 1:28 pm
Excel Ver: 2016

Re: การใช้ Data Validation กับ combo box(Active X)

#2

Post by Serverchita »

ทำตามวิธีข้อ 1 เลยครับ แต่ต้องตั้งค่าตามตัวอย่างรูปภาพครับ

(หรือจะไม่ได้ติ๊กที่ Show ก็ได้นะครับ จะได้ไม่ต้องกดบ่อย)
You do not have the required permissions to view the files attached to this post.
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#3

Post by sakajohn »

ขอบคุณคุณServerchita มากครับ แต่มันก็ยังไม่ตอบโจทย์ที่ผมต้องการครับ คือลองทำดูแล้วตอนนี้ก็คือผู้ใช้จะพิมพ์อะไรลงไปก็ได้ซึ่งจะไม่เป็นไปตามที่เรากำหนด ตอนที่ผมยกตัวอย่างคือมันมีแค่ 9 รายการ ถ้ามันมีประมาณ 20 - 30 รายการ ผมต้องการให้พิมพ์บางคำแล้วมันขึ้นมาให้เลือกได้ เหมือนกับการทำ combo box(Active X) ถ้าจะทำแบบวิธีที่2 จะทำได้ไหมครับ
User avatar
Serverchita
Bronze
Bronze
Posts: 292
Joined: Wed Nov 18, 2015 1:28 pm
Excel Ver: 2016

Re: การใช้ Data Validation กับ combo box(Active X)

#4

Post by Serverchita »

ต้องรอท่านอื่นมาตอบให้ครับ
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#5

Post by snasui »

sakajohn wrote:ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
:D ลองศึกษาจาก Link นี้ครับ https://www.extendoffice.com/documents/ ... te.html#a1
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#6

Post by sakajohn »

snasui wrote:
sakajohn wrote:ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
:D ลองศึกษาจาก Link นี้ครับ https://www.extendoffice.com/documents/ ... te.html#a1
ผมลองทำตาม ลิงค์ ที่อาจารย์ให้แล้วครับ มีปัญหาอยากจะถามเพิ่มคือ

1. ตามไฟล์แนบ ถ้าเรา Double click ที่ cell ไหนก็จะมี combo box ขึ้นมา แต่ยังไม่มีรายการใน combobox
2. เรายังต้อง Double click ที่ cell ก่อน combo box ถึงจะโชว์ขึ้นมาใช่ไหมครับ ถ้าเรา enter เฉยๆ มันก็จะไม่โชว์ combo boxใช่ไหมครับ
3. เราจะให้แสดงรายการที่เราต้องการยังไงครับ ตามที่ดูจาก ลิงค์ ไม่ได้บอกวิธี ผมลองกำหนด ที่ property ของ combo box ตรงช่อง Listfillrange ข้อมูลก็ไม่แสดงครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#7

Post by snasui »

:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

    'Other code
    If Target.Validation.Type = 3 Then
        Cancel = True
        xStr = "Sheet1!G9:G12"
        With xCombox
            .Visible = True
            .Left = Target.Left
            .Top = Target.Top
            .Width = Target.Width + 5
            .Height = Target.Height + 5
            .ListFillRange = xStr
            .LinkedCell = Target.Address
        End With
        xCombox.Activate
        Me.TempCombo.DropDown
    End If
    'Other code
sakajohn wrote:2. เรายังต้อง Double click ที่ cell ก่อน combo box ถึงจะโชว์ขึ้นมาใช่ไหมครับ ถ้าเรา enter เฉยๆ มันก็จะไม่โชว์ combo boxใช่ไหมครับ
ถูกต้องครับ
sakajohn wrote:3. เราจะให้แสดงรายการที่เราต้องการยังไงครับ ตามที่ดูจาก ลิงค์ ไม่ได้บอกวิธี ผมลองกำหนด ที่ property ของ combo box ตรงช่อง Listfillrange ข้อมูลก็ไม่แสดงครับ
ปรับ Code ตามด้านบนแล้วทดสอบดูใหม่ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#8

Post by sakajohn »

อาจารย์ครับ ถ้าผมต้องการให้กด enter แล้วโชว์ combo box จะทำได้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#9

Post by snasui »

:D ทำได้ครับ ปรับ Code ให้เหลือเฉพาะใน Worksheet_SelectionChange กับ TempCombo_KeyDown ส่วน Code อื่นไม่ต้องใช้ โดยต้องปรับ Code ภายใน Procedure นี้เพื่อให้ตรงกับที่ต้องการใช้งานครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#10

Post by sakajohn »

snasui wrote::D ทำได้ครับ ปรับ Code ให้เหลือเฉพาะใน Worksheet_SelectionChange กับ TempCombo_KeyDown ส่วน Code อื่นไม่ต้องใช้ โดยต้องปรับ Code ภายใน Procedure นี้เพื่อให้ตรงกับที่ต้องการใช้งานครับ
ผมลองปรับ code แล้วครับ ตอนนี้คือ enter แล้วจะขึ้น combo box แต่มันจะไม่ค้างไว้ให้เลือกครับ ไม่ทราบว่าผมต้องปรับ code ตรงไหนเพิ่มหรือเปล่าครับ รบกวนช่วยชี้แนะด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#11

Post by snasui »

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

Code: Select all

Private Sub Worksheet_Selectionchange(ByVal Target As Range)
    Dim xStr As String
    Dim xCombox As OLEObject
    Dim xWs As Worksheet
    Set xWs = Application.ActiveSheet
    On Error Resume Next
    Application.EnableEvents = False
    Set xCombox = xWs.OLEObjects("TempCombo")
    With xCombox
        .ListFillRange = ""
        .LinkedCell = ""
        .Visible = False
    End With
    If Target.Validation.Type = 3 Then
        Cancel = True
        xStr = "Sheet1!G9:G12"
        With xCombox
            .Visible = True
            .Left = Target.Left
            .Top = Target.Top
            .Width = Target.Width + 5
            .Height = Target.Height + 5
            .ListFillRange = xStr
            .LinkedCell = Target.Address
        End With
        xCombox.Activate
        Me.TempCombo.DropDown
    End If
    Application.EnableEvents = True
End Sub
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#12

Post by sakajohn »

ได้แล้วครับอาจารย์ แต่ถ้าเราจะ lock ให้comboboxขึ้นเฉพาะ cell B2 เท่านั้น เราต้องไปกำหนดที่ตรงไหนครับ แล้วถ้าเราใช้วิธีนี้ ก็จะ protect sheet ไม่ได้ใช่ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#13

Post by snasui »

:D กำหนดให้ขึ้นที่เซลล์ใดก็ต้องเขียนโปรแกรมเพิ่ม ลองเขียนมาเองก่อนครับ

การ Protect สามารถทำได้ตามปกติ คลิกขวาที่ B2 > Format Cells > ที่แถบ Protection ปลดเครื่องหมายที่ Locked > ป้องกันแผ่นงาน
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#14

Post by sakajohn »

ต้องเขียนคำสั่งขึ้นมาใหม่เลยใช่ไหมครับ ไม่ได้ไปแก้ไขใน code เดิมใช่ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#15

Post by snasui »

:D เขียนเข้าไปใน Code เดิมครับ ตรวจสอบว่าเซลล์ปัจจุบันเป็นเซลล์เป้าหมายหรือไม่ หากใช่ค่อยขึ้น Object ให้เลือกใช้ เช่นนี้ครับ
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#16

Post by sakajohn »

snasui wrote::D เขียนเข้าไปใน Code เดิมครับ ตรวจสอบว่าเป็นปัจจุบันเป็นเซลล์เป้าหมายหรือไม่ หากใช่ค่อยขึ้น Object ให้เลือกใช้ เช่นนี้ครับ

Code: Select all

 "other code'
        range("B2").select
        xCombox.Activate
        Me.TempCombo.DropDown
    End If
    Application.EnableEvents = True
End Sub
ผมลองใส่ดูแล้ว กลายเป็นว่าเมื่อ อยู่ที่ B2 combo box จะไม่แสดง ทำไมถึงเป็นอย่างนั้นครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#17

Post by snasui »

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

Code: Select all

'----Other code----
With xCombox
    .ListFillRange = ""
    .LinkedCell = ""
    .Visible = False
End With
If Target.Address <> [b2].Address Then
    Application.EnableEvents = True
    Exit Sub
End If
'----Other code----
sakajohn
Member
Member
Posts: 229
Joined: Tue Aug 06, 2013 10:55 am
Excel Ver: 2010

Re: การใช้ Data Validation กับ combo box(Active X)

#18

Post by sakajohn »

อาจารย์ครับ ถ้าอยากให้ขึ้น 2 cell เช่น B2 และ B4 ทำได้ไหมครับ ขอถามตรงสูตร If Target.Address <> [b2].Address Then กับ If (Target.Address = range("b2").Address) Then ต่างกันไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การใช้ Data Validation กับ combo box(Active X)

#19

Post by snasui »

:D กรณี B2 หรือ B4 สามารถใช้ Or เข้ามาช่วยได้ครับ การอ้างอิงตามลักษณะที่ถามมานั้นเหมือนกันครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: การใช้ Data Validation กับ combo box(Active X)

#20

Post by DhitiBank »

2016-11-21 15_33_40-Microsoft Visual Basic for Applications - combo box.xlsm [break] - [Sheet1 (Code.png
อาจารย์ครับ range.Validation.Type เป็นการเช็คอะไรครับ ทำไมผมลองคีย์ใน immediate window เพื่อดูค่ากลับแสดงค่าผิดพลาดว่า "Application-defined of Object-defined error" ครับ
You do not have the required permissions to view the files attached to this post.
Post Reply