2 つのセル範囲を入れ替える
A1:B3とD1:E3の値だけを入れ替えます。
実行前に確認
- 数式は計算後の値に置き換わります。通常の元に戻すはできません。結合セルのない範囲を使ってください。
1サンプルコード
Sub Example1177()
Dim ws As Worksheet
Dim v As Variant
Set ws = ThisWorkbook.Worksheets("Sheet1")
If MsgBox("A1:B3とD1:E3の値を入れ替えます。数式は値になります。続けますか?", vbYesNo + vbExclamation) <> vbYes Then Exit Sub
v = ws.Range("A1:B3").Value2
ws.Range("A1:B3").Value2 = ws.Range("D1:E3").Value2
ws.Range("D1:E3").Value2 = v
End Sub表で見る処理のイメージ実行前・実行後のセルを見比べる
離れた2つの同じ大きさの範囲を入れ替えます。
A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。
実行前
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 商品 | 数量 | — | 商品 | 数量 |
| 2 | りんご | 5 | — | みかん | 3 |
| 3 | ぶどう | 2 | — | 桃 | 4 |
実行後
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 商品 | 数量 | — | 商品 | 数量 |
| 2 | みかん(注目セル) | 3(注目セル) | — | りんご(注目セル) | 5(注目セル) |
| 3 | 桃(注目セル) | 4(注目セル) | — | ぶどう(注目セル) | 2(注目セル) |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
確認で「はい」を選んだ場合です。A1:B3とD1:E3の値だけを交換します。C列と書式は変わりません。数式を含めた場合は数式自体でなく計算結果の値になります。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。同じ大きさのA1:B3とD1:E3に別々の値を入力します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
両方の範囲は必ず同じ行数・列数にします。vに一方を一時保存します。
- 4
マクロ内にカーソルを置いてF5で実行します。2つの範囲の値が交換されます。書式は元の場所に残ります。