Page 1 of 1

สอบถาม VBA ใช้ vlookup คู่กับ name manager ครับ

Posted: Sat Dec 12, 2015 9:20 pm
by Snowwine
สวัสดีครับอาจารย์ที่เคารพ

กระทู้นี้เป็นกระทู้แรกของผมครับ เพิ่งได้เริ่มหัดเขียน VBA ติดปัญหาหลายจุดเลยครับ พอแก้ได้บ้างไม่ได้บ้าง
ผมเลยอยากขอรบกวนอาจารย์สอบถามเรื่อง vlookup กับ name manage ใน VBA หน่อยครับ

ผมมี Code ตามด้านล่างครับ ผมต้องการให้ เมื่อผมเลือก combobox1 แล้ว ให้โปรแกรมค้นหาค่าใน sheets("list") แล้วคืนค่ากลับมาที่ Textbox 1-5 ครับ ตอนนี้หลังจากเลือกแล้วมันไม่แสดงผลครับ

ปล.ผมไม่ได้เรียนด้านการเขียนโปรแกรมมา ตอนนี้หาอ่านเองตามหนังสือและเวบไซต์ได้ 2 วันเต็ม หากผิดพลาดประการใด ขออภัยและขอรบกวนอาจารย์ช่วยชี้แนะด้วยครับ

Code: Select all

Private Sub ComboBox1_change() 'Reference combobox to textbox
Dim i As Integer
Application.EnableEvents = False
i = 3
While Sheets("List").Cells(i, 1).Value <> ""
If Sheets("List").Cells(i, 1).Value = ComboBox1.Value Then
        'Range("Name") --> Name = Name manager are Range("A3:F7")
TextBox1.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("list").Range("Name"), 2, False)
TextBox2.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("list").Range("Name"), 3, False)
TextBox3.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("list").Range("Name"), 4, False)
TextBox4.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("list").Range("Name"), 5, False)
TextBox5.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("list").Range("Name"), 6, False)
End If
i = i + 1
Wend
Application.EnableEvents = True
End Sub
แก้ไข - เพิ่มไฟล์แนบ (ไม่ได้ใช้ sheet InOut แล้วครับ เพราะย้ายมาใช้ user form แทน)

Re: สอบถาม VBA ใช้ vlookup คู่กับ name manager ครับ

Posted: Sat Dec 12, 2015 9:35 pm
by DhitiBank
แนบตัวอย่างไฟล์ excel มาด้วยก็ดีครับ อาจาย์และเพื่อนๆ ที่เข้ามาช่วยตอบจะได้ทดสอบโค้ดได้ง่ายๆ

Re: สอบถาม VBA ใช้ vlookup คู่กับ name manager ครับ

Posted: Sat Dec 12, 2015 9:38 pm
by Snowwine
ส่งให้แล้วครับ เพิ่มไม่ทัน ขออภัยครับ

Re: สอบถาม VBA ใช้ vlookup คู่กับ name manager ครับ

Posted: Sat Dec 12, 2015 9:52 pm
by DhitiBank
:) ลองปรับโค้ดเป็นแบบนี้ดูครับ

Code: Select all

Private Sub ComboBox1_change() 'Reference combobox to textbox 1-5
    Dim rFind As Range, vTarget As Variant
    vTarget = ComboBox1.Value
    With ThisWorkbook.ActiveSheet
        Set rFind = .Columns(1).Find(what:=vTarget, after:=.Range("a2"), LookIn:=xlValues _
                , lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext _
                , MatchCase:=False)
        If rFind Is Nothing Then MsgBox "Not found", vbCritical: Exit Sub
        TextBox1.Text = rFind.Offset(0, 2)
        TextBox2.Text = rFind.Offset(0, 1)
        TextBox3.Text = rFind.Offset(0, 3)
        TextBox4.Text = rFind.Offset(0, 5)
        TextBox5.Text = rFind.Offset(0, 4)
    End With
End Sub

Re: สอบถาม VBA ใช้ vlookup คู่กับ name manager ครับ

Posted: Sat Dec 12, 2015 9:56 pm
by Snowwine
ขอบคุณ คุณ DhitiBank มากครับ ขอไปศึกษา code ที่ให้มานะครับ