Page 1 of 2
การใช้ Data Validation กับ combo box(Active X)
Posted: Tue Nov 15, 2016 4:16 pm
by sakajohn
ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Tue Nov 15, 2016 7:29 pm
by Serverchita
ทำตามวิธีข้อ 1 เลยครับ แต่ต้องตั้งค่าตามตัวอย่างรูปภาพครับ
(หรือจะไม่ได้ติ๊กที่ Show ก็ได้นะครับ จะได้ไม่ต้องกดบ่อย)
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Wed Nov 16, 2016 10:58 am
by sakajohn
ขอบคุณคุณServerchita มากครับ แต่มันก็ยังไม่ตอบโจทย์ที่ผมต้องการครับ คือลองทำดูแล้วตอนนี้ก็คือผู้ใช้จะพิมพ์อะไรลงไปก็ได้ซึ่งจะไม่เป็นไปตามที่เรากำหนด ตอนที่ผมยกตัวอย่างคือมันมีแค่ 9 รายการ ถ้ามันมีประมาณ 20 - 30 รายการ ผมต้องการให้พิมพ์บางคำแล้วมันขึ้นมาให้เลือกได้ เหมือนกับการทำ combo box(Active X) ถ้าจะทำแบบวิธีที่2 จะทำได้ไหมครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Wed Nov 16, 2016 3:35 pm
by Serverchita
ต้องรอท่านอื่นมาตอบให้ครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Wed Nov 16, 2016 8:58 pm
by snasui
sakajohn wrote:ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
ลองศึกษาจาก Link นี้ครับ
https://www.extendoffice.com/documents/ ... te.html#a1
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Thu Nov 17, 2016 11:51 am
by sakajohn
snasui wrote:sakajohn wrote:ขอสอบถามผู้รู้ครับ
1. ผมใช้ Data Validation ในการทำ list รายชื่อเครื่องที่ใช้พิมพ์ กับ วัตถุดิบ แต่ติดปัญหา คือ เราจะต้องคลิ๊กที่ปุ่ม drop down เพื่อให้แสดงข้อมูลขึ้นมาถึงจะเลือกรายการได้ ถ้าผมต้องการให้ สามารถคีย์ชื่อรายการบางคำแล้วให้รายการแสดงขึ้นมาจะทำได้ไหมครับ
2. ผมลองใช้ combo Box(Active X) มันสามารถพิมพ์แล้วข้อความขึ้นมาได้ แต่ติดตรงที่เราจะต้องมาคลิ๊กที่กล่อง มันถึงจะทำงานได้ ถ้าจะให้มันผสานอยู่ใน cell เลยจะได้ไหมครับ คือเวลาที่คีย์ข้อมูลเราจะกด enter ลงมาเรื่อยๆ พอถึง combo Box ก็สามารถที่จะคีย์ต่อได้เลย โดยไม่ต้องใช้ mouse คลิ๊ก ได้ไหมครับ
3. หรือมีวิธีอื่นๆแนะนำได้ครับ
ลองศึกษาจาก 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 ข้อมูลก็ไม่แสดงครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Thu Nov 17, 2016 7:49 pm
by snasui
ตัวอย่างการปรับ 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 ตามด้านบนแล้วทดสอบดูใหม่ครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Thu Nov 17, 2016 9:17 pm
by sakajohn
อาจารย์ครับ ถ้าผมต้องการให้กด enter แล้วโชว์ combo box จะทำได้ไหมครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Thu Nov 17, 2016 9:59 pm
by snasui
ทำได้ครับ ปรับ Code ให้เหลือเฉพาะใน
Worksheet_SelectionChange
กับ
TempCombo_KeyDown
ส่วน Code อื่นไม่ต้องใช้ โดยต้องปรับ Code ภายใน Procedure นี้เพื่อให้ตรงกับที่ต้องการใช้งานครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Fri Nov 18, 2016 9:08 am
by sakajohn
snasui wrote: ทำได้ครับ ปรับ Code ให้เหลือเฉพาะใน
Worksheet_SelectionChange
กับ
TempCombo_KeyDown
ส่วน Code อื่นไม่ต้องใช้ โดยต้องปรับ Code ภายใน Procedure นี้เพื่อให้ตรงกับที่ต้องการใช้งานครับ
ผมลองปรับ code แล้วครับ ตอนนี้คือ enter แล้วจะขึ้น combo box แต่มันจะไม่ค้างไว้ให้เลือกครับ ไม่ทราบว่าผมต้องปรับ code ตรงไหนเพิ่มหรือเปล่าครับ รบกวนช่วยชี้แนะด้วยครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Fri Nov 18, 2016 6:10 pm
by snasui
ตัวอย่างการปรับ 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
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sat Nov 19, 2016 6:48 pm
by sakajohn
ได้แล้วครับอาจารย์ แต่ถ้าเราจะ lock ให้comboboxขึ้นเฉพาะ cell B2 เท่านั้น เราต้องไปกำหนดที่ตรงไหนครับ แล้วถ้าเราใช้วิธีนี้ ก็จะ protect sheet ไม่ได้ใช่ไหมครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sat Nov 19, 2016 11:15 pm
by snasui
กำหนดให้ขึ้นที่เซลล์ใดก็ต้องเขียนโปรแกรมเพิ่ม ลองเขียนมาเองก่อนครับ
การ Protect สามารถทำได้ตามปกติ คลิกขวาที่ B2 > Format Cells > ที่แถบ Protection ปลดเครื่องหมายที่ Locked > ป้องกันแผ่นงาน
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sat Nov 19, 2016 11:27 pm
by sakajohn
ต้องเขียนคำสั่งขึ้นมาใหม่เลยใช่ไหมครับ ไม่ได้ไปแก้ไขใน code เดิมใช่ไหมครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sat Nov 19, 2016 11:31 pm
by snasui
เขียนเข้าไปใน Code เดิมครับ ตรวจสอบว่าเซลล์ปัจจุบันเป็นเซลล์เป้าหมายหรือไม่ หากใช่ค่อยขึ้น Object ให้เลือกใช้ เช่นนี้ครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sun Nov 20, 2016 12:36 am
by sakajohn
snasui wrote: เขียนเข้าไปใน 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 จะไม่แสดง ทำไมถึงเป็นอย่างนั้นครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sun Nov 20, 2016 6:58 am
by snasui
ตัวอย่าง 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----
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sun Nov 20, 2016 11:05 pm
by sakajohn
อาจารย์ครับ ถ้าอยากให้ขึ้น 2 cell เช่น B2 และ B4 ทำได้ไหมครับ ขอถามตรงสูตร If Target.Address <> [b2].Address Then กับ If (Target.Address = range("b2").Address) Then ต่างกันไหมครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Sun Nov 20, 2016 11:22 pm
by snasui
กรณี B2 หรือ B4 สามารถใช้ Or เข้ามาช่วยได้ครับ การอ้างอิงตามลักษณะที่ถามมานั้นเหมือนกันครับ
Re: การใช้ Data Validation กับ combo box(Active X)
Posted: Mon Nov 21, 2016 3:38 pm
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" ครับ