Page 1 of 2

ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 18, 2014 6:58 pm
by todunk85
ผมต้องการ enter แล้วให้ข้อมูลส่งไปเข้า sheet แล้วเมื่อถึง textbox3 สุดท้าย
ให้กลับมากรอกข้อมูลที่ textbox1 เลย ขอความช่วยเหลือหน่อยครับ พยายาม
ทำหลายรอบแล้วไม่ได้ครับ หัดจากหนังสือ ขอบคุณมากครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 18, 2014 7:04 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub TextBox3_AfterUpdate()
    If Me.TextBox1.Value <> "" Then
        Dim irow As Long
        Dim ws As Worksheet
        Set ws = Worksheets("Sheet1")
        Me.TextBox1.Text = Application.Trim(Me.TextBox1.Text)
        'Find first empty row in database
        irow = ws.Cells(Rows.Count, 2) _
        .End(xlUp).Offset(1, 0).Row
        
        'Copy The Data To The Database
        ws.Cells(irow, 1).Value = Me.TextBox1.Value
        ws.Cells(irow, 2).Value = Me.TextBox2.Value
        ws.Cells(irow, 3).Value = Me.TextBox3.Value
        ws.Cells(irow, 1).Select
        Me.TextBox1 = ""
        Me.TextBox2 = ""
        Me.TextBox3 = ""
        Me.TextBox1.SetFocus
    Else
        MsgBox "no product", vbCritical
    End If
End Sub

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 18, 2014 7:10 pm
by todunk85
ขอบคุณมากครับครูครับ จบไปอีก1บทของการเรียนรู้ ใช้ได้ดีมากเลยครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 7:48 am
by nurak
ต้องขอโทษเจ้าของกระทู้ด้วยนะครับ ขอยืมไฟล์ใช้งานด้วยครับ

ผมอยากจะเรียนถามว่าเดิมเวลากดบันทึก ข้อมูลจะบันทึกไปที่ A2:C2 => A3:C3 และเพิ่มลงมาแต่ละบรรทัดเรื่อยๆ
ถ้าผมต้องการให้เวลากดบันทึก ข้อมูลจะบันทึกไปที่ A2:A4 => A5:A7 และเพิ่มไปทุกครั้งเมื่อกดบันทึก ต้องแก้ไข Code VBA อย่างไรครับ ขอบคุณมากๆครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 7:56 am
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

ws.Cells(irow, 1).Value = Me.TextBox1.Value
ws.Cells(irow+1, 1).Value = Me.TextBox2.Value
ws.Cells(irow+2, 1).Value = Me.TextBox3.Value

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 8:15 am
by nurak
ลองแก้ไข Code ใหม่ตามที่อาจารย์แนะนำแล้วครับแต่ เมื่อบันทึกข้อมูลครั้งที่ 2,3,.... ข้อมูลจะบันทึกทับข้อมูลเดิมตลอดครับ ไม่ต่อท้ายสุดข้อมูลเดิมที่มีอยู่แล้ว รบกวนช่วยแนะนำด้วยครับ ขอบคุณมากๆ ครับ :thup: :thup:

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 8:20 am
by snasui
:D ปรับการ Assign ค่าให้ irow เป็นด้านล่างครับ

Code: Select all

irow = ws.Cells(Rows.Count, 1) _
        .End(xlUp).Offset(1, 0).Row

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 8:25 am
by nurak
:thup: :thup: :thup: :cp: :cp: :cp: :D :D :D

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 10:46 am
by nurak
เรียนขอคำชี้แนะอีกครั้ง :roll: :roll: :roll: เราจะเขียน Code อย่างไรให้เวลาเปิด UserForm ใช้งาน ให้ Show 3ค่าสุดท้ายในที่เราบันทึกไว้ Textbox น่ะครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 10:50 am
by snasui
:D การทำเช่นนั้นต้องเขียนเพิ่มเติมเข้าไป ไม่สามารถปรับจากส่วนที่มีอยู่เดิม

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

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 10:55 am
by nurak
พอมีตัวอย่างแนะนำบ้างหรือเปล่าครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 11:09 am
by snasui
:D ลอง Search หาคำว่า UserForm_Initialize ดูครับ

ตัวอย่างหนึ่งคือ Link นี้ซึ่งเป็นการกำหนด Pages และ CommandButton ตอนโหลด UserForm :arrow: http://support.microsoft.com/kb/829070

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 6:36 pm
by nurak
ผมได้ทดลองทำจากคำแนะนำของอาจารย์แล้วครับ ผลใช้งานได้แล้วครับ แต่ถ้าผมต้องการเปลี่ยนแปลง Textbox1 เป็น Combobox1 เงื่อนไขที่ผมต้องการ

