Page 1 of 1

ค้นหา / แก้ไข ข้อมูล

Posted: Thu Aug 10, 2017 5:40 pm
by mmnck
สวัสดีคะ หนูเพิ่งศึกษาเรื่องการใช้งาน VBA คะ อยากทราบในส่วนของการกรอกชื่อ / รหัสพนักงาน ในการค้นหาข้อมูล แล้วนำมาแสดงตาม Textbox และ Combobox ต่าง ๆ เพื่อทำการตรวจสอบและแก้ไขได้

#ในส่วนของการเพิ่มข้อมูล ทำเสร็จเรียบร้อยแล้วคะ ยังติดตรงการค้นหา / แก้ไขข้อมูลคะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Fri Aug 11, 2017 10:19 pm
by mmnck
รบกวนช่วยสอนวิธีการค้นหาข้อมูลต่างจาก Form ด้วย ID หรือ ชื่อ แล้วขึ้นข้อมูลต่าง ๆ ให้แก้ไข

อยู่ในชีทแรก ในส่วนของเมนู ค้นหาพนักงานคะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Sat Aug 12, 2017 8:43 pm
by snasui
:D Code ที่เขียนสำหรับการค้นหาคือ Procedure ใด ติดขัดบรรทัดใดครับ หากยังไม่เขียนให้เขียนมาก่อนแล้วถามกันเฉพาะที่ติดปัญหาครับ :?:

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Sun Aug 13, 2017 12:07 am
by mmnck
ค้นหาจากรหัสพนักงาน ทำได้แล้วค่ะ แต่ในช่อง no ต้องการให้ป้อนได้ทั้งชื่อ และ รหัส พนักงานต้องปรับตรงไหนบ้างค่ะ
** ตอนนี้ในช่อง no ใส่ได้แค่รหัสพนักงานที่มีตัวอักษรนำหน้าคะ
** และบางฟิลด์ที่เป็นวันที่ เวลาค้นหา วันที่ไม่มาคะ แต่จะมาในรูปแบบของตัวเลขจำนวนเต็ม
code จะอยู่ใน Userform ชื่อ searchper คะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Mon Aug 14, 2017 10:04 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

