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