Page 1 of 1

ช่วยแก้ marco ให้หน่อยครับ

Posted: Fri May 20, 2011 11:37 am
by sc201105
เรียนอาจารย์
ผมรบกวนช่วยดู marco ให้หน่อยครับ เนื่องจากมันฟ้อง error จะแก้ไขอย่างไร โดยมีรายละเีอียดดังนี้
1. มี sheet ตั้งต้นชื่อ source ตาม file แนบ
2. ผมต้องการ copy ข้อมูลทั้งหมด ที่ column remark ที่มีค่าเป็น "Sale" ไปไว้ที่ sheet ชื่อ sale_data
3. ผมเขียน marco และสร้างปุ่ม เพื่อกดให้ทำการ copy ข้อมูลดังกล่าวไปไว้ปรากฎว่ามันฟ้อง error ไม่ทราบว่าจะแก้ไขตรงไหน โดย marco ที่เขียนนี้จะฟ้อง error เมื่อมีจำนวนแถวของข้อมูลประมาณ 50000 แถว จะไม่สามารถทำงานได้โดยจะฟ้อง error ตามข้อความข้างล่างนี้
runtime error 6
overflow
จะทำอย่างไรให้สามารถ run ข้อมูลที่เกิน 50000 แถว หรือมากกว่านี้ได้หรือเปล่าครับ
4. ผมขออภัยต้อง zip file เนื่องจากมันมีขนาดใหญ่เกินครับผม โดยต้องรบกวนอาจารย์ช่วย copy ข้อมูลเพิ่มให้เป็น 50000 แถว แล้วจะเกิด error ตามที่ผมบอกใน file แนบมานี้ ต้องขออภัยที่ไม่ได้ทำให้จนครบ 50000 แถว เนื่องจากไม่สามารถจัดส่ง file ได้ครับผม

รบกวนอาจารย์ช่วยดูและแก้ไขให้หน่อยครับ และหากผมนำไปใช้กับ excel 2007 จะได้หรือเปล่า เนื่องจาก row อาจจะมีการเพิ่มมากกว่า 65536 rows

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

Re: ช่วยแก้ marco ให้หน่อยครับ

Posted: Fri May 20, 2011 2:02 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub saledata()
Dim a As Long
Dim r As Range
Application.ScreenUpdating = False
a = Worksheets("source").Range("d65536").End(xlUp).Row
    Do
        If Worksheets("source").Cells(a, "d") = "Sale" Then
            Set r = Worksheets("sale_data").Range("a65536") _
                .End(xlUp).Offset(1, 0)
            Worksheets("source").Cells(a, "d").EntireRow.Copy
            r.PasteSpecial xlPasteValues
        End If
        a = a - 1
    Loop Until a = 1
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Finish Copy Data"
End Sub
หากนำไปใช้กับ Excel 2007 ขึ้นไปสามารถปรับ 65536 เป็นเลขใด ๆ ที่รองรับข้อมูลได้แต่ไม่เกินจำนวนบรรทัดของโปรแกรมครับ

Re: ช่วยแก้ marco ให้หน่อยครับ

Posted: Fri May 20, 2011 2:37 pm
by sc201105
Run ได้เรียบร้อยแล้วครับ ขอบพระคุณมากครับอาจารย์