PDA

View Full Version : ต้องการป้อนตัวอักษรใน Drop Down list แล้วข้อมูลที่มีตัวอักษรเหมือนปรากฏใน List



satitpa
1 Jul 2007, 09:41
อยากทราบว่าเราสามราถทำการป้อนตัวอักษรลงไปใน Drop Down list ที่เราทำขึ้นมา แล้วปรากฏข้อมูลที่มีอักษรตัวหน้าเหมือนกับอักษรที่ป้อนลงใน Drop Down List ปรากฏขึ้นใน List
ไม่ทราบว่าเราสามรถทำได้หรือไม่ ถ้าทำได้ช่วยรบกวนบอกวิธีการทำให้ด้วยนะครับ
ขอบคุณครับ:D

วานิชย์
3 Jul 2007, 13:34
ลองดูที่นี่ครับ Colo's Excel Junk Room - vba tips.
http://puremis.net/excel/code/041.shtml

:)

satitpa
3 Jul 2007, 21:28
ขอบคุณครับ
แต่ผมไม่เข้าใจวิธีการทำครับ ช่วยรบกวนอธิบายวิธีการทำหน่อยน่ะครับ ต้องการเอาไปใช้งานนะครับ :)

hs1
3 Jul 2007, 23:30
1.เลือก Combo Box(From Control)
2.คลิกขวา Combo Box(From Control)
3.เลือก Format Control

4.เลือก Control
5.Input range: =$B$5:$B$20
6.Cell Link: = $H$4
7.H2 = INDEX(B5:B20,H4)

satitpa
4 Jul 2007, 06:57
ขอบคุณครับ
แต่ผมต้องการ การวิธีการสร้าง Drop Down List แบบที่คุณวานิชย์ช่วยตอบก่อนหน้านี้ครับ คงต้องรบกวนคุณวานิชย์ช่วยอธิบายให้อีกสักครั้งนะครับ ขอบคุณมากเลยครับ:)

วานิชย์
4 Jul 2007, 08:33
ก่อนอื่นต้องถามก่อนว่าคุณเคยใช้ VBA มาก่อนหรือไม่ เนื่องจากสิ่งที่ผมแนะนำต้องใช้การเขียน Code นิดหน่อย
ถ้าเคยทำ/เคยรู้มาบ้างก็จะง่ายขึ้น แต่ถ้าไม่เคยก็ต้องอธิบายกันยาวสักนิดครับ
:)

satitpa
4 Jul 2007, 11:00
ในเรื่องนี้ยังไม่เคยศึกษาเลยครับ คงต้องรบกวนคุณวานิชย์ช่วยอธิบายน่ะครับ
ขอบคุณล่วงหน้าเลยครับ

วานิชย์
4 Jul 2007, 13:51
ขั้นตอนนะครับ
1.สร้าง Range Name ชื่อ MyList แทน List รายการที่จะให้เลือก โดยไปที่เมนู Insert->Name->Define

2.กด Alt + F11 เพื่อเรียก Microsoft Visual Basic Editor (VBE)

3.ที่เมนูของหน้า VBE ไปที่เมนู Insert->Module (จะมี Module 1 เพิ่มขึ้นมา)

4.จากนั้นคัดลอก Code ด้านล่างไปวางใน Module ที่สร้างขึ้นใหม่
จบขั้นตอนการ Coding



