Page 1 of 1

ขอปรึกษาครับ copyข้ามsheet VBA ติดวนloopและแต่มาไม่ทั้งหมด

Posted: Fri Mar 08, 2013 5:33 pm
by lotto009
เรียนอาจาร์ยและทุกท่านครับ
ผมเขียน VBA แต่เจอปัญหามาไม่ทั้งหมดคือวน loopแล้วติดค้างนะครับ
ช่วยดูให้หน่อยนะครับ
ขอบคุณครับ
อาร์ต :roll:

Re: ขอปรึกษาครับ copyข้ามsheet VBA ติดวนloopและแต่มาไม่ทั้งห

Posted: Fri Mar 08, 2013 6:14 pm
by snasui
:D ลองปรับ Code เป็นตามนี้ครับ

Code: Select all

Sub Copy_2()
    Dim r As Range, rAll As Range
    With Sheets("Sheet1")
        Set rAll = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
    End With
    For Each r In rAll
        Select Case r.Value
            Case "UCELLCAC"
                Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp). _
                    Offset(1, 0).EntireRow = r.EntireRow.Value
            Case "UCELLHCS"
                Sheets("Sheet3").Range("A" & Rows.Count).End(xlUp). _
                    Offset(1, 0).EntireRow = r.EntireRow.Value
            Case "UCELLDRD"
                Sheets("Sheet4").Range("A" & Rows.Count).End(xlUp) _
                    .Offset(1, 0).EntireRow = r.EntireRow.Value
            Case "UCELLINTERFREQHOCOV"
                Sheets("Sheet5").Range("A" & Rows.Count).End(xlUp) _
                    .Offset(1, 0).EntireRow = r.EntireRow.Value
            Case "UCELLINTERRATHOCOV"
                Sheets("Sheet6").Range("A" & Rows.Count).End(xlUp) _
                    .Offset(1, 0).EntireRow = r.EntireRow.Value
            Case "UCELLINTRAFREQHO"
        End Select
    Next r
End Sub
จากที่ถามมานี้แสดงว่ายังไม่เข้าใจในคำตอบในกระทู้ก่อนหน้าที่ถามมา

การ Loop ตามที่ถามมานี้มีข้อจำกัดว่าจะต้องรู้ว่ามีกี่ค่าเพื่อจะนำไปวางตาม Sheet ต่าง ๆ สมมุติว่ามีเป็นหมื่นค่าก็ต้องเขียน Case กันเป็นหมื่นรอบ แต่สิ่งที่ผมแนะนำไปในกระทู้ก่อนคือ ให้หาค่า Unique มาก่อน แล้วนำค่า Unique นั้นมา Loop จะเจอกี่ค่าก็ไม่มีปัญหา เจอค่า Unique หมื่นค่าก็ Loop ใส่หมื่นชีท

หากรายการจากฐานข้อมูลมีจำนวนมาก การ Loop ลักษณะเช่น Code ด้านบนนี้จะเสียเวลามาก จะซึ่งผมแนะนำให้ใช้ Advanced Filter เข้ามาช่วย ซึ่งจะทำงานได้เร็วกว่ากันมาก

สิ่งที่ควรทราบอีกอย่างคือ การบันทึก Macro กับการเขียน VBA Code นั้นไม่เหมือนกัน การบันทึก Macro คือให้โปรแกรมสร้างรหัสมาให้ตามการกระทำของเรา แล้วค่อยนำรหัสมาประยุกต์ใช้ แต่การเขียน VBA จะต้องเขียนลงไปเอง ซึ่งประการหลังจะต้องรู้ OOP ของ Excel มาบ้าง

Re: ขอปรึกษาครับ copyข้ามsheet VBA ติดวนloopและแต่มาไม่ทั้งห

Posted: Fri Mar 08, 2013 8:26 pm
by lotto009
เรียนอาจาร์ยครับ
ขอบพระคุณมากครับกับที่แนะนำให้ทำUnique แหะแหะ ผมทำตามแบบฝึกหัดแล้วแต่ไม่ตรงเลยนะครับ เลยสับสน
:D
การ Loop ตามที่ถามมานี้มีข้อจำกัดว่าจะต้องรู้ว่ามีกี่ค่าเพื่อจะนำไปวางตาม Sheet ต่าง ๆ สมมุติว่ามีเป็นหมื่นค่าก็ต้องเขียน Case กันเป็นหมื่นรอบ แต่สิ่งที่ผมแนะนำไปในกระทู้ก่อนคือ ให้หาค่า Unique มาก่อน แล้วนำค่า Unique นั้นมา Loop จะเจอกี่ค่าก็ไม่มีปัญหา เจอค่า Unique หมื่นค่าก็ Loop ใส่หมื่นชีท :D
พออ่านเยอะแล้วมันสับสนคิดไม่ออกจริงๆ
ขอบคุณครับ
อาร์ต :D

Re: ขอปรึกษาครับ copyข้ามsheet VBA ติดวนloopและแต่มาไม่ทั้งห

Posted: Fri Mar 08, 2013 8:32 pm
by snasui
:D ควรลองทำมาทีละขั้น ติดตรงไหนก็นำมาถามกันต่อไป เช่นนี้งานถึงจะสำเร็จได้ครับ

Re: ขอปรึกษาครับ copyข้ามsheet VBA ติดวนloopและแต่มาไม่ทั้งห

Posted: Fri Mar 08, 2013 11:44 pm
by lotto009
ขอบพระคุณครับ