: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 เพื่อสร้างระบบการจัดการของเสีย

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#30

by snasui » Tue Mar 29, 2011 12:06 pm

สามารถใช้ได้ครับ แต่ต้องทำเช่นนี้กับทุกเครื่องที่ใช้ไฟล์นี้ และสามารถลบ Code สำหรับการเปิดไฟล์ออกไป ก็จะเหลือ Code ตามด้านล่างครับ

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
MsgBox "OK"
End Sub

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#29

by godman » Tue Mar 29, 2011 11:59 am

เนื่องจากว่า ผมได้ลอง RUN MACRO ในบริษํทดูปรากฏว่า เกิด error ว่า RUN TIME ERROE "9" Subscript out of range ครับ
ผมไม่รู็ว่ามันจะเป็นการยุ่งยากสำหรับพนักงานที่จบเพียง ม 6 หรือไม่ กับการที่พวกเขาต้องไปเลือกไฟล์ให้ถูกต้อง
ผมปิ้งไอเดียว่า ใน Excel มี SAVE WORKPLACE อยู่ด้วยใช่ไหมครับ ผมลองแล้ว ก็ใช้ได้นะครับสำหรับเครื่องผม เพราะมันก็เปิดทั้ง 2 ไฟล์พร้อมกันเหมือนกัน ขอความเห็นอาจารย์ด้วยครับว่ามันจะแก้ปํญหาได้ไหมครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#28

by snasui » Tue Mar 29, 2011 9:12 am

เนื่องจากเป็นการกำหนดให้ผู้ใช้งานเปิดไฟล์ที่เป็น Database ขึ้นมาก่อนครับ และอย่าลืม Share File นี้ไว้ด้วยครับ หากต้องวางค่าซ้ำ ๆ ในไฟล์เดียวกันจะต้องปรับ Code ใหม่เพื่อให้ตรวจสอบว่าไฟล์ยังไม่ได้เปิด หากเปิดอยู่แล้วก็ไม่ต้องแจ้งให้เปิดอีก หากต้องวางข้อมูลซ้ำ ๆ สำหรับผู้ใช้คนเดียวกัน ช่วยแจ้งมาด้วยครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#27

by godman » Mon Mar 28, 2011 10:36 pm

ผมกด Finish แล้วมันก็จะ Delect Exel data file ผมก็เข้าไปเลือก Folder แล้วเปิด File ที่ชื่อ Databasewastetrack ครับ ข้อมูลถึงจะมาและทำได้ครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#26

by snasui » Mon Mar 28, 2011 10:13 pm

:rz: ผม Copy Code มาไม่หมด ลองใหม่อีกทีตาม Code ด้านล่างครับ

Code: Select all

Sub RecordToDatabase()
Dim sFilename As String
Dim i As Integer
Dim k As Integer
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
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
           "Select Excel Data File")
For i = 1 To Len(sFilename)
    If Mid(sFilename, i, 1) = "\" Then
        k = i + 1
    End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
    MsgBox "This file can't paste data. Please check file name."
    Exit Sub
End If
Workbooks.Open Filename:=sFilename
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
MsgBox "OK"
End Sub

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#25

by godman » Mon Mar 28, 2011 10:12 pm

ต้องขอประทานโทษครับ ณ ตอนนี้ผมใช้ไฟล์นี้ทดสอบครบ เนืี่องจากงานจริง อยู่ที่บริษัทครับ
Attachments
DatabaseWasteTrack2011.xls
1
(203.5 KiB) Downloaded 10 times
WasteTrack ver.2011test.xls
2
(712 KiB) Downloaded 9 times

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#24

by snasui » Mon Mar 28, 2011 9:53 pm

:D ช่วยส่งไฟล์ที่เป็นตัวอย่างของงานจริงที่ Update ล่าสุดมาอีกครั้งครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#23

by godman » Mon Mar 28, 2011 9:37 pm

