ต้องการcopyข้อมูลจากชีทหลักไปยังอีกชีทที่กำหนดแบบเรียงลำดับลงมา
Posted: Fri Sep 23, 2022 11:23 pm
เรียน สมาชิกทุกท่าน
ผมต้องการcopyข้อมูลจากชีทหลักไปยังอีกชีทที่กำหนดแบบเรียงลำดับลงมา
ชีทหลักของผมก็คือชีท"หน้าหลัก"
เมื่อรันโค้ด sub BOQ() อันดับแรกจะให้ตรวจสอบเซลล์ C44 ที่ชีทหน้าหลักก่อน หากไม่เท่ากับค่าว่าง จะให้ exit sub ทันที
หากเป็นค่าว่างก็ให้รันโค้ดตามปกติ
โดยเริ่มcopyข้อมูลจากคอลัมน์ B,C,D,Eแถวที่13ของชีทหน้าหลัก แล้วนำไปวางที่คอลัมน์ B:C,D,E,Fแถวที่12 ของชีทBOQแบบเรียงลำดับลงมาเรื่อยๆตามลำดับครับ ตามที่ผมเข้าใจน่าจะต้องใช้การ loop แต่ลองรันโค้ดแล้วมันcopyมาแค่แถวเดียว คือแถวบนสุด
โค้ดที่ติดปัญหาอยู่ตรงนี้ครับ
ผมต้องการcopyข้อมูลจากชีทหลักไปยังอีกชีทที่กำหนดแบบเรียงลำดับลงมา
ชีทหลักของผมก็คือชีท"หน้าหลัก"
เมื่อรันโค้ด sub BOQ() อันดับแรกจะให้ตรวจสอบเซลล์ C44 ที่ชีทหน้าหลักก่อน หากไม่เท่ากับค่าว่าง จะให้ exit sub ทันที
หากเป็นค่าว่างก็ให้รันโค้ดตามปกติ
โดยเริ่มcopyข้อมูลจากคอลัมน์ B,C,D,Eแถวที่13ของชีทหน้าหลัก แล้วนำไปวางที่คอลัมน์ B:C,D,E,Fแถวที่12 ของชีทBOQแบบเรียงลำดับลงมาเรื่อยๆตามลำดับครับ ตามที่ผมเข้าใจน่าจะต้องใช้การ loop แต่ลองรันโค้ดแล้วมันcopyมาแค่แถวเดียว คือแถวบนสุด
โค้ดที่ติดปัญหาอยู่ตรงนี้ครับ
Code: Select all
Sub BOQ()
Dim sh As Worksheet
With Sheets("หน้าหลัก")
If .Range("c44").Value <> "" Then
MsgBox "ช่องบันทึกรายการสินค้าเต็ม ไม่สามารถเพิ่มรายการได้"
Exit Sub
End If
End With
Worksheets("BOQ").Range("A12:F29").ClearContents
For Each sh In Worksheets
With Worksheets("BOQ")
.Range("B12").Offset(Application.CountA(.Range("B12:B" & .Rows.Count)), 0).Value = sh.Range("B13").Offset(Application.CountA(.Range("B13:B" & .Rows.Count)), 0).Value
.Range("D12").Offset(Application.CountA(.Range("D12:D" & .Rows.Count)), 0).Value = sh.Range("C13").Offset(Application.CountA(.Range("C13:C" & .Rows.Count)), 0).Value
.Range("E12").Offset(Application.CountA(.Range("E12:E" & .Rows.Count)), 0).Value = sh.Range("D13").Offset(Application.CountA(.Range("D13:D" & .Rows.Count)), 0).Value
.Range("F12").Offset(Application.CountA(.Range("F12:F" & .Rows.Count)), 0).Value = sh.Range("E13").Offset(Application.CountA(.Range("E13:E" & .Rows.Count)), 0).Value
End With
Next sh
MsgBox "Sent To BOQ Complete"
End Sub