Page 1 of 1

VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Wed Dec 18, 2019 10:29 am
by kitsadaporn
ติดปัญหาตรงการ vlookup ข้อมูลจาก sheet2 เพื่อมาแสดงในหน้าต่างpopup userform1 ใน Sheet1 ค่ะ ตามไฟล์ที่แนบ ตรงปุ่ม ADD DATA อยากให้เป็น การใส่ข้อมูลที่ช่อง บาร์โค้ด เพื่อให้แสดงรายละเอียดของสินค้า คือ รหัสสินค้า ชื่อสินค้า แพ็ค ส่วนช่อง รับสินค้า ตัดจ่าย เป็นการคีย์ข้อมูลลงเอง แล้วบันทึกให้เข้าตารางใน Sheet1 เราสามารถทำได้ไหมคะ ลองเขียนแล้วมันรันไม่ได้ค่ะ ได้แค่คีย์บันทึกทุกช่องเหมือนเดิม ขอบคุณล่วงหน้าค่ะ

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Wed Dec 18, 2019 4:07 pm
by logic
ลองแบบนี้ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim q, p As Long
    q = Application.WorksheetFunction.CountA(Sheet2.Range("B:B"))
    If Application.CountIf(Sheet2.Range("a:a"), Me.TextBox1.Text) = 0 Then
        MsgBox "Not found.", vbInformation
        Exit Sub
    Else
        For p = 2 To 4
            Me.Controls("TextBox" & p).Text = Application.WorksheetFunction.VLookup( _
                CDbl(Me.TextBox1.Text), Sheet2.Range("A:D"), p, 0)
        Next p
    End If
    Do
        r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = TextBox1.Text
    Cells(r, 2) = TextBox2.Text
    Cells(r, 3) = TextBox3.Text
    Cells(r, 4) = TextBox4.Text
    Cells(r, 5) = TextBox5.Text
    Cells(r, 6) = TextBox6.Text
    
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
End Sub

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Wed Dec 18, 2019 4:54 pm
by kitsadaporn
logic wrote: Wed Dec 18, 2019 4:07 pm ลองแบบนี้ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim q, p As Long
    q = Application.WorksheetFunction.CountA(Sheet2.Range("B:B"))
    If Application.CountIf(Sheet2.Range("a:a"), Me.TextBox1.Text) = 0 Then
        MsgBox "Not found.", vbInformation
        Exit Sub
    Else
        For p = 2 To 4
            Me.Controls("TextBox" & p).Text = Application.WorksheetFunction.VLookup( _
                CDbl(Me.TextBox1.Text), Sheet2.Range("A:D"), p, 0)
        Next p
    End If
    Do
        r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = TextBox1.Text
    Cells(r, 2) = TextBox2.Text
    Cells(r, 3) = TextBox3.Text
    Cells(r, 4) = TextBox4.Text
    Cells(r, 5) = TextBox5.Text
    Cells(r, 6) = TextBox6.Text
    
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
End Sub
TestW502.xlsm
ลองทำตามที่บอกแล้วค่ะ แต่ก็ยังเหมือนเดิม TT
(238.55 KiB) Downloaded 12 times

ขอบคุณสำหรับคำตอบนะคะ แต่ว่าลองทำตามแล้วมันเหมือนเดิมเลยค่ะ
1.อยากให้เวลาเราใส่ข้อมูลในช่องบาร์โค้ด แล้วมันจะโชว์ รหัสสินค้า ชื่อสินค้า แพ็ค ซึ่งข้อมูลพวกนี้อยู่ใน sheet2 ค่ะ
2.ส่วนช่องรับสินค้า ตัดจ่ายสินค้า จะเป็นช่องที่เราใส่ข้อมูลตัวเลขลงไปเองค่ะ
3.เมื่อกด ADD DATA แล้วข้อมูลทั้งหมดจะรันเข้าตารางค่ะ

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Wed Dec 18, 2019 7:17 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Do
        r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = TextBox1.Text
    Cells(r, 2) = TextBox2.Text
    Cells(r, 3) = TextBox3.Text
    Cells(r, 4) = TextBox4.Text
    Cells(r, 5) = TextBox5.Text
    Cells(r, 6) = TextBox6.Text
    
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
End Sub

Private Sub TextBox1_AfterUpdate()
    Dim q, p As Long
    q = Application.WorksheetFunction.CountA(Sheet2.Range("B:B"))
    If Me.TextBox1.Text = "" Or Application.CountIf(Sheet2.Range("a:a"), Me.TextBox1.Text) = 0 Then
        MsgBox "Not found.", vbInformation
        Exit Sub
    Else
        For p = 2 To 4
            Me.Controls("TextBox" & p).Text = Application.WorksheetFunction.VLookup( _
                CDbl(Me.TextBox1.Text), Sheet2.Range("A:D"), p, 0)
        Next p
    End If
End Sub
คีย์ค่าลงใน TextBox1 แล้ว Enter จะเป็นการเติมค่า TextBox อื่น ๆ ให้

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Thu Dec 19, 2019 9:40 am
by kitsadaporn
snasui wrote: Wed Dec 18, 2019 7:17 pm :D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    Do
        r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = TextBox1.Text
    Cells(r, 2) = TextBox2.Text
    Cells(r, 3) = TextBox3.Text
    Cells(r, 4) = TextBox4.Text
    Cells(r, 5) = TextBox5.Text
    Cells(r, 6) = TextBox6.Text
    
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
End Sub

Private Sub TextBox1_AfterUpdate()
    Dim q, p As Long
    q = Application.WorksheetFunction.CountA(Sheet2.Range("B:B"))
    If Me.TextBox1.Text = "" Or Application.CountIf(Sheet2.Range("a:a"), Me.TextBox1.Text) = 0 Then
        MsgBox "Not found.", vbInformation
        Exit Sub
    Else
        For p = 2 To 4
            Me.Controls("TextBox" & p).Text = Application.WorksheetFunction.VLookup( _
                CDbl(Me.TextBox1.Text), Sheet2.Range("A:D"), p, 0)
        Next p
    End If
End Sub
คีย์ค่าลงใน TextBox1 แล้ว Enter จะเป็นการเติมค่า TextBox อื่น ๆ ให้
ขอบคุณมากค่ะอาจารย์
ตอนนี้แก้โค้ดแล้วได้ตามที่ต้องการแล้ว แต่อยากถามเพิ่มเติมว่า ถ้าจะให้ข้อมูลที่เป็นบาร์โค้ดตัวเดียวกัน เมื่อกดแอดลงไป แล้วจำนวนที่เรากรอกลงไป จะรวมกับของเดิมในexcel เราต้องแก้ที่โค้ดVBAหรือผูกสูตรในExcelคะ

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Thu Dec 19, 2019 7:01 pm
by snasui
:D หลักการคือให้ตรวจสอบว่า Bar Code นั้น ๆ อยู่ในบรรทัดที่เท่าใด จากนั้นให้นำค่าไปบวกเพิ่มที่บรรทัดและคอลัมน์ที่สัมพันธ์กันครับ

สำหรับ Code จะต้องปรับกันมาเองก่อน ติดแล้วค่อยถามกันต่อตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Fri Dec 20, 2019 7:42 pm
by kitsadaporn
snasui wrote: Thu Dec 19, 2019 7:01 pm :D หลักการคือให้ตรวจสอบว่า Bar Code นั้น ๆ อยู่ในบรรทัดที่เท่าใด จากนั้นให้นำค่าไปบวกเพิ่มที่บรรทัดและคอลัมน์ที่สัมพันธ์กันครับ

สำหรับ Code จะต้องปรับกันมาเองก่อน ติดแล้วค่อยถามกันต่อตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:
ทดลองเขียนแล้วค่ะ พอคีย์ข้อมูลลงUserFormแล้ว ข้อมูลไม่แสดงในชีทเลยค่ะ

Re: VBA Vlookup และบันทึกข้อมูล ใน userform เดียวกัน

Posted: Fri Dec 20, 2019 8:59 pm
by snasui
:D Code ที่แนบมาด้วยยังใช้การไม่ได้ กรุณาแก้ไขให้ใช้ได้ก่อน จากนั้นนำส่วนที่ติดปัญหามาถามกันครับ