snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#1
Post
by godman » Mon Mar 21, 2011 6:48 pm
สวัสดีครับ อาจารย์ ผมได้รับมอบกหมายให้ดูแลระบบการจัดการของเสียในบริษัทแห่งหนึ่ง และผมอยากทำโปรแกรมการจัดการของเสียโดยใช้ Excel ปล เพราะผมทำโปรแกรมอื่นไม่เก่ง
ผมแนบไฟล์ที่ผมกำลังทำอยู่มาขอความช่วยเหลือครับ
ความต้องการครับ
1. ให้ผู้ใช้กด ADD เพื่อเพิ่มรายการที่จะบันทึกข้อมูลของเสียแล้วมันก็จะ link ไปหน้า WasteRecord ครับ
2.เมื่อผู้ใช้บันทึกจบกระบวนการทุกช่องแล้ว ให้ผู้ใช้กด OK แล้วผมอยากให้ แถวที่ 14 มันลดมา 1 แถวตาม
ปริมาณข้อมูลของผู้ใช้ครับ ผมต้องเขียน Macro อย่างไรครับ โดยคำว่า Deleted ก็ต้องมาด้วย
คำตอบ น่าจะประมาณนี้
ผมมีตัวอย่างสิ่งที่เป็นความต้องการอยู่ในไฟล์แนบครับ
รบกวนอาจารย์ด้วยครับ ผมหวังว่าสิ่งนี้เป็นประโยชน์สำหรับผู้ที่อยากนำไปใช้งานต่อด้วย และส่งผมต่อการจัดการสิ่งแวดล้อมของทุกบริษัทด้วยครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Mon Mar 21, 2011 7:23 pm
ช่วยทำตัวอย่างการกรอกข้อมูลมาให้ดูสักตัวอย่างครับว่ากรอกข้อมูลช่องไหนบ้าง
กรณีไม่ได้บันทึกลงฐานข้อมูล แต่ให้ไปแสดงอีก Worksheet แบบรายการเดียว ไม่จำเป็นต้องใช้ Macro ครับ ใช้การ Link ธรรมดาก็พอ
และหากกดแป้น Delete ต้องการให้ Clear ข้อมูลที่ไหนครับ
ปกติการกดแป้น Add ควรจะบันทึกลงฐานข้อมูล และหากเราบันทึกแล้วพบว่าไม่ถูกต้องสามารถกดแป้น Delete เพื่อลบรายการนั้นทิ้ง
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#3
Post
by godman » Mon Mar 21, 2011 7:43 pm
1.ข้อมูลที่จะกรอกคือข้อมูลที่อยู่ชี้ต Waste Record Cell D7,D8,D9,D11,D12,D13 โดยให้ผู้ใช้เลือกจาก DropDown list ที่กำหนดให้ยกเว้นช่อง QTY ช่องเดียวที่ต้อง fill in by manual ครับ ปล ผู้ใช้เมื่อกด Add ซึ่งผมจะทำ hyperlink ไว้ไปที่ชี้ต Waste record
2.ใช่ครับ การ ADD ต้องทำลงฐานข้อมูล ผมลืมไปผมทำ sheet ชื่อ Database เพิ่มแล้วครับ
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#4
Post
by godman » Mon Mar 21, 2011 7:45 pm
อาจารย์ครับ ผมอาจจะปิดเนตประมาณชั่วโมงนะครับ เพราะจะกลับบ้านซึ่งใช้เวลาเดินทางประมาณ 1 ชั่วโมงจากที่ทำงาน แล้วผมจะเปิดหาอาจารย์อีกตอนประมาณ 3 ทุ่ม ครับ ถ้าอาจารญ์ยังไม่นอนนะ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#5
Post
by snasui » Mon Mar 21, 2011 8:30 pm
ผมเขียน Macro มาให้ตามไฟล์แนบครับ เรื่องการลดบรรทัดมา 1 แถวคงต้องแจ้งมาอีกรอบจากไฟล์นี้ครับว่าต้องการให้ลบบรรทัดไหน อย่างไร
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#6
Post
by godman » Wed Mar 23, 2011 2:57 pm
ผมลองกดที่ Add มันขึ้น error ตรง false ครับ
Sub PasteData()
Dim rs As Range
Dim rt As Range
Set rs = Worksheets("Temp").Range("A2:F2")
Set rt = Worksheets("Database").Range("65536").End(xlUp) _
.Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Application.CutCopyMode = fasle
End Sub
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#7
Post
by godman » Wed Mar 23, 2011 3:46 pm
ต้องขออภัยครับ ที่ผมถามคำถามไม่เคลียร์ ผมได้แก้ไขความต้องการของผมให้ชัดเจนขึ้น
โดยผมอยากให้กด OK แล้วข้อมูลที่กรอกจะไปโผล่ที่ชี้ต Incomplete แต่ว่าบรรทัดต้องเลื่อนลง 1 บรรทัดไปเรื่อยๆตามแต่จะกด OK กี่ครั้งแต่มีข้อแม้ว่า ปุ่ม Hyperlink Add และ Macor Deleted ต้องขยับตาม เพื่อรอท่าให้พร้อมกดจะลบหรือไม่หรือยืนยัน ก็กด Finish ครับเพื่อบันทึกข้อมูลทั้งหมดทุกรายการที่เลือก ครับผม
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Wed Mar 23, 2011 8:03 pm
ผมทำเพิ่มมาให้แล้ว ดูตามไฟล์แนบครับ
สำหรับปุ่ม Add และ Delete ในชีท Incomplete ต้องการให้ทำอะไรครับ
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#9
Post
by godman » Wed Mar 23, 2011 9:47 pm
อ๋อ สำหรับปุ่ม ADD ผมเอาไว้เพื่อให้ User ที่ต้องการเพิ่มรายการก็กด ADD แล้ว ADD ก็จะพาเราไปยง sheet Wasterecord เพื่อใส่รายการของเสียที่จะเพิ่ม (กำหนดให้เพิ่มทีละรายการ)
ส่วน Delete คือถ้าข้อมูลที่เพิ่มมาแล้วต้องการแก้ไข หรือไม่เอา ก็ให้กด Delete แถวน้นทิ้งไปครับ
ผมคิดว่าผมลอกโปรแกรมอื่นที่เขาไม่ได้ใช้ Excel เขียนมาก็เลยดูแปลกๆ ขอคำแนะนำของอาจารย์ด้วยครบว่าควรจะ ADAPT อย่างไรที่เหมาะสมครบ
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#10
Post
by godman » Thu Mar 24, 2011 6:42 pm
อาจารย์ครับ ผมลองใช้แล้ว ปุ่ม Macro OK หน้า Wasterecord ใช้ได้ครับ มันสามารถนำข้อมูลมาต่อกันไปได้เรื่อยๆ ขอย้ำว่า เรื่อยๆ แต่ว่าของผมถ้า User หยุดเพิ่มรายการแล้ว ทำอย่างไรดีครับ
เขาจะต้องกดปุ่ม Finish เพื่อบันทึกข้อมลหน้า Incomplete ข้อมูลครับMacro บันทึกต้องเขียนอย่างไรครับ
แล้วเมื่อบรรทึกข้อมูลแล้ว จะ Clear เพื่อกลับไปสู่สภาพเดิมเพื่อรอคนอื่นมาคีย์ ต้องสร้างปุ่ม Delete ทั้งหมดต้องเขียนอย่างไรครับ
พอดี Macro Deleted ของผมมีปัญหา Bug ครับ
คำถามสุดท้่ายครับ ผมอยากให้ วันที่ มีเวลาแสดงด้วย ระดับ ชั่ว โมง นาที ทำอย่าไรครับ เช่น 12-3-2011 16:00 จะต้องเซ็ตอย่างไรใน Date Time Format หรือไม่อย่างไรครับ
ขอบพระคุณครับ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Thu Mar 24, 2011 7:17 pm
เรื่องการออกแบบฟอร์มขึ้นอยู่กับความสะดวกของผู้ใช้ครับ ผมอาจจะแนะนำไม่ได้มาก
ผมได้เขียนให้สามารถเลือก Delete ได้ตามต้องการ คือ ถ้าบรรทัดไหนไม่ต้องการก็ให้ไปเลือก Deleted จาก Validation จากนั้นคลิกปุ่ม Finish โปรแกรมจะลบบรรทัดที่ไม่ต้องการทิ้งไป
สำหรับข้อมูลที่วิ่งไป Database ไม่ทราบว่าจะให้ใช้ข้อมูลจากชีท WasteRecord หรือชีท Incomplete ครับ
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#12
Post
by godman » Thu Mar 24, 2011 7:23 pm
เป็นข้อมูลจาก Sheet Incomplete ครับผมเพื่อบันทึกข้อมูลสุดท้ายที่ผู็ใช้ยืนยันรายการโดยให้กดที่ปุ่ม Finish ครับ
อาจารย์ครับ ผมอยากให้วันที่ มันบอกเวลาที่บันทึกได้ด้วยครับ ต้องทำอย่างไรครับ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#13
Post
by snasui » Thu Mar 24, 2011 8:48 pm
การให้บันทึกวันที่ เวลา ให้กรอกค่าในเซลล์เป้าหมายเป็น =Now() จากนั้นจัด Format ให้แสดงวันที่และเวลา ผมปรับไฟล์มาให้ใหม่แล้ว ลองดูตามไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#14
Post
by godman » Thu Mar 24, 2011 9:40 pm
ขอบพระคุณเป็นอย่างสูงครับ ใช้ได้ดีมากครับ ผมมีคำถามจากผู้จัดการผม เขาต้องการให้ผม PasteData ไปวางไว้อีก ไฟล์ต่างหาก เขาบอกว่าไฟล์ที่ผมใช้อยู่ใหญ๋เกิดไป และทำให้เปิดช้า ผมอยากทราบว่าผมต้องแก้ไขหรือเพิ่มเติม สูตร Macor ตรงใหนบ้างครับ เช่สตามตัวอย่างนี้
Sub RecordToDatabase()
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
End Sub
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#15
Post
by godman » Thu Mar 24, 2011 9:44 pm
ผมควรจะถามว่า แล้วผมจะประยุกต์ใช้ได้กับทุก Macro ได้ด้วยใช่ไหมครบ จากที่ผมวางข้อมูลใน sheet ผมจะเปลี่ยนรูปแบบการวางเป็นวางในไฟล์ข้อมูลใช่ไหมครับ
ผมลืมไปว่าสมมุติว่า ไฟล์ชื่อ DatabaseWasteTrack2011
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#16
Post
by snasui » Thu Mar 24, 2011 10:35 pm
ผมปรับ Code มาให้ตามด้านล่างครับ ไฟล์ที่จะนำข้อมูลไปวางต้องมีชีทชื่อว่า Database อยู่ด้วยนะครับ นอกจากนี้ต้องเปิดไฟล์เป้าหมายไว้ด้วยครับ
Code: Select all
Sub RecordToDatabase()
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
Set rt = Workbooks("DatabaseWasteTrack2011.xls").Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
End Sub
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#17
Post
by godman » Fri Mar 25, 2011 4:10 pm
ขอบพระคุณเป็นอย่างสูงครับ
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#18
Post
by godman » Sat Mar 26, 2011 11:04 am
ผมพบปัญหาเนื่องจากผมไปปรับแต่งครับ
คือว่าหัวหน้าผมเขาให้ลดขั้นตอนการคีย์จาก USER ลงโดยให้ใช้ Datavalidation ใส่ข้อมูลลงไปโดยตรงแทนที่การ ไปใส่ในฟอร์มทีละรายการ ครานี้ผมไปลดคอลัมพ์ เพื่อจัดระเบียบหน้าตาใหม่ พอผมกด ปุ่ม Finish แล้วตามไปดูที่ File ที่ผมไว้เก็บข้อมูลคือ File DatabaseWasteTrack2011 ปรากฏว่าตัวเลขจำนวน หรือข้อมูลไม่ตรงกับที่ใส่ไป มันออกมาเป็ฯ 0 หลายรายการทั้งๆที่ข้อมูลในฟอร์มมี
ผมขอให้อาจารย์ช่วยดูหน่อยครับว่าเกิดจากอะไร ผมทำอะไรพลาดไปครับ ผมแนบบ 2 ไฟล์มาเพื่อดูข้อมูล ณ ปัจจุบันครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#19
Post
by snasui » Sat Mar 26, 2011 12:21 pm
คุณ godman ต้อง Link ค่าในฟอร์มไปไว้ในชีท Temp ใหม่ครับ
ดูตัวอย่างการ Link ตามไฟล์แนบ ซึ่งผม Link มาให้บางส่วน เพราะคุณให้ชื่อ Field ไม่เหมือนกัน เลยไม่ทราบว่า Field ต่อไปนี้ในชีท Temp คือ Field ไหนในชีท Incomplete ซึ่งได้แก่ Area, Id และ Itemno
You do not have the required permissions to view the files attached to this post.
godman
Silver
Posts: 643 Joined: Mon Jul 05, 2010 6:18 pm
#20
Post
by godman » Sun Mar 27, 2011 8:47 pm
ขอบพระคุณครบ