VBA代碼解決方案第十講-利用VBA代碼完成復制

2024年2月6日 26点热度 0人点赞

《VBA代碼解決方案》(版權10028096)這套教程是我最早推出的教程,目前已經是第三版修訂了。這套教程定位於入門後的提高,在學習這套教程過程中,側重點是要理解及掌握我的“積木編程”思想。要靈活運用教程中的實例像搭積木一樣把自己喜歡的代碼擺好。

這套教程共三冊,一百四十七講,內容覆蓋較廣,也是初級和中級間的過渡教程,改版後的內容主要是提供程序源碼文件及代碼修正為32位和64位兼用代碼。今後一段時間會給大傢陸續推出。今日的內容是VBA代碼解決方案第十講:利用VBA代碼完成復制

【分享成果,隨喜正能量】每個人在自己的時區都有自己的步程。不用嫉妒或嘲笑他人。他們都在自己的時區裡,你也是!等待正確的行動時機,放輕松。你雖然沒有領先但也沒有落後。在命運為你安排的屬於自己的時區裡,一切都準時。。

第十講 利用VBA代碼完成復制

今日給大傢推出VBA代碼方案第十講:如何利用VBA代碼完成復制的過程。在EXCEL中復制和粘貼是非常基本的操作,在VBA代碼中復制和粘貼是如何操作的呢?今日給大傢詳細的講解。這些代碼可以在程序中可以直接利用,也可以在實際工作中稍加修改,以適合自己的應用環境,希望朋友們能活學活用。結合自己的實際工作靈活運用。

1 Range對象的Copy方法

在VBA代碼中的復制是利用Range對象的Copy方法,

其語法如下:Copy(Destination)

參數Destination表示復制單元格區域的目標區域,如果省略該參數,Excel將把該區域復制到剪貼板中。使用Copy方法復制單元格區域時,也復制了該單元格區域的格式,

復制單元格區域時,如果目標區域為非空單元格區域,Excel將顯示消息框提示是否替換單元格內容,可以設置Application.DisplayAlerts屬性值為False,使復制時不出現該消息框。

2 利用Copy方法完成復制的代碼及代碼解讀

我們看下面的實際代碼:

Sub mynz_10_1() '第10講 利用VBA代碼完成復制

Application.DisplayAlerts = False

Sheets("9").Range("A1").CurrentRegion.Copy Sheets("10").Range("A1")

Application.DisplayAlerts = True

End Sub

代碼解析:

上面過程將Sheets("9")工作表中A1單元格的當前區域,復制到Sheets("10")工作表中以A1單元格為左上角單元格的區域

3 Range對象的PasteSpecial方法完成選擇性粘貼

上述代碼中,第3行代碼通常復制單元格區域的操作不會將單元格區域的列寬大小同時復制,如果希望在復制單元格區域的同時,也復制源區域的列寬大小,可以使用下面的代碼。

Sub mynz_10_2() '第10講 利用VBA代碼完成復制

Sheets("9").Range("A1").CurrentRegion.Copy '復制到剪切板中

With Sheets("10").Range("d1")

.PasteSpecial xlPasteColumnWidths '選擇性粘貼剪貼板中的Range對象的列寬

.PasteSpecial xlPasteAll 'Range對象全部內容

End With

Application.CutCopyMode = False '取消應用程序復制模式

End Sub

代碼截圖:

代碼解析:

1) 第4行代碼使用Range對象的PasteSpecial方法選擇性粘貼剪貼板中的Range對象的列寬。

2)第5行代碼粘貼剪貼板中的Range對象全部內容。

3)第7行代碼取消應用程序復制模式。

  • 應用於Range對象的PasteSpecial方法將剪貼板中的Range對象粘貼到指定區域,在粘貼時可以有選擇的粘貼對象的部分屬性。其語法如下:

PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

1)參數Paste指定要粘貼的區域部分,可為如下所列的XlPasteType常量之一。

xlPasteAll -4104 全部(默認值)

xlPasteAllExceptBorders 7 邊框除外

xlPasteColumnWidths 8 列寬

xlPasteComments -4144 批註

xlPasteFormats -4122 格式

xlPasteFormulas -4123 公式


xlPasteFormulasAndNumberFormats 11 公式和數字格式

xlPasteValidation 6 有效性驗證

xlPasteValues -4163 數值


xlPasteValuesAndNumberFormats 12 值和數字格式

2)參數Operation指定粘貼操作。XlPasteSpecialOperation為下面常量之一。


xlPasteSpecialOperationNone -4142 無(默認值)


xlPasteSpecialOperationAdd 2 加


xlPasteSpecialOperationSubtract 3 減


xlPasteSpecialOperationMultiply 4 乘


xlPasteSpecialOperationDivide 5 除

3)參數SkipBlanks指示是否跳過空單元格,若參數值為True,則不將剪貼板上區域中的空白單元格粘貼到目標區域中。默認值為False。

4)參數Transpose指示是否進行轉置,若參數值為True,則粘貼區域時轉置行和列。默認值為False。

復制內容:

運行後:

今日內容回向:

1 Copy(Destination) 意義是什麼?

2 PasteSpecial(Paste, Operation, SkipBlanks, Transpose) 意義是什麼?

本講內容參考程序文件:VBA代碼解決方案(1-19).xlsm

我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中: