こんにちは、ヒガシです。
このページでは、エクセルシート上で選択した2つのセルの中身、色、フォント等の情報を入れ替えるマクロをご紹介していきます。
それではさっそくやっていきましょう!
セル交換マクロのイメージ共有
まずは本記事の内容があなたのやりたいことと一致しているかどうか確認しておきましょう。
まずは以下のようなセル状態だったとします。
この状態からB3セルとD5セルを選択した状態で、以降で紹介するVBAプログラムを実行します。
すると以下のようにセルの記述内容、セルの背景色、文字色、(この例ではわかりませんが、太字、斜体等の文字スタイルも)を入れ替えることができます。
あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。
セル内情報の交換VBAプログラム
それでは本題である選択した2つのセルの中身を交換するプログラムをご紹介します。
Sub Exchange_cell()
'選択したセルのアドレスを取得する
select_address = Selection.Address
'取得したアドレスを分割する
address_array = Split(select_address, ",")
'2つ意外のセルを選択した場合は終了
If UBound(address_array) <> 1 Then
MsgBox "2つのセルだけを選択してください"
Exit Sub
End If
'情報を取得する
C_color1 = Range(address_array(0)).Cells.Interior.ColorIndex
F_color1 = Range(address_array(0)).Cells.Font.ColorIndex
F_style1 = Range(address_array(0)).Cells.Font.FontStyle
F_size1 = Range(address_array(0)).Cells.Font.Size
cell1 = Range(address_array(0)).Value
C_color2 = Range(address_array(1)).Cells.Interior.ColorIndex
F_color2 = Range(address_array(1)).Cells.Font.ColorIndex
F_style2 = Range(address_array(1)).Cells.Font.FontStyle
F_size2 = Range(address_array(1)).Cells.Font.Size
cell2 = Range(address_array(1)).Value
'セルを入れ替える
Range(address_array(0)).Cells.Interior.ColorIndex = C_color2
Range(address_array(0)).Cells.Font.ColorIndex = F_color2
Range(address_array(0)).Cells.Font.FontStyle = F_style2
Range(address_array(0)).Cells.Font.Size = F_size2
Range(address_array(0)).Value = cell2
Range(address_array(1)).Cells.Interior.ColorIndex = C_color1
Range(address_array(1)).Cells.Font.ColorIndex = F_color1
Range(address_array(1)).Cells.Font.FontStyle = F_style1
Range(address_array(1)).Cells.Font.Size = F_size1
Range(address_array(1)).Value = cell1
End Sub
基本的には選択した2つのセルから情報をひとつひとつ抜き出し、それらの情報を入れ替えてそれぞれのセルに当てはめていっているだけです。
非常に簡単ですね。
おわりに
というわけで今回は選択した2つのセルの情報を入れ替えるマクロをご紹介しました。
エクセル上でアプリケーションなんかを作るときに意外と使えるスキルです。
私も以下のアプリ開発で今回のスキルを適用しています。
【エクセルVBA】エクセル上でデータ整理(コピー&フォルダ移動)するマクロ
興味があればぜひこちらもご覧ください。
それではまた!
コメント