เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: VBComponents ปิด-เปิดใหม่แล้ว Error : Can't enter break mode at this time

  1. #1
    ananas
    Guest

    VBComponents ปิด-เปิดใหม่แล้ว Error : Can't enter break mode at this time

    สวัสดีครับ
    ผมมีปัญหาเกี่ยวกับ VBComponents ครับ
    โดยผมมี Sheet อยู่เพียงแค่ 1 ชีทครับ
    แล้วผมจะสั่งให้ VBA สร้าง Sheet ขึ้นมาตามรายการใน Array
    จากนั้น ผมก็สั่งให้เปลี่ยน CodeName ของ Sheet เป็น Sheet02,Sheet03,..ไปตามจำนวนที่เก็บใน Array ครับ
    ซึ่งตรงนี้ ก็สามารถเปลี่ยนได้ตามปกติ
    (ที่สั่งให้เปลี่ยนชื่อเพราะว่า หากไม่เปลี่ยนชื่อชีท ชีทก็จะนับเพิ่มขึ้นเองไปเรื่อยๆ จาก 1-9999 ประมาณนี้ครับ ซึ่งดูแล้ว ไม่ค่อยสวยเท่าไหร่)
    ซึ่งจาก Code ด้านล่าง นี่ถ้ารันทันที ก็จะสามารถเปลี่ยนชื่อ และรันได้ไม่มีปัญหาครับ

    แต่ปัญหาเกิดตอนที่ผมเซฟแล้วปิด แล้วเปิดขึ้นมาใหม่ครับ
    พอมีการเรียกฟังชั่นก์สร้างชีทนี้อีกครั้ง VBA จะฟ้อง Error ขึ้นมาครับ
    โดยจะฟ้องว่า Subscript out of range และหากเรากด Debug เพื่อเข้าไปดู แล้วรันต่อ
    VBA ก็จะฟ้องว่า Can't enter break mode at this time ครับ
    ซึ่งจะมี Dialog ให้กด Continue เพื่อทำงานต่อ ถ้าเรากด ก็จะทำงานได้ต่อครับ
    (มีการเช็คเครื่องหมายถูกที่ Tools>Macro>Security>Trusted Publishers>Trust access to Visual Basic Project เรียบร้อยแล้ว)

    อยากรบกวนถามว่ามีวิธีแก้ตรงนี้หรือไม่ครับ
    ที่จะทำให้ VBA ทำงานต่อทันที ไม่ต้องเข้ามาที่ Debug แล้วกด Continue ครับ

    ขอบคุณครับ
    สุรวุฒิ ชลาสินธุ์

    Code:
    Sub CreateSheet()
        Dim ws As Worksheet
        Dim i As Integer
        Dim Arr As Variant
        If Sheets.Count > 1 Then ClearSheet
        Arr = Array("2000", "3020", "3100", "3200", "3500", "3600", "3700", "3850", "6300", "6350", "6400", "6600", "6700", "6800", "6900", "8600", "8900", "9000", "9200")
        For i = 0 To UBound(Arr)
            Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
            ws.Name = Arr(i)
            ThisWorkbook.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Sheet" & Format(i + 2, "00")
        Next i
        Set ws = Nothing
        Sheets(1).Select
    End Sub

  2. #2
    อรวีร์
    Guest

    Smile

    เท่าที่ลองดูก็ไม่มีปัญหานี่คะ ลองใช้ ClearSheet( ) แบบนี้ค่ะ
    Sub ClearSheet( )
    Application.DisplayAlerts = False
    Do While Sheets.Count > 1
    Sheets(2).Delete
    Loop
    Application.DisplayAlerts = True
    End Sub

  3. #3
    ananas
    Guest
    ตรง ClearSheet ก็ไม่มีปัญหานะครับ
    เพราะผมจะมีปุ่ม command ที่ใช้เรียกฟังชั่นก์ ClearSheet ต่างหากด้วยครับ
    ซึ่งลองทดสอบเรียกเพื่อสั่งลบชีททั้งหมดก็สามารถลบได้ปกติครับ
    (VBA ไม่ยอมให้ใส่ ClearSheet() ครับ ยอมให้ใส่แค่ ClearSheet )

    แต่ปัญหาติดอยู่ที่ตอนสร้างชีทใหม่ แล้วเปลี่ยนชื่อ CodeName นี่แหละครับ
    ยังแก้ไม่หายเลยครับ :nonod:

    มีวิธีอีกไหมครับ
    ทำไมคุณ อรวีร์ ไม่เจอปัญหา
    ได้ลองปิด-เปิดใหม่หรือยังครับ
    หรือเป็นที่เครื่องผมคนเดียว :idea:

    ขอบคุณมากครับสำหรับคำแนะนำ
    ส่วนฟังชั่นก์ ClearSheet ของผม ก็ตาม Code ด้านล่างเลยครับ

    Code:
    Sub ClearSheet()
        Dim i As Integer
        Application.DisplayAlerts = False
        For i = Sheets.Count To 1 Step -1
            If Sheets(i).CodeName <> "Sheet01" Then Sheets(i).Delete
        Next i
        Application.DisplayAlerts = True
    End Sub
    โดย Sheet01 คือชีทหลักครับ

  4. #4
    อรวีร์
    Guest

    Smile

    ลองใช้แฟ้มแนบของอรวีร์ Run ดูค่ะ จะเกิด Error เหมือนกันไหม
    ถ้า Error เกิดที่บรรทัดใดค่ะ

  5. #5
    ananas
    Guest
    รันทีละขั้นตอนเลยนะครับโดยกด F8
    ก็ Error ที่บรรทัด ThisWorkbook.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Sheet" & Format(i + 2, "00")

    ตามรูปที่แนบมาเลยครับ
    ของคุณอรวีร์ ไม่เป็นอะไรเลยหรือครับ



    จากรูป ถ้ากด Continue โปรแกรมก็จะทำงานต่อได้ตามปกติเลยครับ
    และจะไม่เกิดปัญหาอีกเลย จนกว่าจะปิดแล้วเปิดใหม่ ก็จะเกิด Error เช่นเดิมครับ

  6. #6
    อรวีร์
    Guest

    Smile

    เครื่องอรวีร์ไม่ Error ถ้า Run ปกติ
    แต่ถ้า Run แบบ Step into ก็ Error เหมือนกันค่ะ แต่ไม่ใช่ Subscript out of range

  7. #7
    ananas
    Guest
    แล้วแบบนี้ผมจะทำยังไงดีครับ
    รบกวนขอคำแนะนำด้วยครับ
    หรือว่าต้อง Fix ไปตามจำนวนหน้าของ Array ที่จะสร้างเลย แล้วสั่งห้ามลบ
    แต่ไม่อยากทำแบบนั้นเลย

  8. #8
    ananas
    Guest
    ผมลองรันแบบปกติดูแล้วครับ ก็ไม่เกิด Error ขึ้นเช่นกันครับ
    แต่พอผมสร้างปุ่มที่หน้า Sheet แล้วเรียกไปที่ฟังชั่นก์ CreateSheet

    Code:
    Private Sub CommandButton1_Click()
        Module1.CreateSheet
    End Sub
    ก็ยังคงเกิด Error ขึ้นเช่นเคยครับผม

  9. #9
    ananas
    Guest
    พอดี ผมเจอว่า
    ถ้าเปิดไฟล์ขึ้นมาใหม่ แล้วกดปุ่ม command สั่ง Run จะเกิด Error ที่ว่าขึ้น

    แต่หากว่า
    ถ้าเปิดไฟล์ขึ้นมาใหม่ แล้วเปิดหน้า VBA Editor แล้วกดปุ่ม command สั่ง Run โปรแกรมจะทำงานได้ตามปกติ เลยครับ ..

    ทำยังไงดีล่ะทีนี้ :bang:

  10. #10
    อรวีร์
    Guest

    Smile

    ประเด็นน่าจะอยู่ที่ VBA Editor แสดงอยู่หรือเปล่าค่ะ
    ลองแก้ Code Sub CreateSheet() เป็นดังนี้
    Code:
    Sub CreateSheet()
        Dim ws As Worksheet
        Dim i As Integer
        Dim Arr As Variant
        Application.ScreenUpdating = False
        Application.VBE.MainWindow.Visible = True
        If Sheets.Count > 1 Then ClearSheet
        Arr = Array("2000", "3020", "3100", "3200", "3500", "3600", "3700", "3850", "6300", "6350", "6400", "6600", "6700", "6800", "6900", "8600", "8900", "9000", "9200")
        For i = 0 To UBound(Arr)
            Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
            ws.Name = Arr(i)
            ThisWorkbook.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Sheet" & Format(i + 2, "00")
        Next i
        Set ws = Nothing
        Application.VBE.MainWindow.Visible = False
        Sheets(1).Select
        Application.ScreenUpdating = True
    End Sub
    จะเห็นว่าเราเพิ่มบรรทัด
    Application.VBE.MainWindow.Visible = True
    เพื่อให้แสดง VBE Editor ชั่วคราวก่อนเปลี่ยน Sheet.CodeName

Similar Threads

  1. time consumption
    By THEERASAK in forum Excel Expert Forum Library 2012 - 2007
    Replies: 4
    Last Post: 1 Aug 2009, 15:37
  2. Error Enter
    By supatsiri_c in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 9 Apr 2009, 09:20
  3. Replies: 2
    Last Post: 15 Nov 2008, 22:20
  4. ปัญหาเกี่ยวกับ run-time error 1040 ครับ
    By yutapong in forum Excel Expert Forum Library 2012 - 2007
    Replies: 2
    Last Post: 29 Jul 2007, 20:54
  5. vb run time error 438
    By pecpys in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 26 May 2007, 22:27

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •