繁体   English   中英

图像大小调整 excel 宏

[英]Image resize excel macro

我有一个宏,我正在调整图像大小。 应该发生什么:图像位于单元格内,当我单击它放大后,当我再次单击它时,它又恢复正常。 但是,当我单击图像使其恢复正常时,它不会,它会从单元格中消失。 代码如下和一张图片,看看我点击图片时会发生什么

Sub Picture1_Click()
Dim shp As Shape
    Dim big As Single, small As Single
    Dim shpDouH As Double, shpDouOriH As Double
    big = 3
    small = 1

    On Error Resume Next
    Set shp = ActiveSheet.Shapes(Application.Caller)
    With shp
        shpDouH = .Height
        .ScaleHeight 1, msoTrue, msoScaleFromTopLeft
        shpDouOriH = .Height
     
        If Round(shpDouH / shpDouOriH, 2) = big Then
            .ScaleHeight small, msoTrue, msoScaleFromTopLeft
            .ScaleWidth small, msoTrue, msoScaleFromTopLeft
            .ZOrder msoSendToBack
        Else
            .ScaleHeight big, msoTrue, msoScaleFromTopLeft
            .ScaleWidth big, msoTrue, msoScaleFromTopLeft
            .ZOrder msoBringToFront
        End If
    End With

End Sub

在此处输入图像描述

如何将图像重置为以前的图像?

您的代码中的问题是使用 ScaleHeight。 此方法根据其当前大小调整图像大小,因此.ScaleHeight 1, msoTrue, msoScaleFromTopLeft什么都不做; 它基本上将图像调整为它已经拥有的大小。

在此处阅读有关 ScaleHeight 的更多信息: Shape.ScaleHeight 方法 (Excel)

在编写代码时, shpDouH将始终等于shpDouOriH ,这意味着Round(shpDouH / shpDouOriH, 2)将始终精确计算为 1。这会破坏您的If... Then... Else逻辑。 每次点击,图片尺寸会增加3倍的比例因子; 它永远不会缩小。

将图像缩小回其原始尺寸的最简单方法是,如果您能够为未放大的图像定义最大尺寸。 然后,您可以使用If shp.Height > MaxHeight Then的测试。 在基本概念中,如果当前高度小于 MaxHeight,则缩放 3 倍; 否则按 1/3 倍缩放。 如果原始图像的大小大致相同,这应该可以工作。

否则,您将需要在每张图像放大之前选择一种方法来记录原始尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM