Sommario:
- Aggiunta di un nuovo elemento al menu di scelta rapida Cell
- Cosa c'è di diverso in Excel 2013 ed Excel 2016?
Video: EM118 Scorciatoie con la tastiera 40 esempi tasti scelta rapida Excel 2025
Prima di Excel 2007, i programmatori VBA utilizzavano l'oggetto CommandBar per creare menu personalizzati, barre degli strumenti personalizzate e menu di scelta rapida personalizzati (tasto destro del mouse). A partire da Excel 2007, l'oggetto CommandBar si trova in una posizione piuttosto strana. Se scrivi il codice per personalizzare un menu o una barra degli strumenti, Excel intercetta quel codice e ignora molti dei tuoi comandi.
Invece di mostrare il tuo perfezionato miglioramento dell'interfaccia, Excel 2007 (come le versioni successive) scarica semplicemente i menu e le barre degli strumenti personalizzati in una scheda Ribbon catch-all denominata Componenti aggiuntivi.
Le personalizzazioni di menu e barra degli strumenti si ritrovano nei componenti aggiuntivi → Comandi di menu o Componenti aggiuntivi → Barra degli strumenti personalizzata. Ma la personalizzazione dei menu di scelta rapida (che utilizza anche l'oggetto CommandBar) funziona ancora come sempre: beh, una specie di.
Bottom line? L'oggetto CommandBar non è più molto utile, ma rimane l'unico modo per personalizzare i menu di scelta rapida.
Aggiunta di un nuovo elemento al menu di scelta rapida Cell
Di seguito, troverai un codice di esempio che aggiunge un nuovo elemento al menu di scelta rapida che appare quando fai clic con il tasto destro su una cella. Dovresti essere in grado di adattare questi esempi alle tue esigenze.
È possibile migliorare l'utilità Change Case un po 'rendendola disponibile dal menu di scelta rapida Cell.
La procedura AddToShortcut aggiunge una nuova voce di menu al menu di scelta rapida Cell. È possibile adattarlo per puntare ai propri macro modificando le proprietà Caption e OnAction dell'oggetto denominato NewControl.
Sub AddToShortCut () Dim Bar As CommandBar Dim NewControl As CommandBarButton DeleteFromShortcut Imposta Bar = Applicazione. CommandBars ("Cell") Set NewControl = Bar. Controlli. Aggiungi _ (Tipo: = msoControlButton, ID: = 1, _ temporaneo: = True) Con NewControl. Caption = "& Change Case". OnAction = "ChangeCase". Stile = msoButtonIconAndCaption End With End Sub
Quando si modifica un menu di scelta rapida, tale modifica rimane valida fino a quando non si riavvia Excel. In altre parole, i menu di scelta rapida modificati non si ripristinano quando si chiude la cartella di lavoro che contiene il codice VBA. Pertanto, se si scrive codice per modificare un menu di scelta rapida, si scrive quasi sempre codice per invertire l'effetto della modifica.
La procedura DeleteFromShortcut rimuove la nuova voce di menu dal menu di scelta rapida Cell:
Sub DeleteFromShortcut () In caso di errore, riprendi l'applicazione successiva. CommandBars (“cella”). Controlli _ ("& Cambia caso"). Elimina End Sub
Mostra come viene visualizzata la nuova voce di menu dopo aver fatto clic con il pulsante destro del mouse su una cella.
Il primo comando effettivo dopo la dichiarazione di un paio di variabili chiama la procedura DeleteFromShortcut. Questa istruzione garantisce che solo una voce di menu Change Case venga visualizzata nel menu di scelta rapida Cell. Prova a commentare quella linea (metti un apostrofo all'inizio della linea) e esegui la procedura alcune volte - ma non lasciarti trasportare!
Fare clic con il pulsante destro del mouse su una cella e visualizzare più istanze della voce di menu Cambia caso. Sbarazzati di tutte le voci eseguendo DeleteFromShortcut più volte (una volta per ogni voce di menu extra).
Infine, è necessario un modo per aggiungere la voce del menu di scelta rapida quando viene aperta la cartella di lavoro e per eliminare la voce di menu quando la cartella di lavoro viene chiusa. Fare questo è facile. Basta aggiungere queste due procedure di evento al modulo di codice ThisWorkbook:
Private Sub Workbook_Open () Chiama AddToShortCut End Sub Private Sub Workbook_BeforeClose (Annulla come booleano) Chiama DeleteFromShortcut End Sub
La procedura Workbook_Open viene eseguita all'apertura della cartella di lavoro, e la procedura Workbook_BeforeClose viene eseguita prima che la cartella di lavoro venga chiusa. Proprio quello che ha ordinato il dottore.
Cosa c'è di diverso in Excel 2013 ed Excel 2016?
Se hai utilizzato VBA per lavorare con i menu di scelta rapida in Excel 2007 o versioni precedenti, devi essere consapevole di un cambiamento significativo.
In passato, se il codice ha modificato un menu di scelta rapida, quella modifica era valida per tutte le cartelle di lavoro. Ad esempio, se hai aggiunto un nuovo elemento al menu di scelta rapida della cella, tale nuovo elemento verrà visualizzato quando fai clic con il pulsante destro del mouse su una cella in qualsiasi cartella di lavoro (più altre cartelle di lavoro aperte in seguito). In altre parole, le modifiche al menu di scelta rapida venivano apportate al livello applicazione .
Excel 2013 ed Excel 2016 utilizzano un'interfaccia a documento singolo e ciò influisce sui menu di scelta rapida. Le modifiche apportate ai menu di scelta rapida riguardano solo la finestra della cartella di lavoro attiva. Quando si esegue il codice che modifica il menu di scelta rapida, il menu di scelta rapida per finestre diverse dalla finestra attiva non verrà modificato. Questo è un allontanamento radicale dal modo in cui le cose funzionavano.
Un'altra svolta: se l'utente apre una cartella di lavoro (o crea una nuova cartella di lavoro) quando la finestra attiva visualizza il menu di scelta rapida modificato, la nuova cartella di lavoro visualizza anche il menu di scelta rapida modificato. In altre parole, le nuove finestre visualizzano gli stessi menu di scelta rapida della finestra attiva quando sono state aperte le nuove finestre.
In conclusione: in passato, se si aprivano una cartella di lavoro o un componente aggiuntivo che modificava i menu di scelta rapida, si poteva essere certi che i menu di scelta rapida modificati sarebbero disponibili in tutte le cartelle di lavoro. Non hai più questa assicurazione.
