Ho un file di excel che utilizzo come aiuto per il magazzino della ditta per la quale lavoro.
Ho principalmente un foglio di lavoro che contiene dati su articoli che ho in giacenza.
Seguendo qualche vostro consiglio su questo forum ho compilato un codice che mi inserisce le foto nelle celle alla sinistra della cella che contiene il nome della stessa .jpg.
Ho un paio di domande :
1) come faccio a far decidere quale deve essere l'ultima cella da verificare per l'inserimento dell'immagine? Per ora ho inserito manualmente il range (D2:D6684)
2) il file è diventato molto lento nel processo di calcolo, ho sbagliato qualche cosa o devo cambiare strada?
3) se filtro le colonne, le immagini sembrano accavallarsi e ci mette una vita....
4) se inserisco una riga per immettere un nuovo articolo l'immagine non si sposta verso il basso come tutte le altre celle ma resta sulla cella appena creata, come posso ovviare? ( premetto che ho già controllato le propietà delle immagini e mi danno sempre " Sposta ma non ridimensionare ")
Vi allego in modulo che ho salvato nel foglio "Dettagliato" )
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'
ListaF = "D2:D6684" '<<< Le celle con nome immagine
For Each Cella In Target
If Not Application.Intersect(Cella, Range(ListaF)) Is Nothing Then
On Error Resume Next
ActiveSheet.Shapes("FOTO_DA_" & Cella.Address(0, 0)).Delete
On Error GoTo 0
Cella.Select
If Dir("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\" & Cella.Text & ".jpg") = "" Then '<1
ActiveSheet.Pictures.Insert("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\LOGO ELECTROLUX.jpg").Select '<2
Else
ActiveSheet.Pictures.Insert("\\SRV-DC\Company\AT-Dati-SBS\Sandro\progetto inventario\FOTO RICAMBI\" & Cella.Text & ".jpg").Select '<1
End If
Selection.Name = "FOTO_DA_" & Cella.Address(0, 0)
Selection.ShapeRange.Height = 79
If Selection.ShapeRange.Width > 150 Then
Selection.ShapeRange.Width = 150
End If
'PER POSIZIONARE L'IMMAGINE
Selection.ShapeRange.Left = Cella.Offset(0, -1).Left - Selection.ShapeRange.Width / 2 + Cella.Offset(0, -1).Width / 2
Selection.ShapeRange.Top = Cella.Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + Cella.Offset(0, 5).Height / 2
End If
Next Cella
End Sub