Nella macro ci sono 2 errori:
Errato (in testa): Range("D22").Value = OldImm
Corretto:
- Codice: Seleziona tutto
OldImm = Range("D22").Value
Errato (in coda): Range("D22").Value = NomeImm
Corretto:
- Codice: Seleziona tutto
Range("D22").Value = Selection.Name
Questa e’ la modifica chiave, perche’ mette il vero nome immagine in D22.
Inoltre ho notato che avevamo definito la variabile CellaPos, con l’ indirizzo della cella che contiene la formula; ma poi usavo ancora l’ indirizzo della cella (e non il contenuto della variabile) per andare a pescare l’ immagine. Possiamo quindi anche correggere:
Errato: RigaNum = Range("H20").Value
Corretto:
- Codice: Seleziona tutto
RigaNum = Range(CellaPos).Value
Fai sapere!
Per fly84pd.
Intanto benvenuto nel forum.
Devi procedere come indicato appunto da Fiorella:
-ti carichi le immagini tutte nella stessa posizione; la macro determinera’ poi quale visualizzare.
-ti fai una tabella che incrocia i possibili valori della cella con il nome dell’ immagine
-in una cella di servizio metti la formula del cerca.vert (Fiorella aveva usato E1, vedi il suo secondo post) per avere in quella cella il nome immagine in funzione del valore prescelto.
-carichi la macro nel modulo del foglio su cui lavori; mi pare che vuoi avere una immagine anche nel caso che la cella con convalida sia vuota. Per questo modifichiamo la macro come segue:
- Codice: Seleziona tutto
Private Sub worksheet_calculate()
Application.EnableEvents = false
ActiveSheet.Pictures.Visible = False
If Range("B2").Value = "" Then
ActiveSheet.Shapes("Lvuoto").Visible = True
Else
ActiveSheet.Shapes(Range("E1").Text).Visible = True ‘<<<< Vedi Testo
End If
Application.EnableEvents = true
End Sub
Nota: invece di E1 immettere l’ indirizzo della cella in cui hai effettivamente immesso la formula del CERCA.VERT.
Uso: da excel, fare tasto dx sul tab del nome foglio su cui vuoi lavorare; scegliere “Visualizza codice”; si apre il vba editor; copi il codice e lo incolli nel frame vuoto di dx.
Ritorna su excel, e imposta un valore nella cella con convalida: solo l’ immagine corrispondente verra’ di volta in volta visualizzata.
La macro si esegue and ogni variazione di dati nel foglio.
Fai sapere anche tu! Ciao.