零基礎學Excel VBA-WE013【一鍵整理圖片(下)】

一、簡單演示和代碼展示

零基礎學Excel VBA-WE013【一鍵整理圖片(下)】

零基礎學Excel VBA-WE013【一鍵整理圖片(下)】

零基礎學Excel VBA-WE013【一鍵整理圖片(下)】

二、關鍵對象/方法的分析

Shape

1. 有三個代表圖形的對象:

  • Shape 對象,該對象代表文檔中的單個圖形。
  • Shapes 集合,該集合代表文檔中的所有圖形。
  • ShapeRange 集合,該集合代表文檔中的圖形的指定子集,如果同時處理若干圖形,或處理選定的圖形,可用 ShapeRange 集合。

2. Shape 的屬性和方法很多,這裡僅挑幾個常見的進行介紹:

  • Type,圖形類型,可以用常量表示,也可以直接用整數值表示。
零基礎學Excel VBA-WE013【一鍵整理圖片(下)】

  • TopLeftCell,左上角所在的單元格。注意,照片旋轉會影響結果。
  • Top/Left,頂邊/左邊。注意,照片旋轉不影響結果。
  • Width/Height,寬度/高度。
  • Rotation,旋轉角度(單位是度)。
  • ScaleHeight/ScaleWidth,按指定的比例調整圖形的高度/寬度。 對於圖片和 OLE 對象,可以指定是相對於初始大小還是相對於當前大小來調整圖形的寬度。默認為相對於圖形的原有尺寸來調整寬度。
  • LockAspectRatio,調整大小時,是否保持其長寬比例不變。
  • Placement,與所在的單元格之間的附屬關係,以常量表示,對應三種xlMoveAndSize:大小位置隨單元格,xlFreeFloating:大小位置均固定,xlMove:大小固定,位置隨單元格。
  • CopyPicture,將選定對象作為圖片複製到剪貼板。

三、執行思路及過程分析

【1】定義區域

為了方便,我們把三個放圖片的區域進行定義,注意,需要用 Set 。

【2】統計在 picrange3 區域的圖片數量

只有是行號在 5~8 這個範圍的圖片,我們都將它們當成要放在 picrange3 區域的圖片,用變量 pc3 來保存圖片的數量。

我們範例這裡,第 5~8 行只有 1 個插入圖片的區域,如果存在多個,還需要判斷圖片所處的列號。這個實現起碼並不難,只是代碼會比較長,我就不進行具體的舉例。

後面還要個變量 pcc,當 picrange3 有多張圖片的時候,第 1 張圖片的位置跟第 2 張的圖片位置是不同的,pcc 就是用來指示當前是第幾張圖片。

【3】區域固定為一張圖片時

Case 1 To 4 對應圖片固定為一張的情況,再根據圖片的列號 c,去區分圖片是屬於 picrange1 的還是 picrange2 的(小窗口展示)

【4】不定數量圖片的靈活調整

我們看 Case 5 To 8,Left 和 Width 的屬性,都是固定的。

Height 的屬性,根據圖片的數量,公式容易推導出來。

而 Top 的屬性,除了需要判斷圖片的數量,還需要判斷這是這個區域的第幾張圖片,這個公式的推導稍微複雜一些,在紙上畫畫圖,還是可以推導出來的。

四、本期代碼文字版

代碼將通過另一篇文章來分享給有需要的朋友,敬請關注。

零基礎學Excel VBA-WE013【一鍵整理圖片(下)】


分享到:


相關文章: