¿Cómo ver dif fotos JPG en la hoja sin trabar Excel?

Hola amigo .Este es el código que uso para el control image en la hoja de excel
Dim mitiempo, ultimo As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Rem CHECKEA SI TRANSCURRIO 0.15segundo desde la ultima vez _
 que cargo una imagen para evitar trabar el PC.
If (Timer - mitiempo) < 0.15 Then
Image1.Picture = Nothing
ultimo = ""
mitiempo = Timer
Exit Sub
End If
Rem SI ES DIF CARGA FOTO Y SI NO EXISTE LIMPIA EL VISOR.
If Not Range("B" & ActiveCell.Row).Value Like ("*\Fotos*") Then
If ultimo = "" Then Exit Sub
Image1.Picture = Nothing
ultimo = ""
mitiempo = Timer
Exit Sub
End If
Rem CARGA LA FOTO AL VISOR.
If Not ultimo = Range("B" & ActiveCell.Row).Value Then
Image1.Picture = LoadPicture(ThisWorkbook.Path & (Range("B" & ActiveCell.Row).Value))
ultimo = (Range("B" & ActiveCell.Row).Value)
End If
mitiempo = Timer
Exit Sub
End Sub
La cuestión es que cuando escribo algo en una celda y presiono unas tres o cuatro veces las flechas del teclado para cambiar de celda se traba excel y veo cambiar de celda a excel la cantidad de veces que presione como en cámara lenta, lo uso en una ferretería pequeña para verlos productos de la lista de precios antes de venderle al cliente.
PD: Las fotos que carga Image1 son JPG de 780x530px y pesan entre 5KB y 40KB c/u , la lista de precios es de cerca de 3780 filas, falla igual en otras PC (Pentium 4, DualCore y Core2Duo). Espero me puedas ayudar.

1 respuesta

Respuesta
1
Las fotos que utilices regularmente son pesadas si las abres desde este tipo de aplicativos. Ahora lo que dices que como que se repite en cámara lenta se debe a que realmente se corre la macro el número de veces que tu des con la direccional para algún lado, lo que yo veo en tu macro es que no especificas el rango en el que debe controlar la macro los cambios, puede ser una sola celda, pueden ser varias, puede ser todas una columna, si es una sola celda, con el hecho de que controles el cambio en esa sola celda se arreglaría tu problema, pero si necesitas que la macro controle los cambios en toda una columna, yo cambiaría la estrategia, y en lugar de que corra la macro por cualquier cambio, que corra la macro luego de dar un doble click, por ejemplo.
Mira y me comentas. Disculpa la demora, me he liado con algunas cosas y no podía contestar
El Problema es que a partir de la fila 5, cada fila de la hoja tiene una ruta a diferente fotografía por que se refiere a un producto diferente, las rutas de las fotos están en la columna B, el código del producto en la "C", la descripción en la "D" y el precio en "E".
No tengo una idea clara de como hacer para darle un rango, podrías mostrarme un código ejemplo para hacer lo que me dices. Otra cosa que formato sugieres, ¿pueda darles a las imágenes para que no pesen tanto en excel o sera que pudiera usar un control diferente a image1 para evitar esa sobrecarga en excel?.
Perdona el abuso.
Fresco no hay abuso, pa eso estamos a veces yo también hago de usuario.
Bien un ejemplo más detallado de lo que te puedo mostrar yo lo encuentras en internet, busca "target" esto lo digo con la intención de que entiendas como funciona el correr automáticamente una macro con el solo cambio en una celda, lo que podrías hacer es que en lugar de dar con la direccional dar con el enter, y en las opciones de excel cambiar para que el enter vaya hacia la derecha y no hacia abajo, con los dos cambios debería mejorar tu programa. Sobre las imágenes no hay una solución que yo sepa, es un mal con el que también he vivido
Pues aprendí un poco lo de target(con lo de los rangos) y me confundí un poco, pero no se como hago para que la macro se ejecute solo si estoy en la columna B o C y para que no ejecute el procedimiento si algún usuario presiona las flechas del teclado y sea solo si presionan ENTER ;ó si tienes alguna mejor idea pues bienvenida sea.
Te explico un ejemplo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
Desde aquí deberías escribir tu macro y solo se correría si modificas algo en la columna B:B pero volvemos al mismo problema si das con la direccional hacia abajo se va a correr la macro, si esto lo hacen usuarios, a mi criterio la mayoría no usa las direccionales si no el enter, por lo que el cambio de dirección del enter creo que te ayudaría.
Lo otro que se me viene a la menre es que la macro se corra al dar doble click y no con la sola activación de la celda, esto puede quitar funcionalidad a tu macro ya que suena mejor el hecho de que se corra con el tan solo modificar, as´p que miralo tu.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas