Page 1 of 1

อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 1:39 pm
by golden014
หน้า Sheet Form จะเอาไว้คีย์ข้อมูลลงไปเรื่อยๆครับ และพอคีย์เสดก็จะกด บันทึก และให้ข้อมูลไปโชว์อยู่ Sheet Database

รบกวนช่วยทีนะครับ ผมมือใหม่ :!:

Re: รบกวนช่วยทีครับ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 1:54 pm
by snasui
:D สำหรับการใช้งาน VBA ให้ทำตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

อ่านกฎการใช้บอร์ดทุกข้อด้านบนอย่างระมัดระวัง คำว่า "เสด" ผิดกฎข้อ 1 ครับ

Re: รบกวนช่วยทีครับ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 2:00 pm
by golden014
ต้องขอโทษด้วยครับ พอดีเป็นงานด่วนแล้วไม่รู้จะแก้ยังไง

ผมได้ลองเขียนเองแล้ว

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues  << ติด error บรรทัดนี้อ่ะครับ
        Sheets("Form").Range("G2:G1673,H2:H1673,I2:I1673,J2:J1673") _
            .SpecialCells(xlCellTypeConstants).ClearContents
        MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Else
    MsgBox ("ãÊèàÅ¢ 1 ·ÕèªèͧÊÕá´§à¾×èÍ·Ó¡ÒÃÂ×¹Âѹ¡ÒÃá¡éä¢")
End If
End Sub
ตามนี้เลยครับแต่มันติด Error "1004" PasteSpecial Method of Range Class failed

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 2:08 pm
by snasui
:D แนบไฟล์ล่าสุดที่มีการในใส่ Code ตามด้านบนเข้าไปแล้วมาด้วย

สำหรับการโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านดูตัวอย่างที่นี่ครับ viewtopic.php?f=3&t=1187

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 2:11 pm
by golden014
แนบไฟล์มาให้ดูแล้วครับ

Re: รบกวนช่วยทีครับ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 2:19 pm
by bank9597
golden014 wrote:ต้องขอโทษด้วยครับ พอดีเป็นงานด่วนแล้วไม่รู้จะแก้ยังไง

ผมได้ลองเขียนเองแล้ว

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues  << ติด error บรรทัดนี้อ่ะครับ
        Sheets("Form").Range("G2:G1673,H2:H1673,I2:I1673,J2:J1673") _
            .SpecialCells(xlCellTypeConstants).ClearContents
        MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Else
    MsgBox ("ãÊèàÅ¢ 1 ·ÕèªèͧÊÕá´§à¾×èÍ·Ó¡ÒÃÂ×¹Âѹ¡ÒÃá¡éä¢")
End If
End Sub
ตามนี้เลยครับแต่มันติด Error "1004" PasteSpecial Method of Range Class failed
:D เวลาทำเสร็จแล้วต้องบันทึกไฟล์เป็น .xlsm น่ะครับ

ส่วนโค๊ด ลองปรับตามนี้
ที่ชีท Form เซลล์ N1 คีย์ =COUNTA(G2:G1673) เพื่อนับจำนวนข้อมูล (แล้วแต่ว่าจะนับที่คอลัมน์ไหนเป็นสำคัญ) ที่จะบันทึกเก็บ

โค๊ด :ard:

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Form").Range("G2:J1673") _
            .Resize(Sheets("Form").Range("N1"), 4).Copy
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        Sheets("Form").Range("G2:J1673").ClearContents
        MsgBox ("Finish")
Else
    MsgBox ("Error")
End If
End Sub

Re: รบกวนช่วยทีครับ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 2:37 pm
by golden014
bank9597 wrote:
golden014 wrote:ต้องขอโทษด้วยครับ พอดีเป็นงานด่วนแล้วไม่รู้จะแก้ยังไง

ผมได้ลองเขียนเองแล้ว

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues  << ติด error บรรทัดนี้อ่ะครับ
        Sheets("Form").Range("G2:G1673,H2:H1673,I2:I1673,J2:J1673") _
            .SpecialCells(xlCellTypeConstants).ClearContents
        MsgBox ("ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ")
Else
    MsgBox ("ãÊèàÅ¢ 1 ·ÕèªèͧÊÕá´§à¾×èÍ·Ó¡ÒÃÂ×¹Âѹ¡ÒÃá¡éä¢")
End If
End Sub
ตามนี้เลยครับแต่มันติด Error "1004" PasteSpecial Method of Range Class failed
:D เวลาทำเสร็จแล้วต้องบันทึกไฟล์เป็น .xlsm น่ะครับ

ส่วนโค๊ด ลองปรับตามนี้
ที่ชีท Form เซลล์ N1 คีย์ =COUNTA(G2:G1673) เพื่อนับจำนวนข้อมูล (แล้วแต่ว่าจะนับที่คอลัมน์ไหนเป็นสำคัญ) ที่จะบันทึกเก็บ

โค๊ด :ard:

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Form").Range("G2:J1673") _
            .Resize(Sheets("Form").Range("N1"), 4).Copy
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        Sheets("Form").Range("G2:J1673").ClearContents
        MsgBox ("Finish")
Else
    MsgBox ("Error")
End If
End Sub
ได้แล้วครับ แต่ถ้าผมจะดึงเอาข้อมูลพวกรายชื่อบริษัทไปด้วย ตอนกดบันทึก ผมลองทำดูแล้วแต่มันเรียกมาไม่ครบอ่ะครับมาแค่ column A B C D E F

Code: Select all

Sub DataRecord()
If Sheets("Form").Range("M1") <> "" Then
        Sheets("Form").Range("A2:J1673") _
            .Resize(Sheets("Form").Range("N1"), 10).Copy
        Sheets("Database").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        Sheets("Form").Range("G2:J1673").ClearContents
        MsgBox ("Finish")
Else
    MsgBox ("Error")
End If
End Sub
code ที่ผมแก้ตามนี้เลยครับ

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 3:35 pm
by snasui
:D ลองแนบไฟล์ล่าสุด อธิบายเพิ่มเติมมาด้วยว่าข้อมูลต้นทางเป็นอย่างไร ต้องการข้อมูลปลายทางเป็นอย่างไร จะได้เข้าใจตรงกันครับ

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 3:39 pm
by golden014
แนบไฟล์มาให้แล้วครับ

ตอนนี้กด บันทึกข้อมูล ไม่ติด error แล้วแต่ข้อมูลไม่ขึ้นใน Sheet Database เลย งงมากไม่ติด error แต่ข้อมูลไม่ขึ้น

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 4:06 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub DataRecord()
    Dim iCount As Integer
    With Sheets("Form")
        If .Range("A2") <> "" Then
            iCount = .Range("a2", .Range("a" & .Rows.Count) _
                .End(xlUp)).Count
            Sheets("Database").Range("a2").Resize(iCount, 10).Value _
                = .Range("a2").Resize(iCount, 10).Value
        Else
            MsgBox ("Error")
        End If
    End With
End Sub

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 4:22 pm
by golden014
ได้แล้วครับ ขอบคุณมากๆเลยนะครับ :thup:

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 4:35 pm
by bank9597
snasui wrote::D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub DataRecord()
    Dim iCount As Integer
    With Sheets("Form")
        If .Range("A2") <> "" Then
            iCount = .Range("a2", .Range("a" & .Rows.Count) _
                .End(xlUp)).Count
            Sheets("Database").Range("a2").Resize(iCount, 10).Value _
                = .Range("a2").Resize(iCount, 10).Value
        Else
            MsgBox ("Error")
        End If
    End With
End Sub
:roll: อาจารย์คนควนตอบซะเคลียร์เลย แบบว่าประกาศตัวแปรเรียบร้อย

แต่ผมตอบแบบทื่อๆมาก รู้สึกแย่กับตนเองมากเลย ตอบไม่เรียบร้อยสวยงาม :cry:

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 11:09 pm
by snasui
bank9597 wrote:รู้สึกแย่กับตนเองมากเลย ตอบไม่เรียบร้อยสวยงาม
:shock: มีคำกล่าวที่น่าสนใจว่า แมวจะมีสีขาวหรือดำขอให้จับหนูได้เป็นพอครับ เพราะฉะนั้น ขอเน้นเรื่องการทำงานได้ก่อนเป็นหลัก ส่วนการเขียนให้กระชับ รัดกุม เรียบร้อยสวยงามค่อยมาทีหลังก็ได้ครับ :mrgreen:

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet

Posted: Thu Jun 26, 2014 11:54 pm
by bank9597
snasui wrote:
bank9597 wrote:รู้สึกแย่กับตนเองมากเลย ตอบไม่เรียบร้อยสวยงาม
:shock: มีคำกล่าวที่น่าสนใจว่า แมวจะมีสีขาวหรือดำขอให้จับหนูได้เป็นพอครับ เพราะฉะนั้น ขอเน้นเรื่องการทำงานได้ก่อนเป็นหลัก ส่วนการเขียนให้กระชับ รัดกุม เรียบร้อยสวยงามค่อยมาทีหลังก็ได้ครับ :mrgreen:
:mrgreen: :mrgreen: :mrgreen: