Ed eccoci al punto dolente...
Io di solito faccio (facevo) un conteggio degli oggetti ed una "spazzata" con un ciclo For.
Ti ho scritto un breve codice di esempio da inserire nel documento dove hai la piantina: apri Visual Basic Editor (Alt-F11) ed inserisci un nuovo modulo (Inserisci/Modulo), quindi incolla nel modulo vuoto questa routine:
- Codice: Seleziona tutto
Sub CONTA_SHAPES()
Dim QUANTE_FORME As Integer
Dim LISTA_SHAPES() 'questo sarà l'elenco delle forme presenti
QUANTE_FORME = ActiveSheet.Shapes.Count
'Questo ci fornisce il numero di forme presenti nel foglio
'Una volta noto il numero di forme, provvediamo a ridimensionare l'elenco alla bisogna:
ReDim LISTA_SHAPES(1 To QUANTE_FORME)
' (tante righe quante ne servono)
For F = 1 To QUANTE_FORME
LISTA_SHAPES(F) = ActiveSheet.Shapes(F).Name
Next
Stop
End Sub
Se esegui passo-passo (F8) puoi vedere il funzionamento del codice:
- se passi il mouse sulle variabili ti viene mostrato il valore attuale;
- per visualizzare il contenuto di LISTA_SHAPES devi cliccare col destro sul nome della variabile LISTA_SHAPES (nel modulo) e selezionare "Aggiungi espressione di controllo" (all'inizio sarà vuota).
Al termine del ciclo For ti troverai un LISTA_SHAPES così "riempita":
LISTA_SHAPES(1) "Rectangle1"
LISTA_SHAPES(1) "Rectangle2"
LISTA_SHAPES(1) "Rectangle3"
LISTA_SHAPES(1) "Line1"
LISTA_SHAPES(1) "Rectangle4"
...
ecc.
A questo punto hai in mano la lista delle forme (=> pareti) presenti nel tuo schema.
Per associarle ad una specifica riga del foglio, puoi ad esempio creare una tabella in cui la prima colonna contiene il nome dell'oggetto, la seconda il numero della riga in cui trovare i dati (e magari la terza il colore da assegnare).
Per scrivere i dati nella tabella:
- Codice: Seleziona tutto
RIGA_INIZIO = 1
'SUPPONIAMO CHE LA TABELLA INIZI IN CELLA E2 (METTO 1 PER RAGIONI DI "GESTIONE" DEL CICLO SEGUENTE)
COL_INIZIO = 5
For R = 1 To QUANTE_FORME
Cells(RIGA_INIZIO + R, COL_INIZIO).Formula = LISTA_SHAPES(R)
Next
Per "lanciare la routine alla bisogna", occorre creare sul foglio un pulsante apposito:
- Menu Visualizza/BArre degli strumenti
- Attiva "Visual Basic" e "Strumenti di controllo"
- Nella barra degli Strumeni di Controllo, seleziona l'icona "Pulsante di comando" (dovrebbe essere la sesta dall'alto/da sinistra);
- vai sul foglio, trascina... ed ecco un pulsante.
- Click Dx sul pulsante; seleziona Proprietà. Da questa finestra puoi modificare tutti i parametri principali del funzionamento.
- Vai sul campo (Name) e modifica l'identificativo corrente (dovrebbe essere CommandButton1) con uno più comprensibile (esempio: AGGIORNA_LISTA_OGGETTI)
- Doppio click sul pulsante: ti trovi di nuovo in VBA Editor.
Nella routine AGGIORNA_LISTA_OGGETTI_Click (in gergo tecnico: "L'evento Click per l'oggetto AGGIORNA_LISTA_OGGETTI") scrivi questo codice:
- Codice: Seleziona tutto
Call CONTA_SHAPES
Per provare il pulsante, torna al foglio dicalcolo, esci dalla modalità di progettazione (click sull'icona con riga e squadra, la prima della barra Strumenti di controllo), ripulisci la tabella co nomi degli oggetti (senza però cancellare le forme) e prova a cliccare il pulsante.
Questa, almeno, è l'idea di base. Poi, lo spazio per le migliorie è piuttosto vasto: dicci tu cosa ti serve fare di preciso... noi siamo qui!
Ciao,
MAx