Te explico el funcionamiento de cada línea, para que me ayudes a resolver lo que necesitas.
Con esta instrucción
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cada vez que seleccionas cualquier celda de toda la hoja de excel, busca la foto con el nombre que aparece en la columna Q, por eso cada vez que mueves el cursor, busca la foto y la pega en la columna U.
Ejemplo:
Si seleccionas la celda B5, en automático excel toma el nombre de la foto de la celda Q5 y la inserta en la celda U1
Con esta instrucción
Private Sub Worksheet_Change(ByVal Target As Range)
Cada vez que cambies algo en la hoja, busca la foto y la pega.
Ejemplo:
Si modificas algo en la celda C6, en automático excel toma el nombre de la foto de la celda Q6 y la inserta en la celda U1
Si te das cuenta, en ambos ejemplos excel toma el número de fila para buscar el nombre de la foto.
Ahora bien lo que tienes que decidir es, cuál de las 2 opciones quieres, en la primera opción cada vez que muevas el cursor de excel, te va a buscar una foto, no importa en donde te muevas siempre busca una nueva foto. El problema aquí, es que si mueves nuevamente el cursor, nuevamente te cambia la foto.
En la segunda opción, solamente va a buscar la foto, si modificas algo en excel, puedes moverte por toda la hoja y no cambia la foto, solamente cambiará la foto cuando modifiques algo en una celda, incluso, puedes presionar F2 y dar enter y con eso tiene excel para ir a buscar una nueva foto.
Ahora, en ambos casos puedes acotar a un rango de celdas o una columna, en este momento esta abierto para toda la hoja de excel, puedes decidir que solamente si te mueves, por ejemplo, por la columna Q se cambie la foto (opción 1), o puedes decidir solamente si presionas F2 y le das enter a alguna celda de la columna Q se cambie la foto (opción 2).
Verifica que es lo que necesitas y me comentas para adecuar la macro.
Saludos. Dam