: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

เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
akekorn
Bronze
Bronze
Posts: 416
Joined: Wed Mar 09, 2011 5:19 pm

เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#1

Post by akekorn »

สวัสดีครับ คุณคนควน และเพื่อนสมาชิกทุกท่าน
วันนี้ผมพบปัญหาแปลก ๆ คือผมได้เขียน เมนูบาร์ ขึ้นใช้เอง excel ที่ผมใช้ในที่ทำงานเป็น 2016 แต่เกิด error คือ หากผมเปิด file นี้อย่างเดียว ปุ่ม process cognos จะไม่
เป็นอะไร ทำงานได้ปกติ แต่พอผมเปิด file ใหม่ขึ้นมา ปุ่ม process cognos จะเพิ่มขึ้นเรื่อยๆหากผมสลับไปมาระหว่าง file นี้ และ file ใหม่
แต่พอมาลองเปิดที่บ้านซึ่ีงเป็น excel 2010 กลับไม่พบปํญหาดังกล่าว และใช้งานได้ปกติ
ผมจึงอย่ากรบกวน เพื่อนสมาชิกทุกท่านช่วยอนุเคราะห์ ปัญหาที่ผมเจอมาด้วยครับ
ขอบคุณมากครับ
เอก
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#2

Post by snasui »

:D เปลี่ยนจาก Activate, Deactivate มาเป็น Open และ BeforeClose แทนตามด้านล่างครับ

Code: Select all

Private Sub Workbook_Open()
 'On Error Resume Next
    Call COGNOSoolbar
    Call COGNOSButton
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  '  On Error Resume Next
    Application.CommandBars("Analyst_Toolbar").Delete
End Sub
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#4

Post by OOjaoQQ »

ขออนุญาติผู้มีความรู้ ช่วยแนะนำ ถ้าผมจะเพิ่ม level ต่อไป จะต้องเขียน code อย่างไรครับ พยายามแกะแล้ว แต่ไม่เข้าใจ code ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#5

Post by snasui »

:D ไม่ทราบว่าเพิ่ม Level อะไร ตรงไหน อย่างไรครับ

คำอธิบายภาษาอังกฤษในไฟล์แนบเป็นการแนะนำให้เพิ่มเมนูไปที่ Quick Access Toolbar ไม่ทราบติดปัญหาตรงไหนครับ :?:
You do not have the required permissions to view the files attached to this post.
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#6

Post by OOjaoQQ »

111.jpg
ตามนี้ครับอาจารย์
You do not have the required permissions to view the files attached to this post.
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#7

Post by OOjaoQQ »

เท่าที่ผมแกะได้คือ select case case2 if next level = 3 then

Code: Select all

