Jump to content

Macro para solo centrar imagenes en celdas sin modificar la imagen


viperracing

Recommended Posts

Hola por lo que tengo entendido en Excel solo se pueden centrar o adaptar imagenes de forma "auto" a las celdas usando macros, bueno si esta es la única solución necesito crear una macro que me permita centrar y solo centrar sin modificar su aspecto las imagenes dentro de las celdas.

Estuve leyendo este post donde se explica algo parecido pero no es exactamente lo que necesito estuve intentando modificar la macro para ajustarla a mis necesidades y casi lo tengo pero me faltan unos ligeros retoques, a ver si me podeis ayudar

https://www.ayudaexcel.com/foro/macros-programacion-vba/5689-macro-para-centrar-varias-imagenes-columna.html

Macro del post mencionado

Sub CentrarImagenes()

Dim Foto As Shape
Dim x As Integer

x = 6

For Each Foto In ActiveSheet.Shapes
Foto.LockAspectRatio = msoFalse
Foto.Height = Cells(x, "I").Height
Foto.Width = Cells(x, "I").Width
Foto.Left = Cells(x, "I").Left
Foto.Top = Cells(x, "I").Top
x = x + 1
Next Foto

End Sub[/CODE]

Macro con las modificaciones que yo he realizado

[CODE]Sub Centrar_Imagenes_C()

Dim Foto As Shape
Dim x As Integer

x = 2

For Each Foto In ActiveSheet.Shapes
Foto.LockAspectRatio = msoTrue
Foto.Height = Cells(x, "C").Height
Foto.Width = Cells(x, "C").Width
Foto.Left = Cells(x, "C").Left
Foto.Top = Cells(x, "C").Top
x = x + 1
Next Foto

End Sub[/CODE]

[CODE]Foto.LockAspectRatio = msoTrue[/CODE]

Al modificar este parametro respecto a la otra macro se adapta al tamaño de la celda manteniendo la relación de aspecto original de la imagen que en este caso es una "Imagen prediseñada"

Pero no es exactamente lo que necesito, necesito que el aspecto que mantenga sea el que yo le he dado a la imagen inicialmente un tamaño que cabe en cualquiera de las celdas que tengo en mi tabla, manteniendo la relación de aspecto y también el tamaño de la imagen tal y como yo la he modificado, ni la relacion de aspecto ni el tamaño, sea adaptado al tamaño de la celda solo sea centrado en la celda, y ya esta, solo centrar sin modificar nada.

¿Como puedo hacer esto?

Muchas gracias un Saludo

Link to post
Share on other sites

Hola:

Prueba con:

Sub CentrarImagenes()

For Each Imagen In ActiveSheet.Shapes
y = Range(Imagen.TopLeftCell.Address).Height - Imagen.Height
x = Range(Imagen.TopLeftCell.Address).Width - Imagen.Width
Imagen.Top = Range(Imagen.TopLeftCell.Address).Top + (y / 2)
Imagen.Left = Range(Imagen.TopLeftCell.Address).Left + (x / 2)
Next

End Sub
[/CODE]

La parte superior izquierda de la imagen debe estar dentro de la celda de destino.

Saludos

Link to post
Share on other sites

Macro Antonio simplemente perfecto, muchusimas gracias era exactamente lo que necesitaba ni mas ni menos, doy gracias de haber encontrado este fantástico foro que ya me ha servido otras veces para resolver alguna de mis batallas con el Excel, espero algún día poder ser yo quien pueda ayudar, aunque el Excel no es uno de mis fuertes, hoy por hoy.

No entiendo como esta función no la trae el Excel predefinida en los paneles de opciones, lo trae el Word y el Publisher lo podía hacer exportando la tabla, pero no me servían para lo que estaba haciendo, porque perdía funciones imprescindibles al migrar.

Un saludo, y de verdad que te lo agradezco muhicimo, este tema lo puedes dar por solucionado.

Funciona Perfecto

Hola:

Prueba con:

Sub CentrarImagenes()

