Puoi provare la seguente macro:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Row Mod 7 > 0 Then Exit Sub
If Target.Value <> "" And Application.WorksheetFunction.CountIf(Range("ListaN"), Target.Value) = 0 Then Exit Sub '** Leggi testo
' Definizioni
NoteIn = "B1:M1000" '<<< Colonne /max righi con note
IPath = ThisWorkbook.Path & "\Accordi\" '<<< directory immagini
PicSize = 80 '<<< dimensione note
PicMarg = 5 '<<< Cornice delle note
'
If Application.Intersect(Target, Range(NoteIn)) Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
ActiveSheet.Shapes("ZCZC-" & Target.Address(False, False)).Delete
On Error GoTo 0
If Target.Value = "" Then GoTo Esci
With Target.Offset(1, 0)
.RowHeight = PicSize
.ColumnWidth = .ColumnWidth / .Width * PicSize
.ColumnWidth = .ColumnWidth / .Width * PicSize
.Interior.Color = RGB(255, 255, 0) '<<< Colore di sfondo
ClW = .Width: ClH = .Height
.Select
End With
'inserisci nota
ActiveSheet.Pictures.Insert(IPath & Target.Value & ".jpg").Select
Selection.Name = "ZCZC-" & Target.Address(False, False)
Selection.ShapeRange.ScaleWidth (ClW - PicMarg) / Selection.Width, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight (ClH - PicMarg) / Selection.Height, msoFalse, msoScaleFromTopLeft
'
Esci:
Target.Offset(0, 1).Select
Application.EnableEvents = True
End Sub
Va messa nel "modulo di codice" del foglio su cui inserirai le note: tasto dx sul tab col nome foglio, scegli Visualizza codice, copia la macro e incollala nel frame di dx.
Come avevo anticipato essa presuppone che le note vengano scritte in riga 7, 14, 21, 28, etc (multipli di 7); le colonne sono impostabili, come pure altri parametri (vedi istruzioni marcate <<<)
La macro ridimensiona le immagini secondo le dimensioni della cella (impostabile); se pensi di salvare il file con le note allora e' opportuno che le immagini sul disco non siano di dimensioni (pixel) eccessive; oppure prima del salvataggio fai una "compressione" di tutte le immagini del foglio.
L' istruzione marcata *** controlla che la nota scritta sia presente in un elenco i valori validi; presuppone che sullo stesso foglio delle note sia presente un elenco di valori validi a cui avrai assegnato il nome "ListaN"; volendo puoi usare lo stesso intervallo per una convalida dati delle note da introdurre.
A me il risultato e' come da immagine:
Uploaded with
ImageShack.usAspettiamo lo spartito del forum...
Ciao