มัน error ครับอาจารย์ มันขึ้นว่า COMPILE ERROR VARIABLE NOT DEFINE แล้วสีเหลืองก็ระบายจุดที่ ERROE ครบ คือตรง sub recordTodatabase จะเกี่ยวกับอะไรครับ ผมก็เปิดไฟล์ 2 ไฟล์แล้ว
Sub RecordToDatabase()
Dim sFilename As String
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
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
"Select Excel Data File")
For i = 1 To Len(sFilename)
If Mid(sFilename, i, 1) = "\" Then
k = i + 1
End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
MsgBox "This file can't paste data. Please check file name."
Exit Sub
End If
Workbooks.Open Filename:=sFilename
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

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#22

by snasui » Mon Mar 28, 2011 8:16 pm

การ Share File เอาไ้ว้ก็ต้องกำหนดการ Share ด้วยทั้งไฟล์ที่ Share และ Folder ที่เก็บไฟล์ที่ Share ครับ การจะให้เปิดไฟล์ในเครื่องที่ Share สามารถเพิ่ม Code ให้ผู้ใช้งา่นเปิด File ที่เก็บ Database ขึ้นมาด้วยก็ทำได้ครับ ลองปรับ Code RecordToDatabase เป็นตามด้านล่างครับ

Code: Select all

Sub RecordToDatabase()
Dim sFilename As String
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
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
           "Select Excel Data File")
For i = 1 To Len(sFilename)
    If Mid(sFilename, i, 1) = "\" Then
        k = i + 1
    End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
    MsgBox "This file can't paste data. Please check file name."
    Exit Sub
End If
Workbooks.Open Filename:=sFilename
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
MsgBox "OK"
End Sub

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#21

by godman » Mon Mar 28, 2011 6:26 pm

อาจารย์ครับ ผมพบปัญหาขณะใช้งาน เนื่องจากโปรแกรมนี้ ผมต้อง share ให้ผู้ใช้งานที่แผนกอื่นๆ ใช้ด้วย แต่ปัญหาคือผมต้องมาเปิดไฟล์ดาต้าเบส ไว้รองรับตลอดเวลา เมื่อผมเปิดไว้แล้วปัญหาก็ยังไม่จบเพราะเครื่องอื่นเขากด Finish แล้วข้อมูลไม่มาเก็บไว้ที่ไฟล์ดาต้าเบส ผมควรทำอย่างไรครับ หัวหน้าผมแนะนำว่าควรทำอย่างไรก็ได้ให้ไฟล์ดาต้าเบสดังกล่าวนี้เปิดมาคู่กัน ในเครื่องใครเครื่องมัน คือเมื่อเปิดไฟล์ WasteTrack แล้วไฟล์ Databasewastetrack ก็เปิดมาคุ่กันเลย อย่างนี้มันจะแก้ปํญหานี้ได้ไหมครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#20

by godman » Sun Mar 27, 2011 8:47 pm

ขอบพระคุณครบ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#19

by snasui » Sat Mar 26, 2011 12:21 pm

คุณ godman ต้อง Link ค่าในฟอร์มไปไว้ในชีท Temp ใหม่ครับ

ดูตัวอย่างการ Link ตามไฟล์แนบ ซึ่งผม Link มาให้บางส่วน เพราะคุณให้ชื่อ Field ไม่เหมือนกัน เลยไม่ทราบว่า Field ต่อไปนี้ในชีท Temp คือ Field ไหนในชีท Incomplete ซึ่งได้แก่ Area, Id และ Itemno
Attachments
WasteTrack ver.2011test.xls
(747.5 KiB) Downloaded 32 times

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#18

by godman » Sat Mar 26, 2011 11:04 am

