Page 1 of 1

ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Thu Nov 07, 2019 9:47 pm
by pro602
ก่อนอื่นผมต้องขอขอบคุณพี่ๆสมาชิกและอาจารย์ทุกท่านที่สนับสนุนข้อมูลให้ผมได้นำมาศึกษาและทดลองการเขียนสูตร Excel รวมไปถึงการเขียน vba code ซึ่งผมก็พยายามทดลองแล้วแต่ก็ยังไม่ได้ผลตามที่ต้องการ แต่ก็พอที่จะใช้งานได้บ้างก็เป็นการทำ Record Macro แต่ก็ยังติดปัญหาในกรณีของรายละเอียดหรือจำนวนของข้อมูลแต่ล่ะแผนกที่จะนำมาทำรายงานไม่เท่ากันจึงทำให้รายงานออกมาได้ไม่สมบูรณ์แบบ
จากตัวอย่างที่ผมแนบมาผมรบกวนพี่ๆและอาจารย์ช่วยเขียนVBA Code พอเป็นตัวอย่างสัก1-2sectionให้ผมหน่อยครับเผอิญผมมีความจำเป็นต้องการนำไปใช้งานจริงด่วนครับ รายล่ะเอียดรายงานที่ต้องการจะอยู๋ใน Sheet report ครับ (Fileที่ผมแนบมาผมลองทำ Record Macro ที่ Report for Section A,B และ Delete Data ครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Thu Nov 07, 2019 10:20 pm
by snasui
:D ตัวอย่าง Code ที่ปุ่ม A ที่ปุ่มอื่น ๆ ก็เปลี่ยนจาก A ไปเป็น Section ที่จะคัดลอกมาวางครับ

Code: Select all

Dim i As Long, rAll As Range
Worksheets("Report").Range("a5:d21").ClearContents
With Sheets("Data")
    i = Application.Match("A", .Range("a1", .Range("a" & .Rows.Count).End(xlUp)), 0)
    Set rAll = .Range("a" & i, .Range("a" & i).End(xlDown))
    Set rAll = rAll.Resize(rAll.Count - 1, 5)
    rAll.Copy
    Worksheets("Report").Range("a5").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End With

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 5:31 am
by pro602
snasui wrote: Thu Nov 07, 2019 10:20 pm :D ตัวอย่าง Code ที่ปุ่ม A ที่ปุ่มอื่น ๆ ก็เปลี่ยนจาก A ไปเป็น Section ที่จะคัดลอกมาวางครับ

Code: Select all

Dim i As Long, rAll As Range
Worksheets("Report").Range("a5:d21").ClearContents
With Sheets("Data")
    i = Application.Match("A", .Range("a1", .Range("a" & .Rows.Count).End(xlUp)), 0)
    Set rAll = .Range("a" & i, .Range("a" & i).End(xlDown))
    Set rAll = rAll.Resize(rAll.Count - 1, 5)
    rAll.Copy
    Worksheets("Report").Range("a5").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End With[code]
[/quote]
หลังจากที่ผมได้เอาCode ตามที่ท่านอาจารย์ได้แนะนำมา มันฟ้องError ตามรูปด้านล่างครับผม
เรียนสอบถามครับตามCodeด้านบนเมื่อมีการเปลี่ยน Section และมีรายการข้อมูลมากกว่าเดิม โปรแกรมก็จะลบและเพิ่มข้อมูลอัตโนมัติพร้อมทำเส้นขอบตารางทั้งหมดตามรายการที่ดึงมาแสดงในหน้ารายงานทั้งหมดใช่ไหมครับ (จากผลที่ลองวางcodeแล้วเจอปัญหา Error ผมขออนุญาตสอบถามไว้เป็นความรู้โดยอ้างอิงจากCodeครับ เผอิญผมเห็นมีกำหนดค่า Range("a5:d21").clearContents  คำสั่งนี้หมายถึงคำสั่งแรกจะเคลียร์ข้อมูลใน Cell a5:d21 ใช่ไหมครับและถ้าSection อื่นมีการดึงข้อมูลมามากกว่าช่วง Range a5:d21 การกดปุ่มดึงข้อมูลใน Section ถัดไปก็จะเคลียร์ข้อมูลทั้งหมดก่อนหน้านี้หรือเคลียร์แค่ช่วง a5:d21ครับ) 
*ถ้าหากผมนำCode ที่อาจารย์ให้มานำวางหรือใช้งานไม่ถูกจุดเป็นสาเหตุให้เกิดปัญหา Errorช่วยแนะนำผมด้วยครับ*

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 8:28 am
by logic
pro602 wrote: Fri Nov 08, 2019 5:31 am หลังจากที่ผมได้เอาCode ตามที่ท่านอาจารย์ได้แนะนำมา มันฟ้องError ตามรูปด้านล่างครับผม
เรียนสอบถามครับตามCodeด้านบนเมื่อมีการเปลี่ยน Section และมีรายการข้อมูลมากกว่าเดิม โปรแกรมก็จะลบและเพิ่มข้อมูลอัตโนมัติพร้อมทำเส้นขอบตารางทั้งหมดตามรายการที่ดึงมาแสดงในหน้ารายงานทั้งหมดใช่ไหมครับ (จากผลที่ลองวางcodeแล้วเจอปัญหา Error ผมขออนุญาตสอบถามไว้เป็นความรู้โดยอ้างอิงจากCodeครับ เผอิญผมเห็นมีกำหนดค่า Range("a5:d21").clearContents คำสั่งนี้หมายถึงคำสั่งแรกจะเคลียร์ข้อมูลใน Cell a5:d21 ใช่ไหมครับและถ้าSection อื่นมีการดึงข้อมูลมามากกว่าช่วง Range a5:d21 การกดปุ่มดึงข้อมูลใน Section ถัดไปก็จะเคลียร์ข้อมูลทั้งหมดก่อนหน้านี้หรือเคลียร์แค่ช่วง a5:d21ครับ)
*ถ้าหากผมนำCode ที่อาจารย์ให้มานำวางหรือใช้งานไม่ถูกจุดเป็นสาเหตุให้เกิดปัญหา Errorช่วยแนะนำผมด้วยครับ*
ที่ผมยกมานี้น่าจะแยกมาเขียนข้างนอกนะ เขียนรวมไปกับโค้ดแล้วอ่านยากหรืออาจจะไม่ได้อ่านเพราะคิดว่ามันเป็นโค้ด

มันผิดพลาดเพราะไม่ได้ลบคำว่า [code] ออก อันนี้ไม่ใช่ VBA เข้าใจว่าเป็นแทกส่วนเกินในช่องความเห็นฟอรัม

a5:d21 ผมเห็นว่าคือช่วงเซลล์ตัวอย่าง คุณใช้จริงถึงไหนก็กำหนดไปตามสะดวก a5:d200000 อะไรแบบนี้

ผมอ่านโค้ดแล้วไม่มีการทำเส้นตาราง ต้องทำเองครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 1:17 pm
by pro602
logic wrote: Fri Nov 08, 2019 8:28 am
pro602 wrote: Fri Nov 08, 2019 5:31 am หลังจากที่ผมได้เอาCode ตามที่ท่านอาจารย์ได้แนะนำมา มันฟ้องError ตามรูปด้านล่างครับผม
เรียนสอบถามครับตามCodeด้านบนเมื่อมีการเปลี่ยน Section และมีรายการข้อมูลมากกว่าเดิม โปรแกรมก็จะลบและเพิ่มข้อมูลอัตโนมัติพร้อมทำเส้นขอบตารางทั้งหมดตามรายการที่ดึงมาแสดงในหน้ารายงานทั้งหมดใช่ไหมครับ (จากผลที่ลองวางcodeแล้วเจอปัญหา Error ผมขออนุญาตสอบถามไว้เป็นความรู้โดยอ้างอิงจากCodeครับ เผอิญผมเห็นมีกำหนดค่า Range("a5:d21").clearContents คำสั่งนี้หมายถึงคำสั่งแรกจะเคลียร์ข้อมูลใน Cell a5:d21 ใช่ไหมครับและถ้าSection อื่นมีการดึงข้อมูลมามากกว่าช่วง Range a5:d21 การกดปุ่มดึงข้อมูลใน Section ถัดไปก็จะเคลียร์ข้อมูลทั้งหมดก่อนหน้านี้หรือเคลียร์แค่ช่วง a5:d21ครับ)
*ถ้าหากผมนำCode ที่อาจารย์ให้มานำวางหรือใช้งานไม่ถูกจุดเป็นสาเหตุให้เกิดปัญหา Errorช่วยแนะนำผมด้วยครับ*
ที่ผมยกมานี้น่าจะแยกมาเขียนข้างนอกนะ เขียนรวมไปกับโค้ดแล้วอ่านยากหรืออาจจะไม่ได้อ่านเพราะคิดว่ามันเป็นโค้ด

มันผิดพลาดเพราะไม่ได้ลบคำว่า [code] ออก อันนี้ไม่ใช่ VBA เข้าใจว่าเป็นแทกส่วนเกินในช่องความเห็นฟอรัม

a5:d21 ผมเห็นว่าคือช่วงเซลล์ตัวอย่าง คุณใช้จริงถึงไหนก็กำหนดไปตามสะดวก a5:d200000 อะไรแบบนี้

ผมอ่านโค้ดแล้วไม่มีการทำเส้นตาราง ต้องทำเองครับ
ช่วยแนะนำให้หน่อยครับ ผมลบคำว่าcodeก็เหมือนเดิมครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 7:35 pm
by snasui
:D แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 8:06 pm
by pro602
snasui wrote: Fri Nov 08, 2019 7:35 pm :D แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
ผมแนบFile มาให้แล้วครับ ผมรบกวนอาจารย์ช่วยแนะนำด้วยครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 8:17 pm
by snasui
:D Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 8:46 pm
by pro602
snasui wrote: Fri Nov 08, 2019 8:17 pm :D Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
-ขอบคุณครับอาจารย์ ผมจะเข้าไปศึกษาเพิ่มเติมครับ

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 9:13 pm
by pro602
snasui wrote: Fri Nov 08, 2019 8:17 pm :D Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
ผมได้เข้าไปศึกษาและแก้ไขตามข้อแนะนำอาจารย์เรียบร้อยแล้วครับ ติดตรงการสร้างเส้นขอบตารางช่วยแนะนำผมหน่อยครับอาจารย์

Re: ช่วยแนะนำcode VBA ดึงข้อมูลมาทำรายงานหน่อยครับ

Posted: Fri Nov 08, 2019 9:25 pm
by snasui
:D ได้เขียนมาเองแล้วหรือไม่ ถ้ายังให้ลองเขียนมาเองก่อน ติดแล้วค่อยถามกันครับ