Page 1 of 2
อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 12:38 pm
by Sangkate
รบกวนไกด์หน่อยครับอาจารย์ผมพึ่งลองหัดเขียน textในform พอดีไม่มีความรู้มาก่อน(แต่มีความพยายามมาก)ง่ายๆ คือเอาข้อมูลไปลงในซีทที่ 1 (C1,R1)ขอโค๊ดตัวอย่างสั้นๆหรือคำแนะนำหน่อยครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 1:14 pm
by bank9597

โดยกฏแล้ว หากถามเรื่อง VBA จำเป็นต้องเขียนมาเองก่อนเสมอ เพราะจะสามารถปรับเองได้บ้างในเวลาเกิดปัญหา
แต่ที่ถามมาไม่ยากมาก เลยมีตัวอย่างให้ศึกษาดูครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 1:44 pm
by hinokia7210
สอบถามต่อจาก จขกท นะคะ
คุณ bank9597 ช่วยสอนตัวอย่างที่คุณแนบมาให้หน่อยได้มั้ยคะ
ไม่ค่อยเข้าใจค่ะ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 2:12 pm
by bank9597

ควรแจ้งด้วยครับว่า ไม่เข้าใจบรรทัดใดของโค๊ด
Code: Select all
Private Sub CommandButton1_Click()
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
Unload Me
UserForm1.Show
Else
MsgBox "¡ÃسÒÃкت×è͹Ó˹éÒ¡è͹¤ÃѺ", vbCritical
End If
End Sub
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 2:26 pm
by hinokia7210
อย่าว่ากันนะคะ ถ้าจะบอกว่า..
เราต้องไปแทรกใส่ตรงไหน ทำไม่เป็นค่ะ
คิดว่าต้องไปแทรก หรือใช้คำสั่งอะไรก่อน แล้วใส่โค้ดด้านบนเพิ่มเติมไปใช่มั้ยคะ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 2:38 pm
by bank9597

ที่แห่งนี้ไม่เลือกตอบครับ จะยากจะง่าย หรือผู้ถามจะถามแบบไหนก็ให้สบายใจได้ครับ
เป็นเรื่องปกติที่ใครมากมายยังไม่ทราบครับ
เปิดโปรแกรม Excel ขึ้นมาครับ แล้วกด Alt+F11 จะมีหน้าต่าง VBE โชว์ขึ้นมา ในส่วนนี้จะเป็นในส่วนของการเขียนคำสั่งด้วยภาษา VB เพื่อไปสั่งงานโปรแกรมให้ทำงานตามที่เราต้องการ VBA คือ Visual Basic For Application
ในที่นี้ เอ็กเซลล์มีหลายเวอร์ชั่น ผมจึงแนะนำการเปิด VBE ด้วย Alt+F11 วิธีเดียวที่เป็นกลางพอครับ
เมื่อเปิดขึ้นมาแล้ว ไปที่แท็บ Insert เลือกสิ่งที่จะสร้าง เช่น Module หรือ Userform ในที่นี้ให้กดเลือก Userform ครับ
จะมีฟอร์มชื่อ Userform1 แสดงขึ้นมา เปลี่ยนชื่อได้ ใน Properties อยู่ด้านซ้ายมือล่าง ในช่องของ Caption
จะมีกล่องเครื่องมือเล็กๆ ชื่อ ToolBox เราเลือกออฟเจ็คต่างๆจากตรงนี้ครับ
ให้เลือก TextBox ไปวางที่ Userform 2 ตัวครับ โดยการกดที่ออฟเจ็ค แล้ววาดลง Userform
สร้างปุ่ม 1 ปุ่ม โดยไปเลือกที่ Command Button แล้วมาวาดใน Userform เสร็จแล้วดับเบิ้ลคลิ๊กที่ปุ่ม แล้วเอาโค๊ดด้านบนไปวาง
หลักการคร่าวๆประมาณนี้ครับ ลองศึกษาดูครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 3:37 pm
by hinokia7210
กรอกเสร็จแล้ว ทำไงให้มันขึ้นในหน้า excel อ่ะคะ งง ค่ะ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 3:50 pm
by bank9597
hinokia7210 wrote:กรอกเสร็จแล้ว ทำไงให้มันขึ้นในหน้า excel อ่ะคะ งง ค่ะ

สั่ง Run Code แล้วหรือยังครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 5:28 pm
by Sangkate
ขอบคุณครับอาจารย์ผมจะพัฒนาต่อครับ เจอทางตันแล้วจะรบกวนใหม่ครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:05 pm
by hinokia7210
ช่วยสอนวิธีสร้างกล่อง แสดงฟอร์ม แล้วก็วิธีการรันให้ด้วยค่ะ
และถ้าสมมุติว่าเราเขียนคำสั่งผิดพลาด เราจะกดแก้ไขได้ตรงไหนคะ
จะเอามาลองปรับใช้ดูค่ะ ขอบคุณค่ะ
เท่าที่ดูก็แค่เอากล่องข้อความมาใส่ธรรมดา แต่เวลาคลิกที่กล่องข้อความ มันก็ขึ้น text box ให้เลย
ตรงนี้ทำยังไงคะ ที่เราจะตั้งค่าให้เราสามารถรัน vb ได้แบบนี้อ่ะค่ะ หลังจากที่เรากรอกโค้ดคำสั่งแล้ว
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:23 pm
by snasui

