Page 1 of 1

ขอความช่วยเหลือย่อ Code ให้สั้นลง

Posted: Tue Nov 10, 2015 10:36 pm
by piches

Code: Select all

Sub Sandto()
Dim sourceWb As Workbook
    Dim wb As Variant
    Dim source As Range
    Application.ScreenUpdating = False
    Set sourceWb = ThisWorkbook
        If Range("B5") = "" Then Exit Sub
    Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B5:E5")
    Set wb = Workbooks.Open("D:\เส้นทางเอกสาร\เส้นทางเอกสาร.xlsx", False, False)
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
    Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B6:E6")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
    Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B7:E7")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B8:E8")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B9:E9")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B10:E10")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B11:E11")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B12:E12")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B13:E13")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B14:E14")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B15:E15")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B16:E16")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B17:E17")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B18:E18")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B19:E19")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B20:E20")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B21:E21")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B22:E22")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B23:E23")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B24:E24")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B25:E25")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B26:E26")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B27:E27")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B28:E28")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
     Set source = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B29:E29")
    i = wb.Worksheets("เส้นทางเอกสาร").Columns("A:A").Find(source, LookIn:=xlValues).Row
    source.Offset(0, 4).Copy
    wb.Worksheets("เส้นทางเอกสาร").Range("E" & i).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Application.ScreenUpdating = False
    wb.Close True
    Range("B3:D3,F3:G3,I3,B5:B29").ClearContents
    MsgBox "เพิ่มข้อมูลเสร็จแล้ว"
End Sub
ผมพยายามเขียน Code วน Loop แล้วแต่ไม่สำเร็จ ผมเลยเขียน Code แบบบ้านๆให้พอใช้งานได้ก่อนครับ

Re: ขอความช่วยเหลือย่อ Code ให้สั้นลง

Posted: Wed Nov 11, 2015 7:53 pm
by snasui
:D แนบไฟล์ตัวอย่างมาด้วยพร้อมชี้ให้เห็ว่าต้องการจะทำอะไรมาด้วยครับ

Re: ขอความช่วยเหลือย่อ Code ให้สั้นลง

Posted: Wed Nov 11, 2015 9:36 pm
by piches
ไฟล์ออกไปส่งลูกค้า B5:B29 IDตรงกับไฟล์เส้นทางเอกสารใน Column A ให้ Coppy ข้อมูล F5:i29 ไปวางที่ไฟล์เส้นทางเอกสาร E:H วางตาม ID ดีครับผม

Re: ขอความช่วยเหลือย่อ Code ให้สั้นลง

Posted: Wed Nov 11, 2015 9:41 pm
by piches
Screen Shot 2558-11-11 at 21.39.50.png
Screen Shot 2558-11-11 at 21.39.50.png (50.19 KiB) Viewed 75 times

Re: ขอความช่วยเหลือย่อ Code ให้สั้นลง

Posted: Wed Nov 11, 2015 10:29 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim sourceWb As Workbook
Dim wb As Variant, rngSourceAll As Range, rngs As Range
Dim source As Range, rngTargetAll As Range
Dim rowFound As Integer

Application.ScreenUpdating = False
Set sourceWb = ThisWorkbook
If Range("B5") = "" Then Exit Sub

With sorcewb.Sheets("ออกไปส่งลูกค้า")
    Set rngSourceAll = .Range("a5", .Range("a" & .Rows.Count).End(xlUp))
End With
'Set rngSourceAll = sourceWb.Sheets("ออกไปส่งลูกค้า").Range("B5:E5")

Set wb = Workbooks.Open("D:\เส้นทางเอกสาร\เส้นทางเอกสาร.xlsx", False, False)
With wb
    Set rngTargetAll = .Range("b5", .Range("b" & .Rows.Count).End(xlUp))
End With

For Each source In rngSourceAll
    If Application.CountIf(rngTargetAll, source) > 0 Then
        rowFound = applicatoin.Match(source, rngTargetAll, 0)
        rngTargetAll(rowFound).Offset(0, 4).Resize(1, 4).Value _
            = source.Offset(0, 4).Resize(1, 4).Value
    End If
Next source