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 ข้อเดียว ตามที่ถามน่ะครับ
ลองปรับโค๊ดใหม่ เป็น :ard:

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 มากๆครับ
:mrgreen: เล่าสู่กันฟังหน่อยได้ไหมครับ ว่าในงานมีอะไรบ้าง :mrgreen:

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 และคลังสินค้า ทั้งระบบการจัดการ การจัดเก็บ และการเบิกจ่ายสินค้า เป็นการนำเสนอเทคโนโลยี อุปกรณ์ และระบบบริหารจัดการในคลังสินค้า รวมถึงการสาธิตจำลองการทำงานเบิกจ่ายสินค้า ที่แสดงให้เห็นการเชื่อมโยงของระบบจัดเก็บ กระบวนการเบิกจ่าย และระบบซอฟท์แวร์บริการจัดการคลังสินค้า แสดงให้เห็นขั้นตอนการทำงาน การเพิ่มประสิทธิภาพงานคลังสินค้า และความอัจฉริยะของระบบจัดการคลังสินค้า ในงานจะมีการแสดงสินค้าและอุปกรณ์หลักที่ใช้งานในคลังสินค้า เช่น พาเลท รถยกและแบตเตอรี่ ระบบจัดเก็บ ระบบบาร์โค้ด ระบบพื้นคลังสินค้า ระบบการทำป้ายและสัญลักษณ์สินค้า การเคลื่อนย้ายสินค้า ประมาณนี้ครับ
ขอบคุณมากครับ เป็นผมถ้าสะดวก ก็อยากไปดูเช่นกัน โดยเฉพาะเรื่องซอฟแวร์ :thup:

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 ครับ