選択したセルの範囲を時計回りに90度回転するマクロ(vba)


☆座席表をエクセルで作ったとき、視点を変えた座席表ができます

 コピー&ペーストで行と列を入れ替えるオプションがありますが、2回実行すると、元に戻ります。
 座席を前から見た表と、横や後ろから見た表を作るときにセルの範囲を回転させる必要があります
 手作業でもできますが、ミスが起こりやすく、マクロでできると便利です。
 

☆このマクロでできること

 エクセルの画面の様子ですと次の通りです。
→ 実行 →  

選択範囲を時計回りに90度回転させます。
(2回実行すると180度回転させます。)

☆使い方

下に掲載したコードをコピーして、
網掛けしたいシートがあるご自身のファイルを開きます。 その後、マクロのウィンドウでコードをペーストしてください。

こうすることで、マクロがダウンロードできない環境でも
マクロの実行さえできれば、マクロを使うことができます。


☆コード


Sub kaiten_R()
'選択されたセルの範囲を時計回りに90度回転
'回転後のセルを選択して終了
'連続して実行するとどんどん回転できる
'2回実行する(180度回転する)と
'前から見た座席表を後ろから見た座席表にすることもできる

    Dim c As Integer, r As Integer             'カウンター用変数
    Dim Start_c As Integer, Start_r As Integer '選択範囲の位置用変数
    Dim Count_R As Integer, Count_C As Integer '選択範囲の大きさ用変数
        
    Dim Sentaku As Variant                     'Sentaku:選択範囲の値格納用変数
   
    '選択範囲をvariant型の変数に格納
    Sentaku = Selection
    
    '行と列の数が違うと回転後に残るので選択範囲を""でクリア
    Selection.Value = ""
    
    '選択範囲の左上の位置を取得
    Start_c = Selection.Column
    Start_r = Selection.Row
    
    '選択範囲の行方向Rと列方向Cの大きさを取得
    Count_R = Selection.Rows.Count
    Count_C = Selection.Columns.Count

    'セルを回転させる
    For c = 1 To UBound(Sentaku, 1)
        For r = 1 To UBound(Sentaku, 2)
            '行と列を入れ替えて、逆順で代入していく
            Cells(r + Start_r - 1, UBound(Sentaku, 1) - (c - 1) + Start_c - 1) = Sentaku(c, r)
        Next r
    Next c
       
    '連続して実行することに備えて、回転後のセルを選択しておく
    Range(Cells(Start_r, Start_c), Cells(Start_r + Count_C - 1, Start_c + Count_R - 1)).Select
       
End Sub


☆参考文献

  1. (1) EXCELマクロ&VBAプロ技セレクション 技術評論社
←戻る