Page 1 of 1

รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Mon Apr 02, 2012 2:22 pm
by Amkung
เนื่องจากทำข้อมูลเกี่ยวกับ Warehouse ต้องการ Link ข้อมูลจากใบส่งวัสดุเข้าหน่วยงาน ไปที่ Sheet "Record" แต่ติดปัญหาตรงที่เมื่อบันทึกข้อมูลแล้ว ข้อมูลไม่วิ่งไปหาบรรทัดล่าสุด แต่กลับบันทึกทับข้อมูลเก่า รบกวนอาจารย์ดูสูตรให้ด้วยค่ะ

Re: รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Mon Apr 02, 2012 4:19 pm
by snasui
:D ลองตามนี้ครับ
  1. เปลี่ยนสูตรที่กำหนดให้กับ Range Name ตามด้านล่าง
    Formout =OFFSET(Formout!$A$14,0,0,COUNTIF(Formout!$A$14:$A$28,"?*"),23)
    Record =OFFSET(Reference,COUNTA(Record!$A:$A)-2, 0, 1, 23)
  2. ปรับ Code เป็นตามด้านล่าง

    Code: Select all

    Sub CopyToAllData()
        Application.Goto Reference:="Formout"
         Selection.Copy
        Application.Goto Reference:="Record"
        Selection.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
         Range("A2").Select
        Sheets("Formout").Select
         Range("A14:W28").Select
        Application.ScreenUpdating = True
        'Clear the data
        Range("Formout").Cells(14, 9).Value = ""
    End Sub
ในคราวต่อไปควรแจ้งมาให้ทราบด้วยครับว่า Code ชื่ออะไร อยู่ใน Module ไหน เพื่อจะได้เข้าถึงข้อมูลโดยไวครับ

Re: รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Mon Apr 02, 2012 4:39 pm
by Amkung
ขอบคุณอาจารย์มากๆ เลยนะคะ
และต้องขออภัยด้วย
พอดีหนูพึ่งหัดใช้ VBA กับ Excel ก็เลยยังงงกับการตั้งคำถาม
ขอโทษและขอบคุณอย่างสูงค่ะ

Re: รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Tue Apr 03, 2012 9:41 am
by Amkung
อาจารย์คะ พอคลิกที่ปุ่ม Record แล้วขึ้นว่า
Run-time error '1004':
Reference is not Valid
พอคลิกที่ปุ้ม Debug
จะขึ้นแถบสีเหลืองที่สูตรบรรทัด
Application.Goto Reference:="Formout"
จะแก้ไขยังไงดีคะ

Re: รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Tue Apr 03, 2012 9:51 am
by bank9597
:D :D
หากเพิ่มโค๊ดเข้าไปอีกแบบนี้ จะถูกต้องไหม ลองดูครับ

Code: Select all

Sub CopyToAllData()
On Error Resume Next
Application.Goto Reference:="Formout"
Selection.Copy
Application.Goto Reference:="Record"
Selection.PasteSpecial xlPasteValues
Application.CutCopyMode = False
     Range("A2").Select
    Sheets("Formout").Select
     Range("A14:W28").Select
    Application.ScreenUpdating = True
    'Clear the data
    Range("Formout").Cells(14, 9).Value = ""
End Sub
หากไม่ใช่ ขออภัยด้วยครับ :D

Re: รบกวนอาจรย์ช่วยแก้ไขสูตรให้ด้วยค่ะ

Posted: Tue Apr 03, 2012 10:47 am
by snasui
Amkung wrote:อาจารย์คะ พอคลิกที่ปุ่ม Record แล้วขึ้นว่า
Run-time error '1004':
Reference is not Valid
พอคลิกที่ปุ้ม Debug
จะขึ้นแถบสีเหลืองที่สูตรบรรทัด
Application.Goto Reference:="Formout"
จะแก้ไขยังไงดีคะ
เนื่องจากสูตรที่ให้ไว้กับ Range Name ไม่ถูกต้องครับ ลองทบทวนด้านล่างนี้อีกรอบ
snasui wrote:ลองตามนี้ครับ
เปลี่ยนสูตรที่กำหนดให้กับ Range Name ตามด้านล่าง
Formout =OFFSET(Formout!$A$14,0,0,COUNTIF(Formout!$A$14:$A$28,"?*"),23)
Record =OFFSET(Reference,COUNTA(Record!$A:$A)-2, 0, 1, 23)
การแก้ไข ให้ลบเครื่องหมาย " ตามที่ลูกศรชี้ในภาพด้านล่างทิ้งไปครับ