Page 1 of 1

VB ขึ้น Error ที่ Loop คะ

Posted: Mon Jan 14, 2013 5:29 pm
by nongnok
รบกวน Check Loop คะ ที่ ปุ่ม Control ที่ Sheet "Cal"

ตามไฟล์แนบคะ

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Mon Jan 14, 2013 6:19 pm
by nongnok
ขออธิบายคะ เมื่อครู่กำลังจะออกจากออฟฟิต จึงไม่ได้อธิบายคะ

สิ่งที่ต้องการให้โปรแกรมทำคือ Copy 2 Columns ไปไว้ Sheet ละ Column คะ โดยให้เรียงกันไปให้ได้ 1210 Columns คะ

ซึ่งตอนนี้ Copy ไปวางได้แล้วคะ แต่พอใส่การวน Loop เข้าไปก็มีปัญหาคะ ในปุ่มคำสั่งที่สร้างขึ้นมา 2 ปุ่ม ปัญหาต่างกันคะ

ปุ่ม Copy&Paste มีปัญหาที่ Loop ไม่ถึง 1210 รอบคะ ขึ้น Error ในขั้นตอนสั่งหยุดคะ
ปุ่ม Rand 2 มีปัญหา End sub ขึ้น Error คะ

รบกวนด้วยคะ พึ่งเริ่มหัดเขียน ทำโดยการดูของท่านอื่นๆ มาปรับแก้คะ หากมี Code ไหนที่ไม่จำเป็นต้องมี รบกวนใส่ " ' " ไว้ด้านหน้าได้เลยคะ

ขอบคุณคะ

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Mon Jan 14, 2013 6:43 pm
by snasui
:D ลองอธิบายขั้นตอนมาใหม่ครับว่าต้องการจะทำอะไร มีขั้นตอนการทำงานอย่างไร

สำหรับ Code ที่แนบมาได้ลอง Run ทีละ Step โดยกดแป้น F8 ดูครับ แล้วแจ้งมาว่าติดที่บรรทัดไหน

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Mon Jan 14, 2013 8:30 pm
by nongnok
ขอบคุณสำหรับคำแนะนำคะ

สิ่งที่ต้องการให้โปรแกรมทำคือ เก็บค่าในช่อง cost และ profit&lost ไปรวมกันใน Column คะ เพราะต้องนำมาวิเคราะห์ต่อไปคะ โดยข้อมูลของ Cost และ Profit&Lost จะต้องมีอย่างละ 1210 ข้อมูลคะ

โปรแกรมทำงานดังนี้คะ
1. ลบข้อมูลใน Sheet1 เนื่องจากข้อมูลที่ Copy มานั้น มาจากเลขสุ่มคะ ถ้าไม่ Copy มาในครั้งเดียวกัน ค่าของ Cost และ Profit&Lost ที่ได้จะไม่ได้มาจากเลขสุ่มตัวเดียวกันคะ ดังนั้นจึงใช้ Sheet1 เป็นที่ Paste ไว้ชั่วคราวคะ
2. Copy & Paste ข้อมูลในช่อง Cost และ Profit&Lost จาก Sheet1 ไปไว้แยก Sheet กันคะ ซึ่งในที่นี้คือ Sheet2 และ Sheet 3 คะ
3. เนื่องจากต้องการข้อมูลของ Cost และ Profit&Lost อย่างละ 1210 ข้อมูล จึงทำ Loop ให้โปรแกรม Run ให้คะ :D

เท่านี้คะที่ทำในปุ่ม Control ทั้ง 2 อันคะ เพราะได้ใส่สูตรใน Excel ไว้แล้ว จึงไม่ได้เขียนอะไรเพิ่มคะ (ได้แนบไฟล์ใหม่ที่ทำตามด้านล่างมาด้วยคะ)


และได้ทำการกด F8 ในปุ่ม Copy&Paste แล้วได้ใส่เครื่องหมาย " ' " บรรทัดที่คิดว่าไม่ได้ใช้งานด้วยคะ :D

และเมื่อ Run ถึง คำสั่งหยุดคือ If Sheets("Sheet3").Rows>1211 Then Total=Total+1 มี Error ขึ้นว่า Run-time error '7': Out of memory คะ หมายความว่า Run เยอะเกินไปหรือคะ :roll:

ปุ่มที่ 2 ชื่อ Rand 2 เมื่อ Run ไปมี Error ขึ้นว่า For without Next คะ ได้ใส่ Next j ไปแล้วคะ :tt: และได้ใส่เครื่องหมาย " ' " เช่นกันกับปุ่มแรกคะ

เมื่อ Run ไปถึง ที่เดียวกันกับปุ่มแรกคือ If Sheets("Sheet3").Rows>1211 Then มี Error ขึ้นว่า Run-time error '438': Object doesn't support this property or method คะ :?:

เมื่อถึงบรรทัดที่มี code ว่า MsgBox Total & " values higher than 1210 " มี MsgBox ขึ้นว่า 0values higher than 1210 คะ

