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
:D 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
:D แจ้งตัวอย่างข้อมูลที่กรอก และแจ้งมาว่าที่ไม่ได้นั้นติดปัญหาที่บรรทัดใดของ 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
:D การกด 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 มีค่าอยู่

ขอบคุณสำหรับคำแนะนำครับอาจารย์