snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
pro602
Member
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#1
Post
by pro602 » Thu Nov 07, 2019 9:47 pm
ก่อนอื่นผมต้องขอขอบคุณพี่ๆสมาชิกและอาจารย์ทุกท่านที่สนับสนุนข้อมูลให้ผมได้นำมาศึกษาและทดลองการเขียนสูตร 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
snasui
Site Admin
Posts: 31214 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Thu Nov 07, 2019 10:20 pm
ตัวอย่าง 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
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#3
Post
by pro602 » Fri Nov 08, 2019 5:31 am
snasui wrote: Thu Nov 07, 2019 10:20 pm
ตัวอย่าง 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 (37.78 KiB) Viewed 170 times
logic
Gold
Posts: 1511 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#4
Post
by logic » 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 อะไรแบบนี้
ผมอ่านโค้ดแล้วไม่มีการทำเส้นตาราง ต้องทำเองครับ
pro602
Member
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#5
Post
by pro602 » Fri Nov 08, 2019 1:17 pm
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ก็เหมือนเดิมครับ
snasui
Site Admin
Posts: 31214 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Fri Nov 08, 2019 7:35 pm
แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
pro602
Member
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#7
Post
by pro602 » Fri Nov 08, 2019 8:06 pm
snasui wrote: Fri Nov 08, 2019 7:35 pm
แนบไฟล์ล่าสุดมาด้วยจะได้ตอบต่อไปจากนั้นครับ
ผมแนบFile มาให้แล้วครับ ผมรบกวนอาจารย์ช่วยแนะนำด้วยครับ
Attachments
Materials Issue Form 1.xlsm
(28.33 KiB) Downloaded 6 times
snasui
Site Admin
Posts: 31214 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Fri Nov 08, 2019 8:17 pm
Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ
สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
pro602
Member
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#9
Post
by pro602 » Fri Nov 08, 2019 8:46 pm
snasui wrote: Fri Nov 08, 2019 8:17 pm
Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ
สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
-ขอบคุณครับอาจารย์ ผมจะเข้าไปศึกษาเพิ่มเติมครับ
pro602
Member
Posts: 140 Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010
#10
Post
by pro602 » Fri Nov 08, 2019 9:13 pm
snasui wrote: Fri Nov 08, 2019 8:17 pm
Code มีไม่ครบครับ บรรทัดบนสุดและล่างสุดจะต้องใส่เข้าไปเอง เป็นปกติที่ผมจะไม่เขียน Code ครบทุกบรรทัดครับ
สังเกตได้ว่าบันทึก Macro แล้วบรรทัดแรกเป็นอะไร บรรทัดสุดท้ายเป็นอะไร เมื่อเขียนเข้าไปเองจะต้องครอบด้วยบรรทัดในลักษณะนั้นเช่นกัน การใช้ Code จะต้องเข้าใจพื้นฐานเหล่านี้ครับ
ผมได้เข้าไปศึกษาและแก้ไขตามข้อแนะนำอาจารย์เรียบร้อยแล้วครับ ติดตรงการสร้างเส้นขอบตารางช่วยแนะนำผมหน่อยครับอาจารย์
Attachments
Materials Issue Form 2.xlsm
(32.78 KiB) Downloaded 16 times
snasui
Site Admin
Posts: 31214 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Fri Nov 08, 2019 9:25 pm
ได้เขียนมาเองแล้วหรือไม่ ถ้ายังให้ลองเขียนมาเองก่อน ติดแล้วค่อยถามกันครับ