如何實現Excel表格中兩個單元格區域間的數據交換呢?通常我們使用剪切粘貼的方法來完成,但這個方法比較繁瑣,如果數據區域較大還容易出錯。下面我們試著來編寫一個可以實現該功能的“宏”吧。
打開“工具”菜單中的“宏”,選擇“錄制新宏”命令,在個人宏工作簿中(Personal.xls)創建一個名為Exchange 的宏,代碼如下:
代碼:
'判斷用戶是否選擇了兩個單元格或單元格區域
If Selection.Areas.Count = 2 Then
Set XR = Selection.Areas(1)
Set YR = Selection.Areas(2)
'判斷選區是否重疊
If Not Intersect(XR, YR) Is Nothing Then
Result = MsgBox(" 選擇區域有重疊!交換後重疊區域的數據將有部份被覆蓋!" & vbCrLf & " 是否繼續?", vbYesNo)
If Result = vbNo Then Exit Sub
End If
If XR.Rows.Count = YR.Rows.Count And XR.Columns.Count = YR.Columns.Count Then
'交換選區
SZ1 = XR.Formula
SZ2 = YR.Formula
XR = SZ2
YR = SZ1
Else
MsgBox "選擇的兩個數據區域大小不一樣!請確認重新選擇!"
End If
Else
MsgBox "請按住Ctrl鍵選擇兩個要交換的數據區域!"
自定義一個工具欄按鈕,並將創建的宏指定給該按鈕即可(如圖)。如果選中的兩個單元格的區域大小(單元格個數)不同或選擇的數據少於2個,系統將會給出相應的出錯提示。