Option Explicit
Dim i As Long
Sub KeyEventOn()
Clear
For i = 65 To 90
Application.OnKey "{" & i & "}", "'MyValidation """ & i & """'"
Next
End Sub

Sub KeyEventOff()
Clear
For i = 64 To 90
Application.OnKey "{" & i & "}"
Next
End Sub

Sub MyValidation(ByVal KeyCode As Long)
Dim strText As String, strList As String
If Not TypeOf Selection Is Range Then Exit Sub
strText = Selection.Value & Chr(KeyCode)
strList = MakeArr(strText)
Selection.Value = strText
If strList = "False" Then
Selection.Validation.Delete
Else
With Selection.Validation
.Delete
.Add 3, 1, 1, Formula1:=strList
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
End With
End If
End Sub
Function MakeArr(ByVal strChr As String) As String
Dim a As Variant
a = [MyList].Value
For i = LBound(a) To UBound(a)
If InStr(1, a(i, 1), strChr, vbTextCompare) = 1 Then
MakeArr = MakeArr & a(i, 1) & Chr(&H2C)
End If
Next
If MakeArr <> "" Then
MakeArr = Left(MakeArr, Len(MakeArr) - 1)
Else
MakeArr = "False"
End If
End Function
Sub Clear()
Range("B5").ClearContents
Range("B5").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=MyList"
End With
End Sub




Code นี้นำมาจาก เวบที่ผมแนะนำด้านบนครับ

จากนั้นให้สร้าง Validation แบบ List เพื่ออ้างถึงรายการใน MyList
ขั้นตอน
1.เลือก Cell ที่จะทำ List เพื่อเลือก จากนั้น ที่เมนู Data-> Validation ที่ Allow เลือกเป็นแบบ List
2.และที่ Source ให้กด F3 เพื่อเลือก Range Name ที่สร้างไว้ เลือก MyList

3.คลิกปุ่ม OK

ขั้นตอนสุดท้ายเมื่อจะเรียกให้ VBA ทำงานให้กด Alt+F8 เลือก KeyEventOn แล้วคลิกปุ่ม RUN
จากนั้นลองใช้งานดูครับ

หลังจากเลิกใช้งานแล้วให้ RUN KeyEventOff ด้วยครับ

จากที่ผมลองใช้งานดูจะพบว่า การทำแบบนี้ยังไม่น่าพอใจและยังไม่สะดวกพอที่จะนำไปใช้งานได้จริง ดังนั้นขอให้คุณลองใช้ตามตัวอย่างที่แนบดูก่อนนะครับ :)

satitpa
5 Jul 2007, 09:33
ขอบคุณ คุณวานิชย์เป็นอย่างมากเลยครับ จะพยายามศึกษา VBA ให้มากกว่านี้ครับ:)
สาธิต

satitpa
5 Jul 2007, 14:48
คุณวานิชย์ครับ
ผมลองทำตามขั้นตอนแล้ว AutoFill ไม่ทำงานครับ รบกวนช่วยตรวจสอบว่าผมอะไรผิดหรือเปล่าครับ ผมแนบไฟล์ที่ผมลองทำเองมาด้วยครับ

วานิชย์
5 Jul 2007, 15:07
ผมลองใช้ดูก็ปรกติดีนะครับ
แต่อาจจะขัดกับความรู้สึกหน่อยหลังจากเรา Run KeyEventOn ครับ

ถ้าต้องการทดลองก็ลองทำตามที่ผมเคยเขียนแนะนำในไฟล์ตัวอย่างครับ ดังนี้

แนะนำการใช้งาน
1.ต้อง Clear ข้อมูลที่ B5 ก่อนทุกครั้งก่อนที่จะป้อนข้อมูลใหม่
2.ถ้าจะเริ่มใช้งาน AUtoFIll ให้กดปุ่ม Start
3.ถ้าเลิกใช้งานให้กดปุ่ม Stop

ขั้นตอนการทดลองใช้
1.กดปุ่ม Start
2.พิมพ์ A
3.เลือกดูรายการ
4.ลบข้อมูลที่ B5
5.ทดลองพิมพ์ b
6.เลือกดูรายการ
7.กดปุ่ม Stop

:)

satitpa
6 Jul 2007, 08:38
คุณวานิชย์ครับ ผมมีเรื่องรบกวนช่วยอธิบายและแก้ไขการ Error ของ Macro ในเวลาที่ผมทำการ Run Macro การ Error นั้นผมได้แนบไฟล์มาให้ดูด้วยครับ

วานิชย์
6 Jul 2007, 09:53
ขอให้คุณ Download แล้วเลือก Save ลงในเครื่องของคุณก่อน จากนั้นค่อยเรียกเปิดจาก Local Drive ที่ได้ Save ไว้ครับ
:)

satitpa
6 Jul 2007, 11:30
ขอบคุณ คุณวานิชย์ครับ:)