1.Product มีอยู่ 3แบบคือ A,B,C
2.เมื่อเปิด UserForm ให้ใน Combobox1 แสดง Product สุดท้ายที่บรรทึกไว้
3.ถ้ามีการเปลี่ยน Product Combobox1 สามารถเลือก Product ใหม่ได้เช่นกันครับ

รบกวนขอคำแนะนำด้วยครับ หรือจะเป็นตัวอย่างก้อได้ครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 6:57 pm
by snasui
:D จาก Code เอา Product สุดท้ายมาจากชีท Ref เซลล์ A2 ซึ่งเซลล์ A2 เอามาจากค่าสุดท้ายในคอลัมน์ C อีกที

หากเป็นเช่นนั้นเซลล์ A2 เขียนสูตรเป็น

=Lookup(Char(255),c:c)

Enter

ต่อไปเซลล์ A2 จะเป็น Product สุดท้ายในคอลัมน์ C อยู่เสมอ

ส่วนการที่จะให้ ComboBox เลือกได้ จะต้องทำการ Add รายการเข้าไปก่อนในตอน Initialize ดูตัวอย่างได้ที่นี่ครับ viewtopic.php?f=3&t=178#p970

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 8:00 pm
by nurak
ผมลองอ่านและทำความเข้าใจกับสิ่งที่อาจารย์ แนะนำแต่ครั้งนี้ เกินความสามารถของผมจริงๆ ถ้าไม่เป็นการรบกวนอาจารย์มากเกินไป ช่วยแนะนำอีกครั้งครับขอเป็นตัวอย่างที่ไกล้เคียงกัน หรืออาจารย์ช่วยแก้ไขเพิ่มเติมในไฟล์ที่ผมแนบไปให้ด้วยนะครับ

ผมคิดว่าผมคงอธิบายอาจารย์ไม่ชัดเจนที่ข้อ2 ( "2.เมื่อเปิด UserForm ให้ใน Combobox1 แสดง Product สุดท้ายที่บรรทึกไว้ ") คือเอา product ที่บันทึกครั้งสุดท้ายมาแสดงใน Combobox1 น่ะครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sat Jan 25, 2014 8:04 pm
by snasui
:D การเอา Product สุดท้ายมาไว้ที่ ComboBox1 ที่แจ้งมานั้นเขียนไว้ใน Code อยู่แล้ว และ Code นั้นไปอ้างมาจากไหน ผมก็ไปทำต้นแหล่งให้มันแสดง Product สุดท้าย คำตอบได้เหมือนกัน เพียงแต่ว่าไม่กระชับ ถ้าหากต้องการให้กระชับจะต้องเขียนมาให้ชัดว่าต้องการจะเอา Product สุดท้ายจากพื้นทีไหน ที่เขียนไว้แล้วมีปัญหาอะไร จะได้ช่วยปรับต่อไปจากนั้น

ในส่วนอื่นที่ยังทำไม่ได้ก็ต้องศึกษามาตามลำดับครับ เขียนแล้วติดตรงไหนก็ค่อยมาถามกันต่อ ผมจะเขียนให้ก่อนไม่ได้ เป็นกติกาของฟอรัมที่ต้องปฏิบัติเสมอภาคกันครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sun Jan 26, 2014 9:13 am
by nurak
:roll: :roll: :roll: อาจารย์ พอมีตัวอย่างอื่นที่คล้ายๆกันให้ศึกษาหรือเปล่าครับ นั่งทำจนดึกยังไม่ไปถึงไหนเลย

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sun Jan 26, 2014 9:27 am
by snasui
:D คงต้องค้นดูตามแหล่งต่าง ๆ ครับ ยกตัวอย่างเช่นใน snasui.com :arrow: ComboBox ผมไม่สามารถจำได้ทั้งหมดว่าได้ตอบไว้แล้วหรือไม่ ตอบไว้ที่ไหน เมื่อใดครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Sun Jan 26, 2014 10:23 pm
by nurak
ได้แล้วครับ จากที่ใช้ความพยายามและนั่งคิดในสิ่งที่อาจารย์ ชี้แนะมาขอบคุณครับ :D :D :D ถ้ามีอะไรต้องแก้ไขชี้แนะได้ครับ

Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม

Posted: Tue Jan 28, 2014 9:01 pm
by nurak
เราจะกำหนดที่ไหนได้บ้างครับ ให้เวลาลงข้อมูลใน textbox , combobox ให้ข้อมูลอยู่ตรงกลางเสมอ ขอบคุณครับ