需交換兩個不連續、等大小的資料區域?手動剪貼易出錯且繁瑣。撰寫 VBA 巨集並綁定快速存取工具列按鈕,按住 Ctrl 選取兩區域 → 點按鈕 → 瞬間完成交換,含重疊檢查、尺寸驗證、錯誤提示,堪稱生產力神器。
Exchange → 儲存位置:「個人巨集活頁簿」 → 確定 → 立即「停止錄製」。Personal.xls → 模組 Module1 → 替換為下方代碼。Exchange → 修改按鈕圖示/名稱 (如「交換區域」)。Sub Exchange()
' 判斷使用者是否選擇了兩個獨立區域 (按 Ctrl 多選)
If Selection.Areas.Count = 2 Then
Dim XR As Range, YR As Range
Set XR = Selection.Areas(1)
Set YR = Selection.Areas(2)
' 檢查區域是否重疊
If Not Intersect(XR, YR) Is Nothing Then
Dim Result As VbMsgBoxResult
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
' 執行交換 (含公式、值、格式)
Dim SZ1 As Variant, SZ2 As Variant
SZ1 = XR.Formula
SZ2 = YR.Formula
XR.Formula = SZ2
YR.Formula = SZ1
Else
MsgBox "選擇的兩個資料區域大小不一樣! 請確認重新選擇!", vbExclamation, "錯誤"
End If
Else
MsgBox "請按住 Ctrl 鍵選擇兩個要交換的資料區域!", vbExclamation, "操作提示"
End If
End Sub

Exchange 執行)。.Value 僅交換靜態結果。將重複性手動操作封裝為巨集按鈕,是邁向 Excel 自動化專家的關鍵一步。