Πώς να δημιουργήσετε προσαρμοσμένα μενού στο φύλλο εργασίας του Excel μέσω VBA

Κοινή χρήση τώρα:

Η κορδέλα Excel μπορεί να τροποποιηθεί ώστε να ταιριάζει σε μια συγκεκριμένη εργασία. Αυτή η άσκηση δημιουργεί νέα μενού που οδηγούν τους χρήστες σε συγκεκριμένα φύλλα που σχετίζονται με την εργασία τους.

Σε αυτό το άρθρο, θα παρουσιάσουμε πώς να δημιουργείτε προσαρμοσμένα μενού στο φύλλο εργασίας σας στο Excel, όπως αυτό:Δημιουργία προσαρμοσμένων μενού στο φύλλο εργασίας σας στο Excel

Αυτό το άρθρο προϋποθέτει ότι ο αναγνώστης έχει εμφανιστεί την κορδέλα προγραμματιστή και είναι εξοικειωμένος με τον επεξεργαστή VBA. Εάν όχι, παρακαλώ "Google Tab Developer Excel" ή "Excel Code Window" της Google.

Βιβλίο εργασίας

Το βιβλίο εργασίας που θα χρησιμοποιηθεί έχει έναν αριθμό φύλλων. Σας προτείνουμε να χρησιμοποιήσετε το δείγμα που βρίσκεται εδώ. Μοιάζει με αυτό.Το Δείγμα Βιβλίο Εργασίας

Τα τέσσερα πρώτα φύλλα είναι δυσλειτουργικά, χρησιμοποιούνται σε αυτήν την άσκηση μόνο για σκοπούς πλοήγησης.

Το πέμπτο φύλλο θα περιέχει την προσαρμοσμένη δομή μενού ειδικά σε αυτό το βιβλίο εργασίας. Προς το παρόν θα πρέπει να είναι κενό, εκτός από ένα κουμπί Test.

Προσθέστε τη δομή του μενού

Αντιγράψτε το ακόλουθο μπλοκ κειμένου στο κελί A1 του φύλλου "MenuSheet".

Επίπεδο, λεζάντα, θέση / μακροεντολή, διαχωριστικό

1, & Εργαλεία χρήστη, 10

2, Εμφάνιση πίνακα ελέγχου, επιλογή πίνακα ελέγχου

2, Προσθήκη νέου, TRUE

3, Client, SelectClient

3, Τοποθεσία, SelectLocation

3, Manager, SelectManager

2, Κλείσιμο, Κλείσιμο αρχείου

Διαμορφώστε τη δομή του μενού

Αυτά τα δεδομένα CSV καταλήγουν στη στήλη A. Για να τα μορφοποιήσετε σε μεμονωμένα κελιά Excel, επιλέξτε τη στήλη A και χρησιμοποιώντας "Κείμενο σε στήλες" στο Καρτέλα δεδομένων. Ο οριοθέτης θα ήταν «κόμμα».Διαμορφώστε το σε μεμονωμένα κελιά Excel

Τα παραπάνω, μόλις προσθέσουμε τον κατάλληλο κωδικό, θα μας δώσουν τη δομή μενού με βάση το επίπεδο στα αριστερά.Η δομή μενού βάσει επιπέδου

Το πρώτο επίπεδο, σε αυτήν την άσκηση, είναι διαιτησίαrarily τοποθετείται ως το δέκατο στοιχείο στη γραμμή μενού, όπως θα δείτε πότε εμφανίζεται το πλήρες πλάτος του βιβλίου εργασίας.

Δημιουργία και καταστροφή μενού

Δεδομένου ότι θέλουμε μόνο τα νέα μενού για αυτό το συγκεκριμένο βιβλίο εργασίας, θα τα δημιουργήσουμε και θα τα καταστρέψουμε κατά το άνοιγμα και το κλείσιμο του βιβλίου εργασίας.

Ο παρακάτω κώδικας είναι ωςtarτ. Θα ενεργοποιηθεί όταν το βιβλίο εργασίας ανοίξει ή κλείσει. Αντιγράψτε το σε μια ενότητα στο βιβλίο εργασίας σας

Αντιστοιχίστε το κουμπί Δοκιμή στο Μενού Φύλλο στο Αυτόματο_Άνοιγμα.

Option Explicit

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

Παρακάτω, εξετάζουμε τη δομή του μενού μας πιο προσεκτικά.Εξετάστε πιο προσεκτικά τη δομή του μενού μας

Δεν ενεργοποιείται μακροεντολή από Προσθήκη γιατί δεν έχει άλλη λειτουργία παρά ως γονέας υπο-μενού.

Αυτό το είδος δομής μενού είναι εύκολο να διατηρηθεί. Απλώς προσθέστε νέα στοιχεία με τις μακροεντολές τους, έχοντας επίγνωση του επιπέδου μενού.

Ο Κώδικας

Προσθέστε τον ακόλουθο κώδικα VBA στη λειτουργική μονάδα. Αυτό θα εξετάσει το "MenuSheet" και θα δημιουργήσει το προσαρμοσμένο μενού.

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

Ελέγξτε τον κωδικό με το κουμπί Δοκιμή. Το μενού χρήστη που δημιουργήθηκε πρόσφατα θα βρεθεί στη θέση του μενού 10, στην ενότητα Πρόσθετα.

Ανάκτηση Excel

Το Excel είναι ασταθές κατά καιρούς και διακόπτεται ενώ είναι ανοιχτό, καταστρέφοντας το αρχείο προέλευσης. Όταν δεν μπορεί να ανακτήσει το αρχείο, είναι χρήσιμο να υπάρχει ένα εργαλείο για την επιδιόρθωση Βλάβη στο Excel Διαφορετικά, όλες οι εργασίες χωρίς υποστήριξη θα είναι lost.

Εισαγωγή συγγραφέα:

Ο Felix Hooker είναι ειδικός στην ανάκτηση δεδομένων DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων επισκευή rar και sql προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.