Page 1 of 1

Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Tue Oct 25, 2011 4:59 pm
by bank9597
:D อาจารย์ครับผมได้สร้างฟอร์มไว้กรอกข้อมูล 1 ฟอร์ม เวลาบันทึกข้อมูลไปเก็บที่ชีท Data มันจะเรียงแบบยาวไปทางด้านขวา

ผมจะปรับโค๊ดอย่างไรให้ข้อมูลมาบันทึกลงด้านล่างตามลำดับครับ
Form.xlsm

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Tue Oct 25, 2011 5:36 pm
by snasui
:D ลองปรับ Code ตามด้านล่าง

Code: Select all

Private Sub CommandButton1_Click()
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Data")
    'find first empty row in database
    irow = ws.Cells(Rows.Count, 2) _
        .End(xlUp).Offset(1, 0).Row
    'Check for Id
    If Trim(Me.TextBox1.Value) = "" Then
        Me.TextBox1.SetFocus
        MsgBox "ãÊèª×èÍÊÔ¹¤éÒ"
        Exit Sub
    End If
    'copy the data to the database
    ws.Cells(irow, 1).Value = Me.TextBox1.Value
    ws.Cells(irow, 2).Value = Me.ComboBox1.Value
    ws.Cells(irow, 3).Value = Me.TextBox2.Value
    ws.Cells(irow, 4).Value = Me.ComboBox2.Value
    ws.Cells(irow, 5).Value = Me.TextBox3.Value
    ws.Cells(irow + 1, 1).Value = Me.TextBox1.Value
    ws.Cells(irow + 1, 2).Value = Me.ComboBox1.Value
    ws.Cells(irow + 1, 3).Value = Me.TextBox4.Value
    ws.Cells(irow + 1, 4).Value = Me.ComboBox3.Value
    ws.Cells(irow + 1, 5).Value = Me.TextBox5.Value
    
    'Clear the data
    Me.TextBox1.Value = ""
    Me.TextBox2.Value = ""
    Me.TextBox3.Value = ""
    Me.TextBox4.Value = ""
    Me.TextBox5.Value = ""
    Me.ComboBox1.Value = ""
    Me.ComboBox2.Value = ""
    Me.ComboBox3.Value = ""
    Me.TextBox1.SetFocus
    If CommandButton1 Then
        UserForm1.Hide
    End If
End Sub

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Tue Oct 25, 2011 5:43 pm
by bank9597
:lol: สำเร็จครับอาจารย์ ผมจะนำไปปรับใช้ต่อครับ

อีกนิดครับ ในกรณีที่มีรายการมากกว่านี้ สมมุติว่า 20 รายการ เราจะต้องเขียนโค๊ดในลักษณะนี้จนครบเลยใช่ไหมครับ

หรือว่ามีวิธีการอื่น ที่จะช่วยให้การเขียนโค๊ดสั้นลง

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Tue Oct 25, 2011 5:58 pm
by snasui
:lol:
bank9597 wrote:อีกนิดครับ ในกรณีที่มีรายการมากกว่านี้ สมมุติว่า 20 รายการ เราจะต้องเขียนโค๊ดในลักษณะนี้จนครบเลยใช่ไหมครับ
ควรจะเป็นเช่นนั้นครับ
bank9597 wrote:หรือว่ามีวิธีการอื่น ที่จะช่วยให้การเขียนโค๊ดสั้นลง
วิธีการอื่น ๆ เขียน Form ลงในตาราง Excel เลยครับ :mrgreen:

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Tue Oct 25, 2011 6:06 pm
by bank9597
:shock: อิอิ ขอบคุณครับ

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Wed Oct 26, 2011 1:58 pm
by bank9597
:D ไม่ขอขึ้นโพสต์ใหม่น่ะครับ เพราะเป็นเรื่องคล้ายกันกัน

อาจารย์ครับ ผมได้สร้างฟอร์มขึ้นมาอีก 1 ฟอร์ม ชื่อ Supplier ไว้ดูข้อมูลของ Supplier
โดยได้สร้าง ComboBox ไว้เลือกชื่อ Supplier แล้วก็มี TextBox1,TextBox2 ไว้แสดง ที่อยู่และผู้ติดต่อ
ผมอยากให้เวลาเราเลือก Supplier ใน ComboBox แล้ว ข้อมูลที่อยู่และผู้ติดต่อ จะแสดงใน TextBox1,TextBox2

ผมใช้ Application VLOOKUP แต่ยัง Debug ผมคิดว่าผมไม่ทราบวิธีการใช้ใน VBA
ผมควรเพิ่มโค๊ดอะไรลงไปอีกครับอาจารย์ ให้เหมือนกับการทำ Define-Name บน Worksheet แล้วใช้ Vlookup แบบปกติ

รบกวนด้วยครับ
Form.xlsm

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Wed Oct 26, 2011 2:26 pm
by snasui
:D ปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub ComboBox1_Change()
   TextBox1.Value = Application.VLookup(Me.ComboBox1, Sheets("Supplier").Range("B:D"), 2, False)
   TextBox2.Value = Application.VLookup(Me.ComboBox1, Sheets("Supplier").Range("B:D"), 3, False)
End Sub
สำหรับการใช้งาน Vlookup อ่านตาม Link นี้ครับ :arrow: http://snasui.blogspot.com/2009/12/vlookup.html

Re: Save ข้อมูลจาก Form ที่สร้างจาก Vba มาบันทึกลงในชีทครับ

Posted: Wed Oct 26, 2011 2:37 pm
by bank9597
อิอิ ขอบคุณครับ

เดี๋ยวจะลองใช้ฟอร์มนี้ เป็นฟอร์มแก้ไขข้อมูล แล้วบันทึกไปยังที่เดิม แล้วผมจะลองทำมาก่อนแล้วกันครับ