Credo che questo snippet dovrebbe fare il lavoro:
- Codice: Seleziona tutto
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoPicture Then
If Shp.TopLeftCell.Row = 4 Then
If Shp.Height < Range("A4").Height Then ' **Vedi testo
Shp.Top = Shp.TopLeftCell.Top + (Shp.TopLeftCell.Height - Shp.Height) / 2
Shp.Left = Shp.TopLeftCell.Left + (Shp.TopLeftCell.Width - Shp.Width) / 2
End If
End If
End If
Next Shp
Questo presuppone che le immagini di cui parliamo giacciano già su riga 4; non controllo che le colonne siano G:N dando per scontato che non ci siano altre immagini su riga 4 che invece vorresti lasciare immutate; se ho assunto male allora lo aggiungiamo.
C'e' da tener presente che questi codici (anche quello che allinea su colonna) sono potenzialmente distruttivi, SE l'altezza o la larghezza delle immagini fossero maggiori dell'altezza della riga o della larghezza della colonna. Ho quindi inserito un ulteriore If (riga marcata **) per controllare che la condizione potenzialmente distruttiva non sia vera
Prova...