Excel VBA 複製粘帖詳解

Excel VBA 的複製粘帖功能是Excel常用的功能,如果僅僅只會用ctrl+c與ctrl+V,那就太浪費Excel的粘帖功能了,今天從VBA的角度來詳細談一下複製粘帖功能

我發佈的《Excel VBA -單元格的操作(02)》裡面介紹單元格的複製功能時,採用的代碼如下:

Sub RangeCopy()

Application.DisplayAlerts = False

Sheet1.Range("A1").CurrentRegion.Copy Sheet2.Range("A1")

Application.DisplayAlerts = True

End Sub

其中第3行的代碼,表示把Sheet1的內容複製到了Sheet2裡面。它實現的功能僅僅相當於我們使用了ctrl+c與ctrl+V

但是Excle還有很強大選擇性粘帖功能。如下圖:

Excel VBA 複製粘帖詳解

選擇性粘帖的簡介:

粘帖

【全部】:包括內容、和格式等,其效果等於直接粘貼;

【公式】:只粘帖文本和公式,不粘帖字體、格式(字體、對齊、文字方向、數字格式、底紋等)、邊框、註釋、內容校驗等;(當複製公式時,單元格引用將根據所用引用類型而變化。如要使單元格引用保證不變,請使用絕對引用。)

【數值】:只粘帖文本,單元格的內容是計算公式的話只粘帖計算結果,這兩項不改變目標單元格的格式;

【格式】:僅粘貼源單元格格式,但不能粘貼單元格的有效性,粘帖格式,包括字體,對齊,文字方向,邊框,底紋等,不改變目標單元格的文字內容。(功能相當於格式刷);

【批註】:把源單元格的批註內容拷貝過來,不改變目標單元格的內容和格式;

【有效性驗證】:將複製單元格的數據有效性規則粘貼到粘貼區域,只粘帖有效性驗證內容,其他的保持不變;

【除邊框外的所有內容和格式】:粘帖除邊框外的所有內容和格式,保持目標單元格和源單元格相同的內容和格式;

【列寬】:將某個列寬或列的區域粘貼到另一個列或列的區域,使目標單元格和源單元格擁有同樣的列寬,不改變內容和格式;

【公式和數字格式】:僅從選中的單元格粘貼公式和所有數字格式選項;

【值和數字格式】:僅從選中的單元格粘貼值和所有數字格式選項;

運算

【無】:對源區域,不參與運算,按所選擇的粘貼方式粘貼;

【加】:把源區域內的值,與新區域相加,得到相加後的結果;

【減】:把源區域內的值,與新區域相減,得到相減後的結果;

【乘】:把源區域內的值,與新區域相乘,得到相加乘的結果;

【除】:把源區域內的值,與新區域相除,得到相除後的結果(此時如果源區域是0,那麼結果就會顯示#DIV/0!錯誤)

【跳過空白單元格】:當複製的源數據區域中有空單元格時,粘貼時空單元格不會替換粘貼區域對應單元格中的值;

【轉置】:將被複制數據的列變成行,將行變成列。源數據區域的頂行將位於目標區域的最左列,而源數據區域的最左列將顯示於目標區域的頂行;

選擇性粘帖的 代碼如下:

Sub 選擇性粘帖()

Range("A1:E27").Select

Range("B3").Activate

Selection.Copy

Range("H1").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

End Sub

代碼運行的過程如下:

Excel VBA 複製粘帖詳解

代碼的第5行,就是選擇性粘帖的代碼:

Paste 是按照什麼格式去粘帖,本例是全部

Operation 是表示粘帖之後是否運算,本例表示不運算

SkipBlanks 表示是否跳過空白單元格 Fales表示不跳過 True 表示跳過

Transpose 表示是否轉置行與列 Fales表示不轉置 True 表示轉置

Past與Operation 的取值如下圖:

Excel VBA 複製粘帖詳解

PS 小技巧,大家不用單行記不住代碼,當你需要用的時候,可以選著錄製宏來找到你需要的代碼。

選擇性粘帖的重要那麼大,大家快去試試吧!


分享到:


相關文章: