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
:D โดยกฏแล้ว หากถามเรื่อง 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
:D ควรแจ้งด้วยครับว่า ไม่เข้าใจบรรทัดใดของโค๊ด

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
:lol: ที่แห่งนี้ไม่เลือกตอบครับ จะยากจะง่าย หรือผู้ถามจะถามแบบไหนก็ให้สบายใจได้ครับ

เป็นเรื่องปกติที่ใครมากมายยังไม่ทราบครับ

เปิดโปรแกรม 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 อ่ะคะ งง ค่ะ
:lol: สั่ง 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
:shock: ผมพบว่าคุณ bank9597 ได้แนะนำเกี่ยวกับการเข้าไปสร้าง Form ไว้แล้วครั้งหนึ่ง :arrow: 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
:D เมื่อติดปัญหาก็ควรจะ 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
:D การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ :arrow: Assign Macro

Re: อยากให้ sheets รับค่าจากtext box

Posted: Fri Aug 17, 2012 9:24 am
by hinokia7210
snasui wrote::D การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ :arrow: Assign Macro
โฮ้.. เยอะมากจนตาลายไปหมดเลยค่ะ

Re: อยากให้ sheets รับค่าจากtext box

Posted: Fri Aug 17, 2012 9:55 am
by bank9597
hinokia7210 wrote:
snasui wrote::D การจะกดปุ่มแล้วแสดง Form ขึ้นมาได้ต้องทำการ Assign Macro ให้กับปุ่มก่อนครับ :arrow: Assign Macro
โฮ้.. เยอะมากจนตาลายไปหมดเลยค่ะ
แนบไฟล์มาดูอีกครั้งครับ

Re: อยากให้ sheets รับค่าจากtext box

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

Re: อยากให้ sheets รับค่าจากtext box

Posted: Fri Aug 17, 2012 10:55 am
by bank9597
:D เข้าไปใน 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::D เข้าไปใน VBE โดยกด Alt+F11

ไปที่ Insert เลือก Module เอาโค๊ดนี้ไปวาง

Code: Select all

Sub FormShow()
    กรอกข้อมูล.Show

End Sub
แนะนำให้เปลี่ยนชื่อฟอร์มเป็นภาษาอังกฤษ

กลับมาที่ชีท Data คลิ๊กขวาที่ปุ่ม "กรอกข้อมูล" เลือก Assign Macro จากนั้นเลือกที่ FormShow แล้ว OK

ทดสอบคลิ๊กปุ่ม
ขอบคุณค่ะ เดี๋ยวไปลองทำใส่โค้ด แล้วจะมาถามต่อนะคะ