Leah vorrebbe un pulsante mobile con una macro assegnata. Quindi, mentre si sposta a sinistra, a destra, in alto o in basso, il pulsante rimane vicino alla cella su cui sta lavorando. Leah si chiede se esiste un modo per aggiungere un tale pulsante in Excel.

Non esiste un modo per eseguire questa operazione senza utilizzare una macro per controllare la posizione del pulsante. (Questo non dovrebbe essere un grosso problema dato che stai già utilizzando almeno una macro nella cartella di lavoro, quella attivata dal pulsante mobile.)

Prima di entrare nello specifico di come farlo, ti consigliamo di considerare se vuoi davvero usare questo approccio. Ad esempio, puoi assegnare la tua macro a un tasto di scelta rapida oa un pulsante sulla barra di accesso rapido. Entrambi gli approcci eliminerebbero la necessità di riposizionare costantemente il pulsante mobile.

Se vuoi assolutamente seguire il percorso dei pulsanti, vai avanti e crea il tuo pulsante sullo schermo e collegalo alla tua macro. Quindi, crea semplicemente un gestore di eventi che riposiziona il pulsante ogni volta che modifichi la cella selezionata. Ad esempio, supponiamo che il nome del tuo pulsante sia “Pulsante 1”. In tal caso, potresti usare la seguente macro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.Shapes("Button 1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Ricorda che questo è un gestore di eventi, quindi deve essere posizionato nella finestra del codice per il foglio di lavoro a cui si applica. Il risultato è che il pulsante viene spostato in modo che sia sempre vicino all’angolo inferiore destro della cella selezionata.

Va anche notato che ci sono due modi per creare un pulsante macro: come controllo Active X o come controllo legacy non Active X. L’approccio di cui sopra funziona alla grande se si utilizza il tipo di pulsante legacy. Se, tuttavia, stai usando un controllo Active X, allora ti consigliamo di modificare leggermente la macro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.OLEObjects("CommandButton1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Notare che l’unica modifica è nell’oggetto a cui si fa riferimento. Con il gestore di eventi appropriato in posizione, ogni volta che si modifica la cella selezionata sullo schermo, il pulsante si riposiziona appena in basso a destra della cella selezionata. Quindi, non è un vero “fluttuante”

pulsante che resta sempre nello stesso punto. Questo dovrebbe andare bene nella situazione di Leah, dal momento che voleva che il pulsante fosse vicino alla cella in cui sta lavorando (la cella selezionata), non la cella che sta visualizzando (come quando scorre usando le barre di scorrimento).

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13544) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.