簡體   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