れんちの備忘録

れんちの備忘録

ゆとり世代社会人が日々の中で調べたこと、考えたことのメモ

《メモ:VBA》「行と行(列と列)」を入れ替える

VBAの勉強も兼ねてメモ。
行と行(列と列)を一行丸ごと入れ替えるコードです。

 「エクセルシートの行と行(列と列)を丸ごと入れ替えたい!
でも、どうやってやればいいの?」
と思い、いろいろと調べて作ってみた備忘録です。

以下のサイト様を参考に、多少自分が使いやすいようにアレンジしました。

yumem.cocolog-nifty.com

 

「行と行」を入れ替えるマクロのコードは以下。丸ごとコピーすればOKです。以下ののコードでは、例として、2行目と4行目を丸ごと入れ替えています。
「列と列」を入れ替える場合は、実際に行の入れ替えを行っている箇所:「Rows」を「Columns」に変えてください。 

Sub 行の交換()
    
    '行の交換。ここの変数に入れ替えたい行を入力
    Call Exchange(2, 4)

End Sub

'-------------------------------------------
'行の交換を実行する関数
'-------------------------------------------
Sub Exchange(R1 As Integer, R2 As Integer)
    'R1 = 入れ替える行の番号1
    'R2 = 入れ替える行の番号2
    
    If R1 = R2 Then 'エラー処理
         MsgBox "行番号が同じです"
         End   'プログラム終了
    ElseIf R1 > R2 Then 'R1<R2にする
        Dim swap As Integer
        swap = R2
        R2 = R1
        R1 = swap
    End If
    
    '行の交換--------------------------------
    If R2 - R1 = 1 Then   '①入れ替える行が隣り合う場合
        'R2を切り取り、(R1+1)列に挿入
         Rows(R1).Cut
         Rows(R2 + 1).Insert
    Else   '②入れ替える行が隣り合わない場合(①以外)
         'R2を切り取り、(R1+1)列に挿入
         Rows(R2).Cut
         Rows(R1 + 1).Insert
        
         'R1を切り取り、(R2+1)列に挿入
         Rows(R1).Cut
         Rows(R2 + 1).Insert
    End If
    '----------------------------------------
End Sub