ผมพบว่าคุณ bank9597 ได้แนะนำเกี่ยวกับการเข้าไปสร้าง Form ไว้แล้วครั้งหนึ่ง
viewtopic.php?p=20321#p20321 หากเห็นว่าไม่สามารถต่อยอดจากนั้นได้ ควรจะหาหนังสือมาฝึกทำตามก่อน ติดปัญหาตรงไหนสามารถแนบ Code ที่เขียนมาเองแล้วถามตอบกันได้ที่นี่ครับ
ที่นี่พร้อมตอบทุกคำถาม ไม่ว่าจะยากหรือง่ายอย่างไร แต่ต้องเขียนกันมาเองก่อน (ตามกฎข้อ 5 ด้านบน) การเรียนรู้เกี่ยวกับ VBA จำเป็นศึกษากันมาเองตามลำดับ เมื่อติดปัญหาแล้วค่อยมาถามกันครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:32 pm
by hinokia7210
ขอโทษค่ะ ที่ใช้คำถามผิด การสร้างฟอร์ม แบบด้านบนนั้นทำได้แล้วค่ะ (ทำตามที่คุณ bank9597 แนะนำไว้ขึ้างบนแล้ว)
แต่ว่า จะทำให้โชว์ เหมือนอย่างหน้าจอด้านบน ลองกด รันดูแล้ว มันขึ้นเฉพาะในหน้า VB ค่ะ
แต่ให้ขึ้นอย่างภาพด้านบน หน้า sheet ใด sheet นึงน่ะค่ะ ยังงงๆ อยู่ กับ excel 2010 ค่ะ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:37 pm
by snasui

เมื่อติดปัญหาก็ควรจะ Post ตัวอย่างไฟล์ที่เขียนมาเองแล้วครับ จะโพสต์ภาพประกอบด้วยก็ได้ แต่ไฟล์ตัวอย่างและ Code ที่เขียนมาเองแล้วจำเป็นจะต้องมีมาให้ด้วยเสมอ จะได้ทราบว่าเขียนอย่างไร เพื่อจะได้เข้าถึงปัญหาและสามารถแนะนำกันได้สะดวก
การตอบปัญหาไม่ว่าจะเรื่องสูตรหรือ Code หากจะให้ตรงกับสิ่งที่เป็นปัญหาให้แนบไฟล์ตัวอย่างมาเสมอ เพราะต้องใช้การอ้างอิงตำแหน่ง
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:50 pm
by hinokia7210
ที่ต้องการถามคือว่า จะทำยังไงให้เมื่อกดส่วนใดส่วนหนึ่งของปุ่ม "กรอกข้อมูล" สีฟ้า
แล้วขึ้น text box อย่างที่เห็นค่ะ
(กรณีนี้ใช่วิธี กด alt + f11 แล้วขึ้นหน้าตา vb มาแล้วกด run ถึงจะขึ้นค่ะ)
Re: อยากให้ sheets รับค่าจากtext box
Posted: Thu Aug 16, 2012 7:55 pm
by snasui

การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ
Assign Macro
Re: อยากให้ sheets รับค่าจากtext box
Posted: Fri Aug 17, 2012 9:24 am
by hinokia7210
snasui wrote:
การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ
Assign Macro
โฮ้.. เยอะมากจนตาลายไปหมดเลยค่ะ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Fri Aug 17, 2012 9:55 am
by bank9597
hinokia7210 wrote:snasui wrote:
การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ
Assign Macro
โฮ้.. เยอะมากจนตาลายไปหมดเลยค่ะ
แนบไฟล์มาดูอีกครั้งครับ
Re: อยากให้ sheets รับค่าจากtext box
Posted: Fri Aug 17, 2012 10:41 am
by hinokia7210
bank9597 wrote:hinokia7210 wrote:snasui wrote:
การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ
Assign Macro
โฮ้.. เยอะมากจนตาลายไปหมดเลยค่ะ
แนบไฟล์มาดูอีกครั้งครับ
แนบมาแล้วค่ะ กำลังปรับเปลี่ยนหน้าตาให้เหมาะกับการใช้งานอยู่ค่ะ ยังไม่ได้ปรับโค้ดอะไร เพียงแต่ก๊อบโค้ดจากกระทู้ก่อนที่คุณ Babk ให้ไว้
กะจะเอามาลองปรับๆ ดูค่ะ แต่ตอนนี้ ขอแค่กดปุ่มแล้ว มันขึ้น text box ให้ได้ก่อน
Re: อยากให้ sheets รับค่าจากtext box
Posted: Fri Aug 17, 2012 10:55 am
by bank9597

เข้าไปใน VBE โดยกด Alt+F11
ไปที่ Insert เลือก Module เอาโค๊ดนี้ไปวาง
Code: Select all
Sub FormShow()
กรอกข้อมูล.Show
End Sub
แนะนำให้เปลี่ยนชื่อฟอร์มเป็นภาษาอังกฤษ
กลับมาที่ชีท Data คลิ๊กขวาที่ปุ่ม "กรอกข้อมูล" เลือก Assign Macro จากนั้นเลือกที่ FormShow แล้ว OK
ทดสอบคลิ๊กปุ่ม
Re: อยากให้ sheets รับค่าจากtext box
Posted: Fri Aug 17, 2012 10:57 am
by hinokia7210
bank9597 wrote:
เข้าไปใน VBE โดยกด Alt+F11
ไปที่ Insert เลือก Module เอาโค๊ดนี้ไปวาง
Code: Select all
Sub FormShow()
กรอกข้อมูล.Show
End Sub
แนะนำให้เปลี่ยนชื่อฟอร์มเป็นภาษาอังกฤษ
กลับมาที่ชีท Data คลิ๊กขวาที่ปุ่ม "กรอกข้อมูล" เลือก Assign Macro จากนั้นเลือกที่ FormShow แล้ว OK
ทดสอบคลิ๊กปุ่ม
ขอบคุณค่ะ เดี๋ยวไปลองทำใส่โค้ด แล้วจะมาถามต่อนะคะ