Page 1 of 1
ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 11:12 am
by piches
Code: Select all
Sub sandorder()
Dim wb As Variant
Dim source As Range
Application.ScreenUpdating = False
Set sourceWb = ThisWorkbook
Set source = sourceWb.Sheets("Sheet1").Range("W1")
Set wb = Workbooks.Open("F:\DB\Production Control.xlsx", False, False)
i = wb.Worksheets("Dataromming").Range("B2:B6000").Find(source, LookIn:=xlValues).Row
source.Offset(0, 1).Copy
wb.Worksheets("Dataromming").Range("T" & i).PasteSpecial xlPasteValues
Application.CutCopyMode = False
wb.Close True
Sheets("Sheet1").Unprotect ("410036")
If Worksheets("Sheet2").Range("A12:A33").Find(Range("B9"), LookIn:=xlValues) Is Nothing Then
MsgBox "กรุณาตรวจสอบรายการอีกครั้ง!"
Else
Sheets("Sheet2").Unprotect ("410036")
i = Worksheets("Sheet2").Range("A12:A39").Find(Range("B9"), LookIn:=xlValues).Row
Worksheets("Sheet1").Range("N5:T5").Copy
Worksheets("Sheet2").Range("B" & i).PasteSpecial xlPasteValues, Transpose:=False
Application.CutCopyMode = True
Sheets("Sheet2").Protect ("410036")
i = Worksheets("Sheet1").Range("A12:A400").Find(Range("B6"), LookIn:=xlValues).Row
Worksheets("Sheet1").Rows(i).Delete
Range("B6,B9").ClearContents
Sheets("Sheet1").Protect ("410036")
Dim msheet
msheet = ActiveSheet.Name
With Worksheets(msheet)
.Protect password:="410036", DrawingObjects:=True, _
contents:=True, Scenarios:=True, _
userinterfaceonly:=True
.EnableAutoFilter = True
End With
MsgBox "ทำรายการเรียบร้อยแล้ว"
End If
End Sub
ผมไม่ค่อยมีความรู้เกี่ยวกับ VBA ใน Excel อ่านในกระทู้แล้วลองเขียนดูแต่ ติดปัญหาการทำงานของ Code ทำงานช้ามาก ขอคำแนะนำอาจารย์ในการปรับ Code ทำงานเร็วขึ้น ต้องแก้ตรงไหนบ้างครับ ขอบคุณครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 11:48 am
by bank9597
แนบไฟล์ตัวอย่างด้วยครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 12:14 pm
by piches
Code ที่ช้าอยู่ที่ ไฟล์ DY1.2 marcro ชื่อ sandorder ครับผม ขอบคุณครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 1:16 pm
by piches
username:admin
password:admin
ครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 1:30 pm
by bank9597
ผมเอามาทดสอบแล้ว ไม่ได้เจอว่าโค๊ดทำงานช้า แต่คุยว่าโค๊ดติดเออร์เออร์ครับ
ผมอยากให้คุณอธิบายขั้นตอนการทำงาน ว่าต้องทำอะไรบ้าง ก่อนหลัง แล้วเดี๋ยวผมจะช่วยปรับโค๊ดให้ใหม่ครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 3:11 pm
by piches
1.คิวผลิต จะดึงข้อมูลจาก Production Control.xlsx มาเก็บไว้ใน sheet1 โดยการป้อนมายเลขบิลที่ช่อง B6 เลือกเครื่องย้อม เพื่อคำนวนเวลาในการผลิต แล้วคลิกปุ่มเพิ่มคิว
2.การนำบิลเข้าผลิต ป้อนเลขที่บิลในช่อง B6 เลือกเครื่องย้อม แล้วคลิกปุ่มเข้าย้อม ค้นหาเลขที่บิลที่ตรงกันที่ไฟล์ Production Control.xlsx column T (วางวันที่เข้าย้อม)
ส่งข้อมูลไป Sheet2 ตามเครื่องย้อมที่ระบุ ลบแถวที่ตรงกับเลขที่บิลใน Sheet1 ที่ตรงกับ B6
3.ผลิตเสร็จ ใส่เลขที่บิลในช่อง B6 (Sheet2)แล้วคลิกปุ่มย้อมเสร็จ ค้นหาเลขที่บิลที่ตรงกันที่ไฟล์ Production Control.xlsx column T (วางวันที่เข้าย้อม) column U (วันที่ย้อมเสร็จ)
ครับผม
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 6:38 pm
by bank9597
สงสัยต้องปรับโค๊ดยาวครับ ยังไงผมกลับบ้านก่อนครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Tue Aug 25, 2015 9:36 pm
by bank9597
ผมตอบแค่ข้อ 2 ข้อเดียว ตามที่ถามน่ะครับ
ลองปรับโค๊ดใหม่ เป็น
Code: Select all
Sub sandorder()
Dim SourceWb As Workbook
Dim Wb As Workbook
Dim rTarget As Range
Dim rSource As Range
Dim rRange As Range
Dim tRange As Range
Dim tSource As Range
Dim lngCount As Long
Dim lngLastRow As Long
Application.ScreenUpdating = False
Set SourceWb = ThisWorkbook
Set rTarget = SourceWb.Sheets("Sheet1").Range("W1")
Workbooks.Open ("C:\Users\bank9597\Downloads\Production Control.xlsx")
Set Wb = Workbooks("Production Control.xlsx")
lngCount = Wb.Sheets("Dataromming").Range("B" & Rows.Count).End(xlUp).Row
Set rSource = Wb.Sheets("Dataromming").Range("B2:B" & lngCount)
For Each rRange In rSource
If rRange = rTarget Then
rRange.Offset(0, 18) = rTarget.Offset(0, 1)
End If
Next rRange
Wb.Close True
Set rSource = Nothing
Set rRange = Nothing
Set rTarget = Nothing
Set rTarget = SourceWb.Sheets("Sheet1").Range("B9")
lngCount = SourceWb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
Set rSource = SourceWb.Sheets(1).Range("B12:B" & lngCount)
For Each rRange In rSource
If rRange = rTarget Then
lngLastRow = SourceWb.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
Set tSource = SourceWb.Sheets(2).Range("A12:A" & lngLastRow)
For Each tRange In tSource
If tRange = rTarget Then
tRange.Offset(0, 1) = rRange.Offset(0, -1)
tRange.Offset(0, 2) = rRange.Offset(0, 2)
tRange.Offset(0, 3) = rRange.Offset(0, 4)
tRange.Offset(0, 4) = rRange.Offset(0, 5)
tRange.Offset(0, 5) = rRange.Offset(0, 6)
tRange.Offset(0, 6) = rRange.Offset(0, 9)
tRange.Offset(0, 7) = Now()
End If
Next tRange
rRange.EntireRow.Delete
End If
Next rRange
MsgBox "·Ó¡ÒÃÊÑè§ÂéÍÁàÃÕºÃéÍÂáÅéÇ"
Set rSource = Nothing
Set rRange = Nothing
Set rTarget = Nothing
Set tSource = Nothing
Set tRange = Nothing
Set Wb = Nothing
Set SourceWb = Nothing
End Sub
ให้เปลี่ยนที่อยู่ไฟล์ "C:\Users\bank9597\Downloads\Production Control.xlsx" ใหม่น่ะครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 8:57 am
by piches
ขอบคุณมากๆครับเมื่อวานไปงาน Intelligent Warehouse ที่เมืองทองเลยยังไม่ได้ทดสอบขออนุญาติแล้วจะมารายงานผลนะครับ ขอบคุณ คุณJoined มากๆครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 9:19 am
by piches
ทดสอบแล้ว Code ทำงานได้ดีมากครับเร็วกว่าเดิมมากเลยครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 10:16 am
by bank9597
piches wrote:ขอบคุณมากๆครับเมื่อวานไปงาน Intelligent Warehouse ที่เมืองทองเลยยังไม่ได้ทดสอบขออนุญาติแล้วจะมารายงานผลนะครับ ขอบคุณ คุณJoined มากๆครับ

เล่าสู่กันฟังหน่อยได้ไหมครับ ว่าในงานมีอะไรบ้าง

Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 3:16 pm
by piches
เป็นงานแสดงสินค้าที่เกี่ยวข้องกับอุตสาหกรรม Logistics และคลังสินค้า ทั้งระบบการจัดการ การจัดเก็บ และการเบิกจ่ายสินค้า เป็นการนำเสนอเทคโนโลยี อุปกรณ์ และระบบบริหารจัดการในคลังสินค้า รวมถึงการสาธิตจำลองการทำงานเบิกจ่ายสินค้า ที่แสดงให้เห็นการเชื่อมโยงของระบบจัดเก็บ กระบวนการเบิกจ่าย และระบบซอฟท์แวร์บริการจัดการคลังสินค้า แสดงให้เห็นขั้นตอนการทำงาน การเพิ่มประสิทธิภาพงานคลังสินค้า และความอัจฉริยะของระบบจัดการคลังสินค้า ในงานจะมีการแสดงสินค้าและอุปกรณ์หลักที่ใช้งานในคลังสินค้า เช่น พาเลท รถยกและแบตเตอรี่ ระบบจัดเก็บ ระบบบาร์โค้ด ระบบพื้นคลังสินค้า ระบบการทำป้ายและสัญลักษณ์สินค้า การเคลื่อนย้ายสินค้า ประมาณนี้ครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 3:46 pm
by bank9597
piches wrote:เป็นงานแสดงสินค้าที่เกี่ยวข้องกับอุตสาหกรรม Logistics และคลังสินค้า ทั้งระบบการจัดการ การจัดเก็บ และการเบิกจ่ายสินค้า เป็นการนำเสนอเทคโนโลยี อุปกรณ์ และระบบบริหารจัดการในคลังสินค้า รวมถึงการสาธิตจำลองการทำงานเบิกจ่ายสินค้า ที่แสดงให้เห็นการเชื่อมโยงของระบบจัดเก็บ กระบวนการเบิกจ่าย และระบบซอฟท์แวร์บริการจัดการคลังสินค้า แสดงให้เห็นขั้นตอนการทำงาน การเพิ่มประสิทธิภาพงานคลังสินค้า และความอัจฉริยะของระบบจัดการคลังสินค้า ในงานจะมีการแสดงสินค้าและอุปกรณ์หลักที่ใช้งานในคลังสินค้า เช่น พาเลท รถยกและแบตเตอรี่ ระบบจัดเก็บ ระบบบาร์โค้ด ระบบพื้นคลังสินค้า ระบบการทำป้ายและสัญลักษณ์สินค้า การเคลื่อนย้ายสินค้า ประมาณนี้ครับ
ขอบคุณมากครับ เป็นผมถ้าสะดวก ก็อยากไปดูเช่นกัน โดยเฉพาะเรื่องซอฟแวร์

Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 5:50 pm
by piches
ขอนอกเรื่องนิดนึงนะครับคุณ bank9597 ถ้าใช้ Access ทำจะดีกว่านี้หรือเปล่าครับ ผมเจอปัญหาใช้ ฐานข้อมูลรวมกันถ้าเซฟข้อมูลชนกันก็จะ error ถ้าผมแชร์ workbooksไฟล์ฐานข้อมูลก็จะช้าครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Thu Aug 27, 2015 5:59 pm
by bank9597
piches wrote:ขอนอกเรื่องนิดนึงนะครับคุณ bank9597 ถ้าใช้ Access ทำจะดีกว่านี้หรือเปล่าครับ ผมเจอปัญหาใช้ ฐานข้อมูลรวมกันถ้าเซฟข้อมูลชนกันก็จะ error ถ้าผมแชร์ workbooksไฟล์ฐานข้อมูลก็จะช้าครับ
ถ้าเราใช้งานเป็นแบบระบบฐานข้อมูล Access เหมาะกว่า Excel แน่นอนครับ เราสามารถสร้างฟังก์ชั่นได้ง่ายกว่าและทำงานได้ดีกว่ากับข้อมูลปริมาณเยอะ รวมถึงสร้างใช้งานได้พร้อมกันหลาย user ไม่มีปัญหาการบันทึกข้อมูลมาชนกัน เราสามารถเอาไฟล์ตัวที่เก็บข้อมูลไปเก็บไว้ในเวิร์ฟเวอร์กลาง และลิงค์ตารางไปยังระบบที่ติดตั้งในเครื่อง user แต่ละคนได้อย่างสะดวกสบายครับ
ตอนนี้ผมดูแลและพัฒนาระบบด้วย MS Access อยู่ครับ และก็จะใช้ Excel แค่การคำนวนที่ซับซ้อนและปริมาณน้อยๆเท่านั้นครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Fri Aug 28, 2015 8:59 am
by piches
คุณbank9597พอจะมีเวลาที่รับงานเพิ้มอีกมั้ยครับผมไม่มีความรู้เรื่องAccessเลย ถ้าคุณbank9597พอมีเวลาผมขอเบอร์ติดต่อด้วยครับ
Re: ปรับ Code ให้ทำงานเร็วขึ้นต้องแก้ไขยังไงครับ
Posted: Fri Aug 28, 2015 11:23 am
by bank9597
piches wrote:คุณbank9597พอจะมีเวลาที่รับงานเพิ้มอีกมั้ยครับผมไม่มีความรู้เรื่องAccessเลย ถ้าคุณbank9597พอมีเวลาผมขอเบอร์ติดต่อด้วยครับ
รบกวนติดต่อใน Private Message ครับ