Paano Lumikha ng Mga Pasadyang Mga Menu sa Iyong Excel Worksheet sa pamamagitan ng VBA

Ipamahagi ngayon:

Maaaring baguhin ang laso ng Excel upang umangkop sa isang partikular na trabaho. Lumilikha ang ehersisyo na ito ng mga bagong menu na tumuturo sa mga gumagamit sa mga tukoy na sheet na nauugnay sa kanilang gawain.

Sa artikulong ito, ipakikilala namin kung paano lumikha ng mga naka-customize na menu sa iyong worksheet ng Excel, tulad nito:Lumikha ng Mga Customized na Menu sa Iyong Excel Worksheet

Ipinapalagay ng artikulong ito na ang mambabasa ay ipinapakita ang Developer ribbon at pamilyar sa VBA Editor. Kung hindi, mangyaring Google "Excel Developer Tab" o "Excel Code Window".

Workbook

Ang workbook na gagamitin ay may isang bilang ng mga sheet. Iminumungkahi naming gamitin mo ang sample na nahanap dito. Parang ganito.Ang Halimbawang Workbook

Ang unang apat na sheet ay hindi gumagana, ginagamit sa pagsasanay na ito para sa mga layunin sa pag-navigate lamang.

Ang pang-limang sheet ay magtataglay ng na-customize na istraktura ng menu na partikular sa workbook na ito. Sa kasalukuyan dapat itong blangko maliban sa isang pindutan ng Pagsubok.

Idagdag ang istraktura ng Menu

Kopyahin ang sumusunod na bloke ng teksto sa cell A1 ng sheet na "MenuSheet".

Antas, Caption, Posisyon / Macro, Divider

1, at Mga Tool ng Gumagamit, 10

2, Ipakita ang Dashboard, SelectDashboard

2, Magdagdag ng bago,, TOTOO

3, Client, SelectClient

3, Lokasyon, Piliin ang Lokasyon

3, Manager, SelectManager

2, Close, CloseFile

I-format ang istraktura ng Menu

Ang data ng CSV na ito ay nagtatapos sa haligi A. Upang mai-format ito sa mga indibidwal na Excel cell, piliin ang haligi A at paggamit 'I-text sa mga haligi' nasa Tab ng data. Ang magbabawas ay magiging "kuwit".I-format ito sa Indibidwal na Mga Excel Cell

Ang nasa itaas, sa sandaling naidagdag na namin ang naaangkop na code, ay magbibigay sa amin ng antas sa antas na istraktura ng menu sa kaliwa.Ang Istraktura ng Menu na nakabatay sa Antas

Ang unang antas, sa pagsasanay na ito, ay arbitraryong inilalagay bilang ikasampung aytem sa menu bar, gaya ng makikita mo kapag ipinakita ang buong lapad ng workbook.

Paglikha at Pagwawasak sa Mga Menu

Dahil nais lamang namin ang mga bagong menu para sa tukoy na workbook na ito, lilikha at sisirain namin sila sa pagbubukas at pagsara ng workbook.

Ang code sa ibaba ay isang panimula. Ito ay gagana kapag ang workbook ay binuksan o isinara. Kopyahin ito sa isang module sa iyong workbook.

Italaga ang pindutan ng Pagsubok sa MenuSheet sa Auto_Open.

Option Explicit

Sub auto_Open()
    Call DeleteMenu
    Call CreateMenu
 End Sub
 
Sub auto_Close()
    Call DeleteMenu
End Sub

Sa ibaba, sinusuri namin ang istraktura ng aming menu nang mas malapit.Suriing Mas Malapit ang Istraktura ng aming Menu

Walang macro na na-trigger ng Magdagdag ng Bagong sapagkat wala itong pagpapaandar bukod sa bilang magulang ng mga sub-menu.

Ang ganitong uri ng istraktura ng menu ay madaling mapanatili. Magdagdag lamang ng mga bagong item sa kanilang mga macros, na may malay sa Antas ng menu.

Ang Kodigo

Idagdag ang sumusunod na VBA code sa modyul. Susuriin nito ang "MenuSheet" at lilikha ng na-customize na menu.

Sub CreateMenu()
'   Called from Auto_Open. 'NOTE: There is no error handling in this subroutine
    Dim MenuSheet As Worksheet
    Dim MenuObject As CommandBarPopup

    Dim MenuItem As Object
    Dim SubMenuItem As CommandBarButton
    Dim sRow As Integer
    Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider

    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    Call DeleteMenu

    sRow = 2 '   start row
    
'   Add menus using the structure as per the MenuSheet
    Range("A" & sRow).Select
    Do While ActiveCell > "" '****************
        With MenuSheet
            MenuLevel = .Cells(sRow, 1)
            Caption = .Cells(sRow, 2)
            PositionOrMacro = .Cells(sRow, 3)
            Divider = .Cells(sRow, 4)
            NextLevel = .Cells(sRow + 1, 1)
        End With
        
        Select Case MenuLevel
            Case 1 ' Add the top-level menu to the Worksheet CommandBar
                Set MenuObject = Application.CommandBars(1). _
                    Controls.Add(Type:=msoControlPopup, _
                    Before:=PositionOrMacro, _
                    Temporary:=True)
                MenuObject.Caption = Caption
            Case 2 ' A Menu Item
                If NextLevel = 3 Then
                    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup)
                Else
                    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
                    MenuItem.OnAction = PositionOrMacro
                End If
                MenuItem.Caption = Caption
                If Divider Then MenuItem.BeginGroup = True
            Case 3 ' A SubMenu Item
                Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
                SubMenuItem.Caption = Caption
                SubMenuItem.OnAction = PositionOrMacro
                
                If Divider Then SubMenuItem.BeginGroup = True
        End Select
        sRow = sRow + 1
        Range("A" & sRow).Select '***************************************
    Loop
    Sheets("Dashboard").Activate
End Sub

Sub DeleteMenu()
'   This sub will be executed when the workbook is closing
    Dim MenuSheet As Worksheet
    Dim sRow As Integer
    Dim Caption As String
    
    On Error Resume Next
    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    sRow = 2
    Range("A" & sRow).Select
    Do While ActiveCell > ""
        If MenuSheet.Cells(sRow, 1) = 1 Then
            Caption = MenuSheet.Cells(sRow, 2)
            Application.CommandBars(1).Controls(Caption).Delete
        End If
        sRow = sRow + 1
        Range("A" & sRow).Select
    Loop
   
    On Error GoTo 0
End Sub

Sub SelectDashboard()
    Sheets("Dashboard").Activate
End Sub
Sub SelectClient()
    Sheets("Client").Activate
End Sub

Sub SelectLocation()
    Sheets("Location").Activate
End Sub

Sub SelectManager()
    Sheets("Manager").Activate
End Sub

Sub CloseFile()
    MsgBox "Close! (write your own code in the module)"
End Sub

Subukan ang code gamit ang pindutan ng Pagsubok. Ang bagong nilikha na menu ng gumagamit ay matatagpuan sa posisyon ng menu 10, sa ilalim ng Mga Add-in.

Pag-recover sa Excel

Ang Excel ay hindi matatag sa mga oras, at nag-crash habang bukas, na nakakasira sa pinagmulan ng file. Kung saan nabigo itong makuha ang file, kapaki-pakinabang na magkaroon ng isang tool upang maayos Pinsala sa Excel kung hindi, mawawala ang lahat ng hindi na-backup na trabaho.

Panimula ng May-akda:

Si Felix Hooker ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang pagkukumpuni ng rar at mga produkto ng software sa pag-recover ng sql. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.