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
ลองปรับ 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
ตัวอย่างการปรับ 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,.... ข้อมูลจะบันทึกทับข้อมูลเดิมตลอดครับ ไม่ต่อท้ายสุดข้อมูลเดิมที่มีอยู่แล้ว รบกวนช่วยแนะนำด้วยครับ ขอบคุณมากๆ ครับ
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sat Jan 25, 2014 8:20 am
by snasui
ปรับการ 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
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sat Jan 25, 2014 10:46 am
by nurak
เรียนขอคำชี้แนะอีกครั้ง
เราจะเขียน Code อย่างไรให้เวลาเปิด UserForm ใช้งาน ให้ Show 3ค่าสุดท้ายในที่เราบันทึกไว้ Textbox น่ะครับ
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sat Jan 25, 2014 10:50 am
by snasui
การทำเช่นนั้นต้องเขียนเพิ่มเติมเข้าไป ไม่สามารถปรับจากส่วนที่มีอยู่เดิม
สำหรับ 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
ลอง Search หาคำว่า
UserForm_Initialize
ดูครับ
ตัวอย่างหนึ่งคือ Link นี้ซึ่งเป็นการกำหนด Pages และ CommandButton ตอนโหลด UserForm
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
จาก 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
การเอา Product สุดท้ายมาไว้ที่ ComboBox1 ที่แจ้งมานั้นเขียนไว้ใน Code อยู่แล้ว และ Code นั้นไปอ้างมาจากไหน ผมก็ไปทำต้นแหล่งให้มันแสดง Product สุดท้าย คำตอบได้เหมือนกัน เพียงแต่ว่าไม่กระชับ ถ้าหากต้องการให้กระชับจะต้องเขียนมาให้ชัดว่าต้องการจะเอา Product สุดท้ายจากพื้นทีไหน ที่เขียนไว้แล้วมีปัญหาอะไร จะได้ช่วยปรับต่อไปจากนั้น
ในส่วนอื่นที่ยังทำไม่ได้ก็ต้องศึกษามาตามลำดับครับ เขียนแล้วติดตรงไหนก็ค่อยมาถามกันต่อ ผมจะเขียนให้ก่อนไม่ได้ เป็นกติกาของฟอรัมที่ต้องปฏิบัติเสมอภาคกันครับ
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sun Jan 26, 2014 9:13 am
by nurak
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sun Jan 26, 2014 9:27 am
by snasui
คงต้องค้นดูตามแหล่งต่าง ๆ ครับ ยกตัวอย่างเช่นใน snasui.com
ComboBox ผมไม่สามารถจำได้ทั้งหมดว่าได้ตอบไว้แล้วหรือไม่ ตอบไว้ที่ไหน เมื่อใดครับ
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Sun Jan 26, 2014 10:23 pm
by nurak
ได้แล้วครับ จากที่ใช้ความพยายามและนั่งคิดในสิ่งที่อาจารย์ ชี้แนะมาขอบคุณครับ
ถ้ามีอะไรต้องแก้ไขชี้แนะได้ครับ
Re: ส่งข้อมูล textbox โดยไม่ใช้ปุ่ม
Posted: Tue Jan 28, 2014 9:01 pm
by nurak
เราจะกำหนดที่ไหนได้บ้างครับ ให้เวลาลงข้อมูลใน textbox , combobox ให้ข้อมูลอยู่ตรงกลางเสมอ ขอบคุณครับ