:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#1

Post by nongnok »

รบกวน Check Loop คะ ที่ ปุ่ม Control ที่ Sheet "Cal"

ตามไฟล์แนบคะ
You do not have the required permissions to view the files attached to this post.
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#2

Post by nongnok »

ขออธิบายคะ เมื่อครู่กำลังจะออกจากออฟฟิต จึงไม่ได้อธิบายคะ

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

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

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

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

ขอบคุณคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#3

Post by snasui »

:D ลองอธิบายขั้นตอนมาใหม่ครับว่าต้องการจะทำอะไร มีขั้นตอนการทำงานอย่างไร

สำหรับ Code ที่แนบมาได้ลอง Run ทีละ Step โดยกดแป้น F8 ดูครับ แล้วแจ้งมาว่าติดที่บรรทัดไหน
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#4

Post 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 คะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#5

Post 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
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#6

Post by nongnok »

Run ได้แล้วคะ ขอบคุณมากคะ ^^
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#7

Post 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
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#8

Post 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
nongnok
Member
Member
Posts: 33
Joined: Sat Dec 08, 2012 9:36 am

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

#9

Post by nongnok »

ขอบคุณอาจารย์มากคะ Run และ เก็บข้อมูลได้แล้วคะ

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