On Error Resume Next
With Worksheets(2)
    If Application.CountIf(.Range("a4", .Range("a" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
        Set myRange = .Range("A:P")
    ElseIf Application.CountIf(.Range("b4", .Range("b" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
        Set myRange = .Range("B:P")
    End If
End With
'Other code...


Field ที่เป็นวันที่หากต้องการจะให้มาในรูปแบบของวันที่จะต้องจัด format เข้ามาช่วยครับ เช่น Application.Text(txtBox100.text,"dd/mm/yyyy")) เป็นต้น

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 3:27 pm
by mmnck
ทำการปรับเปลี่ยนในส่วนของการค้น หาในเรื่องของชื่อละรหัสแล้วคะ แต่พบปัญหาเลยเอาเงื่อนไขทั้งหมดมาใส่ไว้ด้วย จากนั้นมีปัญหาในส่วนของการ save คะ code จะอยู่ใน User form = SearchPer คะ

ไม่แน่ใจว่าอาจจะใส่ หรือ ปรับเปลี่ยน ตรงไหนผิดรึป่าวคะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 6:02 pm
by snasui
:D ค่อย ๆ ถามตอบกันไปครับ

ก่อนจะไปปัญหาในการ Save ให้ชี้แจงมาว่าเกิดปัญหาใดกับการใช้ Code ด้านบนครับ

Code ทีผมเขียนไว้ให้เขียนติดกันตามที่ผมโพสต์ไป โดยวางไว้หลังจากบรรทัด On Error Resume Next ส่วน Code ที่เหลือก็เรียงต่อกันด้านล่าง ให้ปรับมาตามนี้ก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 7:24 pm
by mmnck
ในส่วนของการปรับ ติดปัญหาตรงที่
1.ค้นหาจากรหัสได้คะ แต่ต้องขึ้นต้นด้วยตัวอักษร ในส่วนของชื่อ ไม่สามารถกดค้นหาได้
2.ในส่วนของวันที่ ดึงค่ามาตามรูปแบบเดิมได้ แต่พอกดบันทึกส่งค่ากลับไปยังหน้า excel เดือนกับวันที่สลับกันอยู่คะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 9:28 pm
by snasui
:D จาก Code ในไฟล์ที่แนบมา ให้ Mark บรรทัดหลัง With ให้เป็น Comment เพราะเป็นการ Assign ค่าซ้ำครับ

ตัวอย่าง Code จะได้เป็นด้านล่าง

Code: Select all

On Error Resume Next
With Worksheets(2)
    If Application.CountIf(.Range("a4", .Range("a" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
        Set myRange = .Range("A:P")
    ElseIf Application.CountIf(.Range("b4", .Range("b" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
        Set myRange = .Range("B:P")
    End If
End With
'Set myRange = Worksheets(2).Range("A:P")


การส่งค่ากลับไปอยู่ที่ Procedure ใด บรรทัดใดแจ้งมาด้วยเสมอครับ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 10:26 pm
by mmnck
ขอบคุณคะ ตอนนี้สามารถค้นหาจากชื่อได้ แต่ติดปัญหาตรงที่แต่ช่องจะขึ้นไม่ตรงกันคะ

> ค้นหาจากรหัส ข้อมูลขึ้นมาตรง
> ปัญหาตรงการค้นหาจากรายชื่อ ชื่อพนักงานไปอยู่ในช่องของรหัสพนักงาน
code ส่วนค้นหามูลจะอยู่ใน user form "searchPer" ภายใต้ปุ่ม Search

และบันทึกข้อมูลในวันที่ไม่ได้คะ
> ตอนดึงเข้ามาเพื่อแสดงข้อมูล เข้ามาได้ปกติ พอกดบันทึกค่าของวันที่และเดือนจะสลับกันคะ
code ส่วนบันทึกของมูลจะอยู่ใน user form "searchPer" ภายใต้ปุ่ม Save

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 10:48 pm
by snasui
:D ทำให้ผ่านไปทีละฟังก์ชั่นครับ

ตัวอย่างการปรับ Code สำหรับการ Search ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim l As Long
    On Error Resume Next
    With Worksheets(2)
        If Application.CountIf(.Range("a4", .Range("a" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
            'Set myRange = .Range("A:P")
            l = Application.Match(TextBox13.Text, .Range("a:a"), 0)
        ElseIf Application.CountIf(.Range("b4", .Range("b" & .Rows.Count).End(xlUp)), TextBox13.Text) Then
            'Set myRange = .Range("B:P")
            l = Application.Match(TextBox13.Text, .Range("b:b"), 0)
        End If
        'Set myRange = Worksheets(2).Range("A:P")
        TextBox14.Value = .Cells(l, 1).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 1, False)
        TextBox2.Value = .Cells(l, 2).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 2, False)
        ComboBox1.Value = .Cells(l, 3).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 3, False)
        ComboBox3.Text = .Cells(l, 4).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 4, False)
        ComboBox2.Text = .Cells(l, 5).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 5, False)
        ComboBox4.Text = .Cells(l, 6).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 6, False)
        TextBox3.Value = .Cells(l, 7).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 7, False)
        TextBox9.Value = .Cells(l, 8).Value ' Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 8, False)
        TextBox4.Value = .Cells(l, 9).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 9, False)
        TextBox10.Value = .Cells(l, 10).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 10, False)
        TextBox5.Value = .Cells(l, 11).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 11, False)
        TextBox6.Value = .Cells(l, 12).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 12, False)
        TextBox11.Value = .Cells(l, 13).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 13, False)
        TextBox7.Value = .Cells(l, 14).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 14, False)
        TextBox8.Value = .Cells(l, 15).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 15, False)
        TextBox12.Value = .Cells(l, 16).Value 'Application.WorksheetFunction.VLookup(TextBox13.Text, myRange, 16, False)
        TextBox12.Value = .Cells(l, 17).Value 'Application.Text(TextBox12.Text, "dd/mm/yyyy")
        'Other code
    End With
End Sub


หากผ่านแล้ว ในส่วนของการ Save อธิบายมาด้วยว่าโค้ดบรรทัดใดที่มีปัญหาตามที่กล่าวมาครับ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 11:03 pm
by mmnck
ชในส่วนของการค้นหา ยังติดในเรื่องของการดึงวันที่มา

> เมื่อป้อนรหัส / ชื่อ ข้อมูลมาตรงทุกอย่าง แต่ติดปัญหาที่วันที่ โดยที่ วันที่ และ เดือน จะสลับกันอยู่คะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 11:26 pm
by snasui
:D ดูตัวอย่าง Code เดิมที่ผมเคยปรับไปให้ว่าเป็นเช่นไรแล้วลองปรับมาก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 11:38 pm
by mmnck

Code: Select all

TextBox12.Value = Application.Text(TextBox12.Text, "dd/mm/yyyy")


ลองปรับโดยการเอา Textbox12 ที่ใช้ในการเก็บวันที่เพื่อใช้ดึงในการค้นหาและการบันทึกแล้ว แต่วันที่ก็ยังเพี้ยนอยู่เลยคะ

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Wed Aug 16, 2017 11:49 pm
by snasui
:D ลองปรับเป็นด้านล่างครับ

Code: Select all

TextBox12.Value = Application.Text(.Cells(l, 17).Value2,"dd/mm/yyyy")

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Thu Aug 17, 2017 12:14 am
by mmnck
วันที่ก็สลับกันอยู่คะ

จะใส่ วันที่ 10 / 7/ 2537
แต่เวลาบันทึกลง excel จะได้ 7 / 10 / 2537

code ของการบันทึกจะอยู่ใน searchPer ในปุ่ม Save

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Thu Aug 17, 2017 6:50 am
by snasui
:D การดึงค่ามาแสดงกับการบันทึกกลับไปต้องจัดการแยกต่างหากจากกาัน ตามโพสต์ด้านบนเป็นการจัดการกับปุ่ม Search เท่านั้น เมื่อได้คำตอบในขั้นตอนนี้แล้วควรแจ้งผลมาด้วยครับ

กรณีบันทึกกลับไปยัง Worksheet ก็ต้องปรับ Code ใหม่ การดึงมาถูกตามรูปแบบที่ต้องการแล้วก็ไม่ใช่ว่าจะบันทึกกลับไปแล้วจะยังได้รูปแบบตรงกับที่ต้องการครับ

ตัวอย่าง Code ดูที่ Link นี้ครับ http://www.snasui.com/viewtopic.php?t=9562#p59774

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Thu Aug 17, 2017 3:34 pm
by mmnck
ขอบคุณมากคะ ตอนนี้บันทึกลงในรูปแบบของวันที่ได้แล้วคะ
แต่เวลาแก้ไข หากแก้ไขโดยค้นหาจากรหัส สามารถบันทึกได้ปกติคะ

ค้นหาจากชื่อพนักงาน จะมีปัญหาในการบันทึกคะ
Code จะอยู่ใน searchPer ในส่วนของปุ่ม Save คะ



Code: Select all

Private Sub CommandButton3_Click()
 Dim Row As Long
    Row = Application.Match(TextBox13.Text, Sheets(2).Range("a:a"), 0)
    With Sheets(2)
        .Cells(Row, 1).Value = TextBox13.Text
        .Range("a" & Row).Value = TextBox14.Text

       .Cells(Row, 2).Value = TextBox2.Text
       .Cells(Row, 3).Value = ComboBox1.Text
       .Cells(Row, 4).Value = ComboBox3.Text
       .Cells(Row, 5).Value = ComboBox2.Text
       .Cells(Row, 6).Value = ComboBox4.Text
       .Cells(Row, 7).Value = TextBox3.Text
       .Cells(Row, 8).Value = TextBox9.Text
       .Cells(Row, 9).Value = TextBox4.Text
       .Cells(Row, 10).Value = TextBox10.Text
       .Cells(Row, 11).Value = TextBox5.Text
       .Cells(Row, 12).Value = TextBox6.Text
       .Cells(Row, 13).Value = TextBox11.Text
       .Cells(Row, 14).Value = TextBox7.Text
       .Cells(Row, 15).Value = TextBox8.Text
       .Cells(Row, 16).Value = WorksheetFunction.Text(TextBox12.Value, "dd/mm/yyyy")
             
    End With
    MsgBox ("Save Complete")

End Sub

Re: ค้นหา / แก้ไข ข้อมูล

Posted: Thu Aug 17, 2017 5:56 pm
by snasui
mmnck wrote:ขอบคุณมากคะ ตอนนี้บันทึกลงในรูปแบบของวันที่ได้แล้วคะ
แต่เวลาแก้ไข หากแก้ไขโดยค้นหาจากรหัส สามารถบันทึกได้ปกติคะ

ค้นหาจากชื่อพนักงาน จะมีปัญหาในการบันทึกคะ
Code จะอยู่ใน searchPer ในส่วนของปุ่ม Save คะ


:D มีปัญหาลักษณะใดช่วยอธิบายรายละเอียดประกอบ จะได้ตอบต่อไปจากนั้นครับ