code "Next j" ที่ใส่ไปมีปัญหาทำให้ค้างไปไม่ถึง Exd sub คะ

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Mon Jan 14, 2013 9:11 pm
by snasui
nongnok wrote:สิ่งที่ต้องการให้โปรแกรมทำคือ เก็บค่าในช่อง cost และ profit&lost ไปรวมกันใน Column คะ เพราะต้องนำมาวิเคราะห์ต่อไปคะ โดยข้อมูลของ Cost และ Profit&Lost จะต้องมีอย่างละ 1210 ข้อมูลคะ

โปรแกรมทำงานดังนี้คะ
1. ลบข้อมูลใน Sheet1 เนื่องจากข้อมูลที่ Copy มานั้น มาจากเลขสุ่มคะ ถ้าไม่ Copy มาในครั้งเดียวกัน ค่าของ Cost และ Profit&Lost ที่ได้จะไม่ได้มาจากเลขสุ่มตัวเดียวกันคะ ดังนั้นจึงใช้ Sheet1 เป็นที่ Paste ไว้ชั่วคราวคะ
2. Copy & Paste ข้อมูลในช่อง Cost และ Profit&Lost จาก Sheet1 ไปไว้แยก Sheet กันคะ ซึ่งในที่นี้คือ Sheet2 และ Sheet 3 คะ
3. เนื่องจากต้องการข้อมูลของ Cost และ Profit&Lost อย่างละ 1210 ข้อมูล จึงทำ Loop ให้โปรแกรม Run ให้คะ
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Test0()
    Dim i As Integer
    Application.Calculation = xlManual
    For i = 1 To 1210
        Sheets("Cal").Range("H1:H111").copy
        Sheets("Sheet2").Range("A1").End(xlToRight).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("I1:I111").copy
        Sheets("Sheet3").Range("A1").End(xlToRight).Offset(0, 1) _
            .PasteSpecial xlPasteValues
    Sheets("Cal").Calculate
    Next i
    Application.Calculation = xlAutomatic
End Sub

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Tue Jan 15, 2013 3:37 am
by nongnok
Run ได้แล้วคะ ขอบคุณมากคะ ^^

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Tue Jan 15, 2013 6:13 am
by nongnok
อาจารย์คะ รบกวนอีกครั้งคะ

ได้เพิ่มสิ่งที่เก็บไว้ใน Sheet อื่นอีก 2 Sheets คะ แต่ขั้น Error ที่ Sheets 2, 3 & 4 คะ Error ขึ้นเหมือนกันว่า Run-time error '1004': Application or object-defined error คะ

Code: Select all

Private Sub CommandButton3_Click()
  
    Dim i As Integer
    Application.Calculation = xlManual
    For i = 1 To 2
        Sheets("Cal").Range("a2").copy
        Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("D1:D111").copy
        'Sheets("Sheet2").Range("A1").End(xlToRight).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("H1:H111").copy
        'Sheets("Sheet3").Range("A1").End(xlToRight).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("I1:I111").copy
        Sheets("Sheet4").Range("A1").End(xlToRight).Offset(0, 1) _
            .PasteSpecial xlPasteValues
    Sheets("Cal").Calculate
    Next i
    Application.Calculation = xlAutomatic

End Sub

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Tue Jan 15, 2013 6:51 am
by snasui
:D ในการสอบถามปัญหาแล้ว สำหรับ Code ที่ใช้งานและมีปัญหาไม่ควร Mark เป็น Comment ไว้ด้านหน้าครับ หากต้องการแจ้งว่า Code ใดมีปัญหาให้ Mark Comment ไว้ด้านบน หรือ ด้านท้าย

สำหรับที่ถามมาลองปรับ Code เป็นตามด้านล่าง

Code: Select all

Sub Test0()
    Dim i As Integer
    Application.Calculation = xlManual
    For i = 1 To 2
        Sheets("Cal").Range("a2").copy
        Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("D1:D111").copy
        Sheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("H1:H111").copy
        Sheets("Sheet3").Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Range("I1:I111").copy
        Sheets("Sheet4").Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) _
            .PasteSpecial xlPasteValues
        Sheets("Cal").Calculate
    Next i
    Application.Calculation = xlAutomatic
End Sub

Re: VB ขึ้น Error ที่ Loop คะ

Posted: Tue Jan 15, 2013 8:43 am
by nongnok
ขอบคุณอาจารย์มากคะ Run และ เก็บข้อมูลได้แล้วคะ

ต้องขอโทษเรื่องเครื่องหมาย " ' " คะ เนื่องจากตอนกด F8 เพื่อตรวจสอบได้ใส่เครื่องหมายให้ผ่านตรงที่ Error ไปตรวจเช็คลำดับต่อไปคะ และตอน Copy มาไม่ได้เอาออกคะ ^^ ครั้งต่อไปจะทำตามที่อาจารย์ได้แนะนำคะ