Page 1 of 1
[VBA] UserForm
Posted: Tue May 14, 2013 3:44 pm
by poipoi
ปัญหามีอยู่ว่า เวลาที่ผมทำการเลือกค่าในช่อง name เพื่อที่จะบันทึกลงในหน้า sheet3 ในคอลั้ม name (Column G) ไม่สามารถบันทึกค่าได้
จะติด bug แต่หากใน row 2 ผมใส่อะไรไปก็ตามแล้ว มันถึงจะเริ่มบันทึก row ที่ 3 ให้
หากว่าผมจะทำการบันทึกต่อ ใน row 4 แต่มันไม่บันทึกให้ จะบันทึกให้แต่ row 3 แทนครับ
ปล. ผมได้แนบไฟล์ พร้อมโค้ด ที่อยู่ในไฟล์ไว้แล้วครับ
ขอบคุณครับ
Re: [VBA] UserForm
Posted: Tue May 14, 2013 3:51 pm
by snasui

Code สำหรับการหาบรรทัดทีว่างหลังจากมีข้อมูล ดู
ตัวอย่างตามด้านล่างครับ
Code: Select all
blank = Worksheets("sheet3").Cells(65536, 1).End(xlUp).Row + 1
เป็นการให้วิ่งขึ้นไปด้านบนจนพบเซลล์ที่มีข้อมูลก่อนแล้วค่อยลงมา 1 บรรทัดเพื่อหาเซลล์ว่าง
Re: [VBA] UserForm
Posted: Tue May 14, 2013 4:20 pm
by poipoi
ตามที่อาจารย์แก้ไขโค้ดให้สามารถใช้งานได้แล้วครับ
แต่...พอผมกดบันทึกเพิ่มมันก็ไม่สามารถบันทึกต่อจากของเก่าได้ครับ
ขอคำชี้แนะด้วยครับ
Re: [VBA] UserForm
Posted: Tue May 14, 2013 4:24 pm
by snasui

แจ้งตัวอย่างข้อมูลที่กรอก และแจ้งมาว่าที่ไม่ได้นั้นติดปัญหาที่บรรทัดใดของ Code ครับ
เราสามารถติดตามการทำงานทีละขั้นของ Code ด้วยการไปที่ Code นั้น ๆ แล้วกดปุ่ม F8 ครับ
Re: [VBA] UserForm
Posted: Tue May 14, 2013 4:35 pm
by poipoi
ผมไม่สามารถกด F8 เพื่อรันสเตบได้ครับเพราะเป็นการกรอกข้อมูลลง UserForm
เมื่อสักครู่นี้ผมได้ทำการแก้ไขโค้ดและเพิ่มโค้ดเข้าไป
ส่วนในหน้าที่ต้องการให้ข้อมูลไปวางไว้นั้นได้ทำการลิ๊งสูตรเพื่อที่จะได้ไม่ต้องกรอก userform หลายครััง
แต่พอลงกรอก userform แล้วมันไม่บันทึกให้ครับ
ส่วนเรื่องโค้ดนี่ไม่ได้ติดตรงไหนครับ
แค่ไม่เข้าใจว่าทำไมจึงไม่สามารถบันทึกลงไปในหน้า data ได้
ผมได้แนบไฟล์ตัวที่อัพเดทสูตรและโค้ดบางส่วนแล้วครับ
ขอบคุณครับ
Re: [VBA] UserForm
Posted: Tue May 14, 2013 5:32 pm
by snasui

การกด F8 สามารถทำได้กับทุก Procedure ไม่ว่าจะผ่าน Userform หรือไม่ เราสามารถนำ Breakpoint เข้ามาช่วยโดยคลิกในตำแหน่งตามภาพ แล้ว Run Code จากนั้นค่อยกด F8 เพื่อดูทีละ Step หากกดในตำแหน่งตามภาพอีกครั้งจะเป็นการปลด Breakpoint ออกไป
ลองปรับ Code เป็นตามด้านล่าง และที่ชีท Data ให้ลบบรรทัดที่ 1899 ทิ้งไป จากนั้นทดสอบ Run Code ดูใหม่ครับ
Code: Select all
Public Sub entry_mode()
Const name_col = 7
Const date_col = 2
Const cid_col = 5
Const merge_col = 6
Dim blank As Integer
blank = Worksheets("Data").Cells(65536, 2).End(xlUp).Row + 1
With Worksheets("Data")
.Cells(blank, name_col).Value = Entry_form.namelist.Value
.Cells(blank, date_col).Value = Entry_form.day.Value
.Cells(blank, cid_col).Value = Entry_form.cidadd.Value
.Cells(blank, merge_col).Value = Entry_form.mergeadd.Value
End With
MsgBox "Data Record", vbInformation, "Data Record"
End Sub
Re: [VBA] UserForm
Posted: Tue May 14, 2013 5:42 pm
by poipoi
ใช้การได้แล้วครับ
ผมก็ไม่ได้ทันดูว่าที่บรรทัด 1899 มีค่าอยู่
ขอบคุณสำหรับคำแนะนำครับอาจารย์