ผมพบปัญหาเนื่องจากผมไปปรับแต่งครับ
คือว่าหัวหน้าผมเขาให้ลดขั้นตอนการคีย์จาก USER ลงโดยให้ใช้ Datavalidation ใส่ข้อมูลลงไปโดยตรงแทนที่การ ไปใส่ในฟอร์มทีละรายการ ครานี้ผมไปลดคอลัมพ์ เพื่อจัดระเบียบหน้าตาใหม่ พอผมกด ปุ่ม Finish แล้วตามไปดูที่ File ที่ผมไว้เก็บข้อมูลคือ File DatabaseWasteTrack2011 ปรากฏว่าตัวเลขจำนวน หรือข้อมูลไม่ตรงกับที่ใส่ไป มันออกมาเป็ฯ 0 หลายรายการทั้งๆที่ข้อมูลในฟอร์มมี
ผมขอให้อาจารย์ช่วยดูหน่อยครับว่าเกิดจากอะไร ผมทำอะไรพลาดไปครับ ผมแนบบ 2 ไฟล์มาเพื่อดูข้อมูล ณ ปัจจุบันครับ
Attachments
WasteTrack ver.2011test.xls
ไฟล์สำหรับคีย์โดยใช้ validation ครับ แล้วข้อมูลในไฟล์ DatabaseWastetrack เป็น 0
(760 KiB) Downloaded 5 times
DatabaseWasteTrack2011.xls
ไฟล์ฐานข้อมูลที่พบปัญหา
(241.5 KiB) Downloaded 10 times

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#17

by godman » Fri Mar 25, 2011 4:10 pm

ขอบพระคุณเป็นอย่างสูงครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#16

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

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#15

by godman » Thu Mar 24, 2011 9:44 pm

ผมควรจะถามว่า แล้วผมจะประยุกต์ใช้ได้กับทุก Macro ได้ด้วยใช่ไหมครบ จากที่ผมวางข้อมูลใน sheet ผมจะเปลี่ยนรูปแบบการวางเป็นวางในไฟล์ข้อมูลใช่ไหมครับ
ผมลืมไปว่าสมมุติว่า ไฟล์ชื่อ DatabaseWasteTrack2011

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#14

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

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#13

by snasui » Thu Mar 24, 2011 8:48 pm

การให้บันทึกวันที่ เวลา ให้กรอกค่าในเซลล์เป้าหมายเป็น =Now() จากนั้นจัด Format ให้แสดงวันที่และเวลา ผมปรับไฟล์มาให้ใหม่แล้ว ลองดูตามไฟล์แนบครับ
Attachments
WasteTrack ver.2011(3).xls
(239.5 KiB) Downloaded 13 times

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#12

by godman » Thu Mar 24, 2011 7:23 pm

เป็นข้อมูลจาก Sheet Incomplete ครับผมเพื่อบันทึกข้อมูลสุดท้ายที่ผู็ใช้ยืนยันรายการโดยให้กดที่ปุ่ม Finish ครับ
อาจารย์ครับ ผมอยากให้วันที่ มันบอกเวลาที่บันทึกได้ด้วยครับ ต้องทำอย่างไรครับ

Re: ขอ Code VBA เพื่อสร้างระบบการจัดการของเสีย

#11

by snasui » Thu Mar 24, 2011 7:17 pm

เรื่องการออกแบบฟอร์มขึ้นอยู่กับความสะดวกของผู้ใช้ครับ ผมอาจจะแนะนำไม่ได้มาก

ผมได้เขียนให้สามารถเลือก Delete ได้ตามต้องการ คือ ถ้าบรรทัดไหนไม่ต้องการก็ให้ไปเลือก Deleted จาก Validation จากนั้นคลิกปุ่ม Finish โปรแกรมจะลบบรรทัดที่ไม่ต้องการทิ้งไป

สำหรับข้อมูลที่วิ่งไป Database ไม่ทราบว่าจะให้ใช้ข้อมูลจากชีท WasteRecord หรือชีท Incomplete ครับ :?:
Attachments
WasteTrack ver.2011(3).xls
(207 KiB) Downloaded 7 times

Top