For Each Imagen In ActiveSheet.Shapes
y = Range(Imagen.TopLeftCell.Address).Height - Imagen.Height
x = Range(Imagen.TopLeftCell.Address).Width - Imagen.Width
Imagen.Top = Range(Imagen.TopLeftCell.Address).Top + (y / 2)
Imagen.Left = Range(Imagen.TopLeftCell.Address).Left + (x / 2)
Next

End Sub
[/CODE]

La parte superior izquierda de la imagen debe estar dentro de la celda de destino.

Saludos

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.


  • Posts

    • datos a traer.xlsx   Buenas tardes, en el archivo adjunto hay 2 hojas (datos y base), lo que necesito es que en la hoja datos en cada columna de fecha me traiga de la hoja base las fechas de cada uno de los clientes, ejemplo del sr anselmo en la celda E2 deberia traer la fecha 20/01/2020, en la celda F2 deberia traer la fecha 21/02/2020 y asi sucesivamente si tuviera otra fecha   Quedo pendiente de su ayuda
    • Silvia,   Dsiculpa hay alguna forma de poder transcribir la formula: a hoja de calculo de google?, lo que pasa esque trabajo en ellas y al subirla, no lee la formula "AGGREGATE", manda error. Otro punto, al correr la formula en excel para las siguientes semanas, (W40, W41, 42,ETC) veo que se repite el ID de las primeras semanas, ejemplo: W39 -> ID 7052248, W40 -> 7044231...... W41 -> 7044231, W42 -> 7052248. En pocas palabras me esta repitiendo los IDs de las ultimas semanas, crees -de acuerdo a tu experiencia- que se pueda crear una formula para que me busque el ID mas viejo (id asignado a esta tienda de las primeras semanas, que no se haya seleccionado en las ultimas semanas [2], que tenga menos selecciones[menos repetidos en las semanas], y que siempre toma el historial de las ultimas 10 semanas ). El fin de esto es que a lo largo de una serie de semanas, los IDs queden de cierta manera ordenados y me de un sistema ciclico. Muchas gracias por tu apoyo, espero me puedas ayudar ya que eres una crack¡ Saludos.  
    • Buenas tardes Eres muy amable.  Lo que pretendo es que el combobox1, recoja los valores de la hoja llaves los valores que están en "A"sin incluir las celdas vacías, teniendo en cuenta que  se puede ampliar el numero de llaves. En el combobox2, que recoja los valores de la hoja llaves, los valores que están en la columna F y en el combobox3 los que están en la columna G. Todo ello sin incluir los espacios en blanco y teniendo en cuenta que la lista se puede ampliar. Se que es muy lioso y me explico fatal pero te adjunto el archivo por si tienes un momento y me puedes ayudar si se puede hacer.  Muchas graciasLLAVES.xlsm
    • hola JSDJSD  perdona el retraso pero he estado con otros temas y he vuelto a retomar el tema, lo que me has enviado al final lo que hace es separar lo que hace cada numero de usuario pero no es lo que busco, lo que necesito es que me diga dentro de un margen de horas, por ejemplo de 10 a 11 el numero de filas que ha hecho, te adjunto otro fichero con un solo usuario pero veras el rango de fechas que tiene, en un mismo día dentro de una misma hora puede haber 12 filas,todo esta en la fila M, pues necesito poder tener por ejemplo  de 10 a 11 ha realizado 12 filas, de 11 a 12 ha realizado 3 filas, y asi siempre que haya un rango de filas en horario, si no me he explicado bien y me puedes ayudar dimelo y te lo intento explicar mejor, de todas formas lo que me has enviado esta muy bien pero no es lo que busco pero lo aplicare porque me viene bien.   productividad por horas.xlsx
    • Bueno basicamente necesito una macro que me ordene la columna A por los colores que tengan las celdas. Seguramente se habrá abierto este tema anteriormente pero aunque he buscado en los foros no lo encuentro. Tengo un archivo con varias columnas y quiero que se ordene la columna A junto con los datos que contienen las demas columnas. ordenar por color.xls
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy