Ciao corindone e benvenuto nel forum.
Direi che sei entrato nella discussione giusta, e leggendo la pag 1 (i messaggi dal 9 al 19 ottobre) trovi anche 2 ipotesi su cui puoi lavorare. Ovviamente stai chiedendo di lavorare con qualcosa come 1800 immagini diverse, che comporta qualche gioco di pazienza.
Mi sembra che per te la soluzione migliore dovrebbe essere quella di Fiorella, per cui:
- ti fai 80 tabelle che incrociano ogni valore con il relativo nome immagine che vuoi visualizzare; diciamo che in col A metti (da riga 2) il valore 01. . . 23 e nelle 80 colonne con pazienza scrivi nella riga 1 l’ indirizzo della cella a cui l’ elenco appartiene e nelle righe sottostanti il nome dell’ immagine corrispondente che vuoi visualizzare.
- ti fai una macro di tipo Worksheet_Change(ByVal Target As Range), che si attivera’ a ogni inserimento che fai in qualsiasi cella; all’ interno della macro:
---controlli che l’ indirizzo di Change sia compreso nell’ elenco delle intestazioni delle 80 tabelle
---se No, esci dalla macro
---se SI:
-----nascondi l’ immagine al momento associata con la cella; potrai usare
- Codice: Seleziona tutto
ActiveSheet.Shapes("NomeImmagine").Visible = False
Per NomeImmaginevedi nota 1, piu’ in avanti.
-----attivi l’ immagine che estrai dalla tabella immagini, incrociando il valore digitato e l’ indirizzo della cella usando qualcosa come
- Codice: Seleziona tutto
ActiveSheet.Shapes("NomeImmagine").Visible = True
-----memorizzi in un foglio di appoggio, nella cella corrispondente all’ indirizzo della cella modificata, il nome dell’ immagine attivata (Nota1: questa cella quindi contiene il nome dell’ immagine che deve essere nascosta prima di attivare la nuova, al ciclo successivo)
-----posizioni l’ immagine sulla cella che ti interessa con istruzioni quali
- Codice: Seleziona tutto
ActiveSheet.Shapes("NomeImmagine").Top = Range("IndirizzoCella").Top
ActiveSheet.Shapes("NomeImmagine").Left = Range("IndirizzoCella").Left
Quanto descritto assume che le immagini siano integrate nel foglio excel, cosa pressocche’ indispensabile se si vuole scambiare il file con altri utenti. Se invece il lavoro riguarda un unico Pc, si potrebbe pensare di avere le immagini su una directory del disco e invece di attivarle (.Visible = True) e nasconderle (.Visible = False) le inserisci e cancelli.
Per inserire
- Codice: Seleziona tutto
ActiveSheet.Pictures.Insert( _
"C:\Documents and Settings\User_name\Documenti\Immagini\NomeImmagine.bmp").Select
(qui inserirai il path corretto, mentre il nome file lo recupererai sulla tabella 23*80) e per cancellare
- Codice: Seleziona tutto
ActiveSheet.Shapes("NomeImmagine").Delete)
Dovresti avere qualche spunto su cui lavorare... ma penso che ne parleremo ancora.
Ciao, fatti sentire.