選択範囲の入れ替え?ボタン1つで一発やで!【数式除外&重なり防止】」

Excel便利ツール
タスク
タスク

今回は、「選択範囲の入れ替え?ボタン1つで一発やで!【数式除外&重なり防止】」
ということで選択範囲を指定してセルとセルの入れ替え便利ツールを作っていきます。

この記事ではマクロ(VBA)を使用します。
マクロ初挑戦の方はこちらの記事からスタートすることをお勧めします。
Excelのマクロ初期設定ガイド

タスク
タスク

例えばこんな時! カレンダーシートで予定が変わった時など予定を入れ替えたりする場合がありますよね?
その場合、もとあった予定をして別のセルにコピペして入れ替える予定をコピペして別のセルにコピペした予定をまたコピペしてコピペし終わったセルをデリートして・・・・
もうね。。。めんどくさいったらありゃしない(笑)
そんなわずらわしさを解消するべく考えたマクロツールです!
みなさんもぜひ一緒に作っていきましょう!!


タスク
タスク

ではでは、お品書きです。
1. はじめに:こんな人に使ってほしい!
2. マクロ:コード全文紹介
3. 便利に使うコツ:リボンに登録しよう
4. まとめ:これで作業効率爆上がり!

ジッピー、いくぞぉーーーッ!!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

いくでタスクーーーッ!!🔥
今回も「ジッピーとタスクのExcel工房」フルスロットル収録いってみよっ!


🟢 1. はじめに:こんな人に使ってほしい!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

Excelで作業してると、こういう場面ない?

  • カレンダーや工程表で、予定を別の日に移したい…
  • 一行まるごと別の場所に動かしたい…
  • でも上書きしちゃうの怖い!コピーして貼って消してって…めんどくさ!
ジッピー(ChatGPT)
ジッピー(ChatGPT)

そんなアナタの救世主になるのがこのマクロ!

👑 選択範囲を、ボタン1つで「まるっと入れ替え」!
しかも…

  • ❌ 数式は守る!(壊さない)
  • ❌ 重なった範囲はエラーでストップ!(事故らない)
  • ✅ セルの色は「入れ替えるかどうか選べる」!
ジッピー(ChatGPT)
ジッピー(ChatGPT)

…という、現場に優しい設計になっております✨


タスク
タスク

ジッピーありがとう!
数式には手出ししなかったり色の入れ替えまで選べるなんてめちゃくちゃ優しい設計じゃないか(笑)
じゃあ罫線はどうなの?って疑問が浮かびますよね!
もちろん罫線も影響しない仕様となってます!

タスク
タスク

今回テストするシートはこちらです
カレンダーではありません💦

タスク
タスク

じゃあジッピー、マクロコードをお願いね!

🔧 2. マクロ:コード全文紹介

ジッピー(ChatGPT)
ジッピー(ChatGPT)

了解✨タスク!
以下のコードを貼り付けて使ってね👇

Sub 選択範囲を入れ替え_v2()

Dim rng1 As Range, rng2 As Range
Dim ws As Worksheet
Dim tempArr1() As Variant, tempArr2() As Variant
Dim i As Long
Dim c As Range
Dim cell1 As Range, cell2 As Range
Dim tempFontColor As Variant, tempNumberFormat As Variant
Dim swapColor As VbMsgBoxResult
Dim tempInterior As Variant

Set ws = ActiveSheet

' 範囲選択
On Error Resume Next
Set rng1 = Application.InputBox("1つ目の範囲を選択してください", Type:=8)
Set rng2 = Application.InputBox("2つ目の範囲を選択してください", Type:=8)
On Error GoTo 0

If rng1 Is Nothing Or rng2 Is Nothing Then
MsgBox "範囲が正しく選択されていません。", vbExclamation
Exit Sub
End If

If rng1.Cells.Count <> rng2.Cells.Count Then
MsgBox "範囲のサイズが一致していません。", vbExclamation
Exit Sub
End If

' 重なりチェック
For Each c In rng1
If Not Intersect(c, rng2) Is Nothing Then
MsgBox "範囲が重なっています。入れ替えできません。", vbCritical
Exit Sub
End If
Next c

' 色を入れ替えるか確認
swapColor = MsgBox("セルの色も入れ替えますか?", vbYesNo + vbQuestion, "色の入れ替え")

' 一時配列に値を格納(数式除外)
ReDim tempArr1(1 To rng1.Cells.Count)
ReDim tempArr2(1 To rng2.Cells.Count)

For i = 1 To rng1.Cells.Count
If Not rng1.Cells(i).HasFormula Then tempArr1(i) = rng1.Cells(i).Value
If Not rng2.Cells(i).HasFormula Then tempArr2(i) = rng2.Cells(i).Value
Next i

' 値の入れ替え(数式除外)
For i = 1 To rng1.Cells.Count
If Not rng1.Cells(i).HasFormula Then rng1.Cells(i).Value = tempArr2(i)
If Not rng2.Cells(i).HasFormula Then rng2.Cells(i).Value = tempArr1(i)
Next i

' 書式の入れ替え(色選択あり+塗りつぶしなし対応)
For i = 1 To rng1.Cells.Count
Set cell1 = rng1.Cells(i)
Set cell2 = rng2.Cells(i)

' 背景色
If swapColor = vbYes Then
If cell1.Interior.ColorIndex = xlColorIndexNone Then
If cell2.Interior.ColorIndex = xlColorIndexNone Then
' どちらも塗りつぶしなし → 何もしない
Else
' cell1は無色、cell2は色付き
cell1.Interior.Color = cell2.Interior.Color
cell2.Interior.ColorIndex = xlColorIndexNone
End If
Else
If cell2.Interior.ColorIndex = xlColorIndexNone Then
' cell1は色付き、cell2は無色
cell2.Interior.Color = cell1.Interior.Color
cell1.Interior.ColorIndex = xlColorIndexNone
Else
' 両方色付き → 通常通り入れ替え
tempInterior = cell1.Interior.Color
cell1.Interior.Color = cell2.Interior.Color
cell2.Interior.Color = tempInterior
End If
End If
End If

' フォント色
tempFontColor = cell1.Font.Color
cell1.Font.Color = cell2.Font.Color
cell2.Font.Color = tempFontColor

' 表示形式
tempNumberFormat = cell1.NumberFormat
cell1.NumberFormat = cell2.NumberFormat
cell2.NumberFormat = tempNumberFormat
Next i

MsgBox "選択範囲を入れ替えました!(数式は保持されています)", vbInformation

End Sub

タスク
タスク

それではジッピーが書いてくれたコードをさっそくModule1に貼り付けて実行してみます。

タスク
タスク

1つめの範囲選択が出てきましたので上から3行を選択しました

タスク
タスク

つづいて2つ目の選択範囲は下から3行を選択しました。
この範囲のD列とE列には数式は入っていません。

タスク
タスク

次はセルの色を入れ替えの選択ですね
いいえを選択してみます

タスク
タスク

すると、見事に選択範囲が入れ替わりました!
数式のところはエラー表示なっていますが機能としては正常に動いているみたいです

タスク
タスク

一緒に作った皆さんもいろいろと試してみてくださいね。
ジッピー、次のリボンに登録いってみようか


💡 3. 便利に使うコツ:リボンに登録しよう

ジッピー(ChatGPT)
ジッピー(ChatGPT)

タスク、めちゃくちゃわかりやすい図解じゃないか💡
じゃあ次に進むよ👉
このマクロ、リボンに登録すると超快適!

  1. マクロを標準モジュールに貼り付け
  2. Excelのオプション →「リボンのユーザー設定」
  3. 任意のタブやグループに追加して、マクロを割り当てよう!
  4. アイコンも好みにカスタムすると毎回テンション上がる😆
タスク
タスク

リボンに登録する方法は過去記事に詳しく書いているので参照してみてください。

※ 詳しくはリボン登録の記事こちら👇
【切り抜き】マクロをリボンに追加しよう!

タスク
タスク

リボンに追加してみました
ここから一発でマクロを呼び出すことができます
それにしても選択範囲シリーズが多いな💦


✨ 4. まとめ:これで作業効率爆上がり!

  • ボタン1つで2つの範囲をサクッと入れ替え!
  • 数式は壊さない安全設計!
  • 色の移動は自分で選べる親切仕様!
  • さらにリボン登録でワンクリック起動!
ジッピー(ChatGPT)
ジッピー(ChatGPT)

「もう手動でカット&ペーストなんてやってられへんわ!」ってあなた、
この便利ツール、ぜひ導入してみてくださいな♪


🎯締めのあいさつ

タスク
タスク

今回は、選択範囲を入れ替えるツールとして罫線や数式はそのままで色の移動を選択可能にした効率化便利ツールを作ってみました。
このように日々の業務を1秒でも一瞬でも時短できる技やツールをこれからも紹介していきますので、もし「こんなツールが欲しい」などご希望ございましたらコメント欄でお知らせください。
ジッピーと私が全力で考えてご希望に答えます!
ではではジッピー、最後に締めのあいさつお願いね!

ジッピー(ChatGPT)
ジッピー(ChatGPT)

ラジャー!じゃあここはジッピー、ビシッと締めさせてもらいます✨


ジッピー(ChatGPT)
ジッピー(ChatGPT)

今回も最後まで読んでいただき、ありがとうございました!
「手動でやってたアレ、もっとラクにできんかな…?」
そんなモヤモヤが晴れる瞬間をお届けできたなら、ジッピーとタスクは今日も大勝利です💪🎉
今回のツールもそうですが、
Excelってちょっとした工夫で仕事が2倍ラクになったり、3倍楽しくなったりするんです。
これからも、
📌 実務に役立つマクロ
📌 トラブルを防ぐちょっとした工夫
📌 そして笑いのあるExcel生活(笑)
ぜーんぶ詰め込んで発信していきますので、
ぜひ次回も「ジッピーとタスクのExcel工房」に遊びに来てくださいね!
それではまた!
ボタン1つで世界を変えるその日まで…!

コメント

タイトルとURLをコピーしました