:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#1

Post by pro602 »

ก่อนอื่นผมต้องขอขอบคุณพี่ๆสมาชิกและอาจารย์ทุกท่านที่สนับสนุนข้อมูลให้ผมได้นำมาศึกษาและทดลองการเขียนสูตร Excel รวมไปถึงการเขียน vba code ซึ่งผมก็พยายามทดลองแล้วแต่ก็ยังไม่ได้ผลตามที่ต้องการ แต่ก็พอที่จะใช้งานได้บ้างก็เป็นการทำ Record Macro แต่ก็ยังติดปัญหาในกรณีของรายละเอียดหรือจำนวนของข้อมูลแต่ล่ะแผนกที่จะนำมาทำรายงานไม่เท่ากันจึงทำให้รายงานออกมาได้ไม่สมบูรณ์แบบ
จากตัวอย่างที่ผมแนบมาผมรบกวนพี่ๆและอาจารย์ช่วยเขียนVBA Code พอเป็นตัวอย่างสัก1-2sectionให้ผมหน่อยครับเผอิญผมมีความจำเป็นต้องการนำไปใช้งานจริงด่วนครับ รายล่ะเอียดรายงานที่ต้องการจะอยู๋ใน Sheet report ครับ (Fileที่ผมแนบมาผมลองทำ Record Macro ที่ Report for Section A,B และ Delete Data ครับ
Attachments
Materials Issue Form.xlsm
(31.13 KiB) Downloaded 20 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#2

Post 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
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#3

Post 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ช่วยแนะนำผมด้วยครับ*
Attachments
error.PNG
error.PNG (37.78 KiB) Viewed 172 times
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

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

#4

Post 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 อะไรแบบนี้

ผมอ่านโค้ดแล้วไม่มีการทำเส้นตาราง ต้องทำเองครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#5

Post 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ก็เหมือนเดิมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#6

Post by snasui »

:D แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#7

Post by pro602 »

snasui wrote: Fri Nov 08, 2019 7:35 pm :D แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
ผมแนบFile มาให้แล้วครับ ผมรบกวนอาจารย์ช่วยแนะนำด้วยครับ
Attachments
Materials Issue Form 1.xlsm
(28.33 KiB) Downloaded 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#8

Post by snasui »

:D Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#9

Post by pro602 »

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

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
-ขอบคุณครับอาจารย์ ผมจะเข้าไปศึกษาเพิ่มเติมครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

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

#10

Post by pro602 »

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

สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
ผมได้เข้าไปศึกษาและแก้ไขตามข้อแนะนำอาจารย์เรียบร้อยแล้วครับ ติดตรงการสร้างเส้นขอบตารางช่วยแนะนำผมหน่อยครับอาจารย์
Attachments
Materials Issue Form 2.xlsm
(32.78 KiB) Downloaded 16 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#11

Post by snasui »

:D ได้เขียนมาเองแล้วหรือไม่ ถ้ายังให้ลองเขียนมาเองก่อน ติดแล้วค่อยถามกันครับ
Post Reply