VBAresize2相同的图像到相同的大小(宽度和高度)

步骤1)打开Excel,将“stackoverflow的徽标复制到工作表: http : //blog.stackoverflow.com/wp-content/uploads/stackoverflow-logo-300.png

步骤2)复制并粘贴该徽标两次

步骤3)手动调整其中一个标志的一些荒谬的大小: http : //i.imgur.com/87lIB8o.png

现在,那个讨厌的标志怎么能通过vba调整到与原始标志相同的尺寸

我试了下面的macros(是的,我试着用/结束):

Sub sds() ActiveSheet.Shapes.Range(Array("Picture 2")).Width = ActiveSheet.Shapes.Range(Array("Picture 1")).Width ActiveSheet.Shapes.Range(Array("Picture 2")).Height = ActiveSheet.Shapes.Range(Array("Picture 1")).Height End Sub 

它串起来,它看起来像: http : //i.imgur.com/e7BKq9y.png

有一个属性.LockAspectRatio = msoTrue默认情况下为包含图像的形状设置。 这会导致你描述的行为。

为了避免这种情况,你可以把它切换到msoFalse ,然后改变.Height.Width ,再把它切换到msoTrue

 Sub picture_size() ActiveSheet.Shapes.Range(Array("Picture 2")).LockAspectRatio = msoFalse ActiveSheet.Shapes.Range(Array("Picture 2")).Width = ActiveSheet.Shapes.Range(Array("Picture 1")).Width ActiveSheet.Shapes.Range(Array("Picture 2")).Height = ActiveSheet.Shapes.Range(Array("Picture 1")).Height ActiveSheet.Shapes.Range(Array("Picture 2")).LockAspectRatio = msoTrue End Sub 

但是如果目标只是恢复原来的大小,那么:

 Sub picture_100Percent() ActiveSheet.Shapes.Range(Array("Picture 2")).ScaleHeight 1, msoTrue End Sub