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

สำหรับการใช้งาน VBA ให้ทำตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ
อ่านกฎการใช้บอร์ดทุกข้อด้านบนอย่างระมัดระวัง คำว่า "
เสด" ผิดกฎข้อ 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

แนบไฟล์ล่าสุดที่มีการในใส่ 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

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

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

ลองแนบไฟล์ล่าสุด อธิบายเพิ่มเติมมาด้วยว่าข้อมูลต้นทางเป็นอย่างไร ต้องการข้อมูลปลายทางเป็นอย่างไร จะได้เข้าใจตรงกันครับ
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

ตัวอย่างการปรับ 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
ได้แล้วครับ ขอบคุณมากๆเลยนะครับ

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet
Posted: Thu Jun 26, 2014 4:35 pm
by bank9597
snasui wrote:
ตัวอย่างการปรับ 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 11:09 pm
by snasui
bank9597 wrote:รู้สึกแย่กับตนเองมากเลย ตอบไม่เรียบร้อยสวยงาม

มีคำกล่าวที่น่าสนใจว่า แมวจะมีสีขาวหรือดำขอให้จับหนูได้เป็นพอครับ เพราะฉะนั้น ขอเน้นเรื่องการทำงานได้ก่อนเป็นหลัก ส่วนการเขียนให้กระชับ รัดกุม เรียบร้อยสวยงามค่อยมาทีหลังก็ได้ครับ

Re: อยากทราบ การบันทึกจากอีก Sheet ไปอีก Sheet
Posted: Thu Jun 26, 2014 11:54 pm
by bank9597