Elencare i nomi degli oggetti di Excel

Download PDF

A volte capita di avere a che fare con molti oggetti su un oglio di Excel quali linee, rettangoli, cerchi, frecce e volerli manipolare.

Il metodo semplice è di assegnare ad ogni oggetto un nome e successivamente manipolarlo in VBA attraverso le proprietà dell’oggetto.

In VBA per “indirizzare” un oggetto di un foglio di lavoro si usa il costrutto:

ActiveSheet.Shapes.Range(Array("NOME_OGGETTO")).Select
 With Selection.ShapeRange.Fill
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent2
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 .Transparency = 0
 .Solid
 End With

In questo caso si cambia il colore dell’oggetto che ha per nome “NOME_OGGETTO“.

Questo procedimento funziona bene se si conoscono i nomi degli oggetti sul foglio di lavoro.

Ciò non è possibile in modo banale e sopratutto non è semplice esportare in un foglio excel i nomi per utilizzarli ad esempio nella macro che ne deve cambiare il colore. Ciò rende il tutto molto complicato perchè la macro dovrebbe conoscere tutti i nomi di tutti gli oggiettiprsenti sul foglio di lavoro senza leggerne i nomi..

Questa semplice macro crea un foglio di lavoro e inserisce la lista di tutti i nomi di tutti gli oggetti presenti in un foglio di lavoro “sorgente”.

 

Sub ListWorkSheetNamesNewWs()

Dim xWs As Worksheet
Dim Current As Worksheet

Dim i As Long

On Error Resume Next

Application.DisplayAlerts = False
xTitleId = "OFFICE-GURU List NAMES"
Application.Sheets(xTitleId).Delete
Set Current = ActiveSheet
Application.Sheets.Add Application.Sheets(1)
Set xWs = Application.ActiveSheet
xWs.Name = xTitleId
Current.Activate

i = 1
For i = 1 To ActiveSheet.Shapes.Count
 xWs.Range("A1").Offset(i, 0).Value = ActiveSheet.Shapes.Range(Array(i)).Name
Next i

Application.DisplayAlerts = True

End Sub

Per usarla è molto semplice:

  1. Importate la macro nel vostro ambiente excel
  2. andate sul foglio di lavoro per cui volete creare la lista degli oggetti
  3. premete ALT F11
  4. Eseguite la macro

un nuovo foglio di lavoro viene creato con l’elenco dei nomi degli oggetti presenti sul foglio di lavoro su cui si è eseguita la macro alla colonna A.

Per concludere l’articolo alcuni consigli di manuali sulla manipolazione degli oggetti in Excel:

Attenzione solo che se si ragguppano gli oggetti attraverso il comando “Raggruppa” o “Group” in inglese, la macro riporterà il nome del “gruppo” senza aprirlo nelle sue parti costituenti (il che non avrebbe senso perchè l’utente ha appunto creato un gruppo e quindi ci si aspetta che lo voglia manipolare come gruppo appunto)

Scarica File di Esempio: List Objects in Excel

La macro è stata adattata da una simile del sito ExtendOffice

Formattazione condizionale con celle che lampeggiano

Download PDF

Mi è stato richiesto da più fonti di avere la possibilità di creare una formattazione condizionale tale per celle in Excel possano lampeggiare se una certa condizione sia stata verificata o meno.

Purtroppo tale funzionalità non è disponibile in Excel in modo nativo e non c’é modo per integrarla.

La procedura migliore sarebbe quella di attribuire a una cella un metodo che possa permettere il lampeggio (o flashing) ma questo non è possibile.

Si può però optare per un trucco con un foglio Excel addizionale, a lato del foglio di lavoro.

Tale foglio addizionale conterrà i link alle celle che si vuole “far lampeggiare” e le condizioni che devono essere verificate per il lampeggio.

Ho preparato quindi il foglio che qui troverete che dovrà essere aperto assieme  al foglio Excel le cui celle vorrete far lampeggiare.

Il foglio conterrà i link alle celle, i criteri di lampeggio e i formati del lampeggio.

procedura per avere le celle lampeggianti:

Cominciamo dal file di esempio:

  1. scaricate il file qui: Flashing_cells
  2. Scompattate i due file in una directory
  3. aprite entrambi i file: un file è ukl file di esempio che contiene le celle che dovranno lampeggiare, il secondo è il file master che contiene i link alle celle che dovranno lampeggiare e i criteri di lampeggio
  4. Abilitate le macro sul file master
  5. cambiate lo stato da OFF a ON

flashing-on-off

A questo punto, se tutto è corretto andate sul foglio di esempio. le celle dovrebbero lampeggiare.

Divertitevi pure a cambiare i criteri o i valori o ancora i formati delle celle, le celle e il lampeggio dovrebbe adeguarsi automaticamente

Come fare per usare questa funzionalità con le proprie celle Excel

Modificate i link nella colonna A e cambiate i criteri di lampeggio:

flashing-link

 

fintanto che il file master è aperto, le celle, se vengono rispettate le condizioni, lampeggeranno

Ho inserito 4 diversi criteri di lampeggio: higher than, lower than, between e out of. Credo che le logiche che essi applicano sono sufficientemente semplici da non meritare una spiegazione dettagliata

Attenzione solo ai criteri between e out of: se scambiate tra loro upper e lower limit il criterio stesso non funzionerà.

se scrivete i criteri in modo errato nelle celle, non funzioneranno. Basta anche solo mettere una lettera maiuscola per impedirne il funzionamento.

Se fate qualche link strano la macro che gestisce il lampeggio si incastrerà. Vi consiglio dis tare molto attenti.

Svantaggi di questa soluzione:

  1. la funzionalità Undo viene persa. Non chiedetemi perché: non ne ho la minima idea, so solo che se fate qualcosa di sbagliato nei vostri fogli Excel, non potrete tornare indietro.
  2. Il lampeggio avviene solo una volta al secondo: non è possibile modificare la frequenza
  3. Il file master deve essere aperto.

Il file permette di linkare fino a  dieci celle e di gestire quindi dieci lampeggi. Questo è voluto: su consiglio di un amico lettore metto a disposizione gratuitamente solo una versione limitata. Se siete interessati a una versione con un numero maggiore di celle potete contattarmi a questo indirizzo mail.