Sub WBCreatePopUp()
'   NOTE: There is no error handling in this subroutine

    Dim MenuSheet As Worksheet
    Dim MenuItem As Object
    Dim SubMenuItem As CommandBarButton
    Dim Row As Integer
    Dim MenuLevel, NextLevel, MacroName, Caption, Divider, FaceId

    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   Location for menu data
    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    ''''''''''''''''''''''''''''''''''''''''''''''''''''

    '   Make sure the menus aren't duplicated
    Call WBRemovePopUp

    '   Initialize the row counter
    Row = 5

    '   Add the menu, menu items and submenu items using
    '   data stored on MenuSheet

    ' First we create a PopUp menu with the name of the value in B2
    With Application.CommandBars.Add(ThisWorkbook.Sheets("MenuSheet"). _
                                     Range("B2").Value, msoBarPopup, False, True)

        Do Until IsEmpty(MenuSheet.Cells(Row, 1))
            With MenuSheet
                MenuLevel = .Cells(Row, 1)
                Caption = .Cells(Row, 2)
                MacroName = .Cells(Row, 3)
                Divider = .Cells(Row, 4)
                FaceId = .Cells(Row, 5)
                NextLevel = .Cells(Row + 1, 1)
            End With

            Select Case MenuLevel
            Case 2    ' A Menu Item
                If NextLevel = 3 Then
                    Set MenuItem = .Controls.Add(Type:=msoControlPopup)
                Else
                    Set MenuItem = .Controls.Add(Type:=msoControlButton)
                    MenuItem.OnAction = ThisWorkbook.Name & "!" & MacroName
                End If
                MenuItem.Caption = Caption
                If FaceId <> "" Then MenuItem.FaceId = FaceId
                If Divider Then MenuItem.BeginGroup = True

            Case 3    ' A SubMenu Item
                Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
                SubMenuItem.Caption = Caption
                SubMenuItem.OnAction = ThisWorkbook.Name & "!" & MacroName
                If FaceId <> "" Then SubMenuItem.FaceId = FaceId
                If Divider Then SubMenuItem.BeginGroup = True
            End Select
            Row = Row + 1
        Loop
    End With
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#8

Post by snasui »

:D Code นั้นอ้างถึงชีต (MenuSheet) ที่มีการเขียน Level ของเมนูเอาไว้ ช่วยแนบไฟล์ต้นทางมาด้วยครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#9

Post by OOjaoQQ »

ไฟลน์นี้ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#10

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

Sub WBCreatePopUp()
'   NOTE: There is no error handling in this subroutine

    Dim MenuSheet As Worksheet
    Dim MenuItem As Object
    Dim SubMenuItem As CommandBarButton
    Dim MenuItem2 As Object
    Dim SubMenuItem2 As CommandBarButton
    Dim Row As Integer
    Dim MenuLevel, NextLevel, MacroName, Caption, Divider, FaceId

    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   Location for menu data
    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    ''''''''''''''''''''''''''''''''''''''''''''''''''''

    '   Make sure the menus aren't duplicated
    Call WBRemovePopUp

    '   Initialize the row counter
    Row = 5

    '   Add the menu, menu items and submenu items using
    '   data stored on MenuSheet

    ' First we create a PopUp menu with the name of the value in B2
    With Application.CommandBars.Add(ThisWorkbook.Sheets("MenuSheet"). _
                                     Range("B2").Value, msoBarPopup, False, True)

        Do Until IsEmpty(MenuSheet.Cells(Row, 1))
            With MenuSheet
                MenuLevel = .Cells(Row, 1)
                Caption = .Cells(Row, 2)
                MacroName = .Cells(Row, 3)
                Divider = .Cells(Row, 4)
                FaceId = .Cells(Row, 5)
                NextLevel = .Cells(Row + 1, 1)
            End With
            Select Case MenuLevel
            Case 2    ' A Menu Item
                If NextLevel = 3 Then
                    Set MenuItem = .Controls.Add(Type:=msoControlPopup)
                Else
                    Set MenuItem = .Controls.Add(Type:=msoControlButton)
                    MenuItem.OnAction = ThisWorkbook.Name & "!" & MacroName
                End If
                MenuItem.Caption = Caption
                If FaceId <> "" Then MenuItem.FaceId = FaceId
                If Divider Then MenuItem.BeginGroup = True

            Case 3   ' A SubMenu Item
                Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
                SubMenuItem.Caption = Caption
                SubMenuItem.OnAction = ThisWorkbook.Name & "!" & MacroName
                If FaceId <> "" Then SubMenuItem.FaceId = FaceId
                If Divider Then SubMenuItem.BeginGroup = True
            
            Case 4    ' A Menu2 Item
                If NextLevel = 5 Then
                    Set MenuItem2 = MenuItem.Controls.Add(Type:=msoControlPopup)
                Else
                    Set MenuItem2 = MenuItem.Controls.Add(Type:=msoControlButton)
                    MenuItem.OnAction = ThisWorkbook.Name & "!" & MacroName
                End If
                MenuItem2.Caption = Caption
                If FaceId <> "" Then MenuItem2.FaceId = FaceId
                If Divider Then MenuItem2.BeginGroup = True
            Case 5   ' A SubMenu2 Item
                Set SubMenuItem2 = MenuItem2.Controls.Add(Type:=msoControlButton)
                SubMenuItem2.Caption = Caption
                SubMenuItem2.OnAction = ThisWorkbook.Name & "!" & MacroName
                If FaceId <> "" Then SubMenuItem2.FaceId = FaceId
                If Divider Then SubMenuItem2.BeginGroup = True
            End Select
            Row = Row + 1
        Loop
    End With
End Sub
และต้องปรับข้อมูลเป็นลักษณะตามด้านล่างครับ
You do not have the required permissions to view the files attached to this post.
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#11

Post by OOjaoQQ »

Level 4 ยังอยู่ใน Level 3 ครับ
You do not have the required permissions to view the files attached to this post.
Last edited by OOjaoQQ on Sat Nov 24, 2018 12:16 pm, edited 1 time in total.
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#12

Post by snasui »

:D นั่นไม่ใช่เลข Running ครับ มันคือ FaceID ถ้าไม่ต้องการให้มีก็ลบทิ้งไปครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#13

Post by OOjaoQQ »

อาจารย์ตอบเร็วมาก กำลังแก้ไขโพสต์ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#14

Post by snasui »

:D ถามใหม่ได้เลย แต่ต้องปรับ Code มาเองเสมอครับ

ก่อนหน้านี้ผมอนุโลมตอบไปก่อน ครั้งถัด ๆ มาต้องแก้เอง ติดแล้วค่อยถามกันครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#15

Post by OOjaoQQ »

มาขอความรู้อาจารย์ครับ code เดิม กับ code ที่อาจารย์ปรับแก้ให้ เมื่อนำไปใส่ แมโคร เช่น แมโคร เรียก userform แล้ว เกิดมีอาการช้าของ excel จนถึง error นั้น เกิดจาก code ตัวไหนครับ
ปัจจุบัน ผมใช้ code ตามลิงค์ที่แนบครับ
https://docs.microsoft.com/en-us/previo ... office.14)
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#16

Post by snasui »

:D ไม่สามารถตอบได้จนกว่าจะเห็นว่าเรียกใช้อย่างไร สำหรับ Code ที่นำมาถามและตาม Link ของ Microsoft เท่าที่ดูเร็ว ๆ คือ Code ของ Ron เองทั้งสองที่ครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: เขียน เมนู บน toolbar เกิด error ใน excel 2016 แต่เปิดใน excel 2010 ไม่เกิด error

#17

Post by OOjaoQQ »

ขอบคุณอาจารย์ที่ให้แนวทางครับตอนนี้จะสร้างกี่ level ก็ได้แล้วครับ
2222.jpg
You do not have the required permissions to view the files attached to this post.
Post Reply