隣接するセルの交換方法は Excel 自体の標準機能として用意されています。
しかし、離れたセル同士の内容の交換が必要なときがあります。
VBAを工夫すると、ダブルクリックだけでフォントの色や字体も交換することができます

いろいろな利用法があるでしょうが、私の場合は「席替え」のプログラムに組み込んで活用しています。
ランダム関数でおおまかに席を決めておいて、視力など、問題がある座席を手動で調節するなどの場合です。

【ポイント】
● (General) で交換する可能性がある変数をPublic で指定しておく。
●交換したい2つのセルでダブルクリックするだけでOK。
 
セル内のデータだけでなく、フォントの色、フォントの種類、セルの背景色なども交換できます

ここでは、分かり易くするために、セル内のデータ(文字列)とフォントの色だけで
例を説明します。

【準備1】
まず、次のように交換する変数を (General) で指定しておきます。

KOKAN1

Public flg As Integer
Public naiyo1, naiyo2, basho1, basho2 As String
Public iro1, iro2 As Integer

上の naiyo1, naiyo2 はそれぞれセル内のデータ(文字列)を
basho1, basho2 はそれぞれ、交換する元と先のセルの位置
を覚えさせるための変数です。
iro1,iro2 はそれぞれのセルのフォントの色を記憶させるための変数です。

(※変数は目的に応じて変更してください。)


【準備2】
  使用する sheet のコードを次のようにします。

KOKAN2


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'左ダブルクリックで交換対象指定
'
ActiveCell.Select
If flg = 1 Then GoTo lblKOKAN        '2回目のクリックで交換作業に跳ぶ

basho1 = ActiveCell.Address          '最初のセル位置 記憶
naiyo1 = ActiveCell.Value            ' 内容  
記憶
iro1 = ActiveCell.Font.ColorIndex    'フォントの色  
記憶

flg = 1                              '1回目通過したFLAG

GoTo lblMOTO      '1回目は覚えるだけなので、交換作業をSKIP

lblKOKAN:                            '2回目のクリックで交換開始
basho2 = ActiveCell.Address
naiyo2 = ActiveCell.Value
iro2 = ActiveCell.Font.ColorIndex
ActiveCell = naiyo1
Selection.Font.ColorIndex = iro1

Range(basho1).Select              'セルのデータを最初の場所に移動させる
ActiveCell = naiyo2
Selection.Font.ColorIndex = iro2

flg = 0                            'FLAGの初期化

lblMOTO:

End Sub


******************

以上で、準備はOKです。

あとは、交換したい元のセルと、交換先のセル内で、それぞれ左ボタンで
ダブルクリックするだけでできます。



MKJ_BTN

================================