【エクセルVBA】選択した2つのセルの中身、色、フォントを入れ替えるマクロ

こんにちは、ヒガシです。

 

このページでは、エクセルシート上で選択した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】エクセル上でデータ整理(コピー&フォルダ移動)するマクロ

興味があればぜひこちらもご覧ください。

 

それではまた!

コメント

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