タイダログ

もっと怠けますか? (y/n)

VBA で座席表を楽に作成する

タイダは激怒した。必ず、かの座席表をポチポチ手動で作る苦行を除かなければならぬと決意した。

決意した結果、可能な限り楽に座席表を作るマクロができましたのでご紹介いたします。

Suwarin」と名付けました。どうか すわりん と発音してください。

注意
席替え用のマクロではなく、既にできている参加者一覧から座席表を作るマクロです。新学期の出席番号順の座席表を作成する場合や、課外授業や総合的な探究の時間用の一時的な座席表を複数枚作成する場合などに役立つと思います。

作業環境

  • Windows 10 20H1 (OS Build 19042.1526)
  • Microsoft Excel 2016 MSO (バージョン 2201 ビルド 16.0.14827.20186) 64 ビット

完成図

完成図

※ 氏名は「なんちゃって個人情報」さんで作成しました。ありがとうございました。

マクロのコードはこちら。

github.com

特徴

  • 参加者の名前や番号などをまとめて貼り付けて、2回クリックするだけで座席表が作成可能
  • コンテキストメニュー(右クリックメニュー)から使用可能
  • 座席表の形式がある程度柔軟
  • 使用禁止席を指定可能

使い方

まずはこちらの動画をご覧ください(音声無し)。

  1. 座席表ファイルを作る(初回のみ)
    後述の「座席表ファイルの作り方」参照
  2. 座席表の右上のセルから2つ右のセルに、参加者を貼り付け or 入力する
    座席表の右上のセルから2つ右に参加者を貼り付ける
  3. 適当なセルで右クリックする
  4. コンテキストメニュー(右クリックメニュー)の一番下辺りにある、座席表ファイルと同じ名前の項目にマウスを乗せる
  5. 横に飛び出たメニューの「座席表を作成(M)」をクリックする

実行結果

参加者が、それぞれの座席の左上のセルに順番に入力されます。

実行結果

座席の左上のセル以外には一切入力しないので、必要に応じて数式を入れるなどしてください。もう少し詳しいことは後述

座席表ファイルの作り方

このマクロを使うにあたって、初回のみ、以下の3つのステップを踏む必要があります。

  1. 罫線を引く
  2. 数式を入力する
  3. マクロを追加する

全て、初回のみ必要な操作です。一度済ませてしまえば、何度でも使える座席表作成マクロが手に入ります。

「マクロを追加する」が一番の難関ですが、画像と、手順の説明用ページを見ながら頑張って挑戦してみてください!

罫線を引く

座席表の罫線の引き方

座席と座席表の範囲は、罫線で識別しています。罫線(と「参加者」の位置)以外のものはマクロの動作に影響しません。罫線だけが頼りです。罫線の種類や太さ、色も何でもいいです。とにかく何か引いておいてください。

罫線のルール

以下のルールに従って罫線を引いてください。ルールに則っていれば、座席表の形式はある程度自由に作れますし、既存のファイルも使用できます。

  • 座席表の外周を、途切れることなく罫線で囲ってください
    座席表の外周に罫線
  • 座席ひとつひとつを、途切れることなく罫線で区切ってください
    座席を罫線で区切る
  • 座席表の範囲を越えた余分な罫線を引かないでください
  • 座席内に罫線を引かないでください
  • 座席の行数や列数を揃えてください
  • 座席と座席の間に空白の行や列を入れないでください
  • 1枚のシートに座席表は1つにしてください(2つ目以降は無視します)
    注意事項諸々

使用できる形式例

それぞれの座席の行数や列数が揃っていれば、座席のサイズは何行×何列でもいいです。

使用できる形式例(縦2行×横2列)

使用できる形式例(縦2行×横1列)

使用できる形式例(縦3行×横1列)

使用できない形式例

座席と座席の間に空白の行や列を入れないでください。

使用できない形式例

数式を入力する

実行結果」でも書きましたが、このマクロは、

  1. 座席表の右上のセルから2つ右のセルに貼り付けた参加者を
  2. それぞれの座席の左上のセルに
  3. 順番に入力する

マクロの動作のイメージ図

ものです。それ以外のセルへの入力は一切行いません。ですので「出席番号を入れると氏名が出るようにしたい」といった場合は、別シートに名簿を用意しておき、座席の左上以外のセルに VLOOKUP 関数等を入れてお使いください。

座席の数式の例

別シートの名簿の例

マクロを追加する

ここから先は大変ですが、これが終わったらファイルが完成です。もう少し頑張りましょう!
手順は以下の記事を参考にしてください。

taidalog.hatenablog.com

  1. Releases · taidalog/Suwarin · GitHub から最新版の "Source code (zip)" をダウンロードする(リンク
  2. 座席表ファイルの作り方」で用意した座席表の Excel ファイルに、ダウンロードした VBA モジュールをインポートする
  3. 座席表ファイルの ThisWorkbook モジュールに以下のコードをコピーして貼り付ける
    Private Sub Workbook_Open()
        Call AddToContextMenu
    End Sub
    
  4. 座席表ファイルを「Excel マクロ有効ブック (*.xlsm)」形式で「名前を付けて保存」する
  5. 新しい方 (.xlsm) を開く
    今後はこちらを使ってください

コンテキストメニュー(右クリックメニュー)の一番下辺りに、座席表ファイルと同じ名前の項目があれば設定完了です。

コンテキストメニュー

お疲れ様でした! これで何度でも使える、ワンクリック座席表マクロが手に入りました!

その他の機能

この記事で触れた以外にも、いくつか機能があります。

  • 使用禁止席を指定する
  • 座席の開始位置(左下・右下・左上・右上)と方向(縦・横)を指定する
  • 最後列の端数の座席を寄せる方向(中央寄せ・先頭寄せ・末尾寄せ)を指定する
  • 座席表シートを、枚数を指定してコピーする

上記の機能についてはこちらの説明書の「その他の機能」をお読みください。

github.com

結び

座席表の作成って、「出席番号をセルに入れてエンター、出席番号をセルに入れてエンター、出席番号をセルに入れてエンター……」の繰り返しじゃないですか。そういうパターン(青!)化できることを手作業で続けるのは私には我慢ならないんですよ。射撃訓練中にシンジ君が虚ろな目をしていたのもそんな理由ではないでしょうか。

パターン化できるならマクロを組んで少しでも楽をしたい。間違いありません、怠惰です!

このマクロが、楽をしたい我が同志の役に立てば幸いです。

ところで、座席表ファイルを作って、マクロのコードをダウンロードしてインポートするという一連の作業、大変でしたよね。すいません。はじめからマクロ込みの完成品をダウンロードしてもらう方が楽なのはわかっていますが、Microsoft もこう言ってますし。

forest.watch.impress.co.jp

Emotet がまた流行り出したそうですし。気を付けて使わないといけませんね。

www.jpcert.or.jp

internet.watch.impress.co.jp

これを機に、自分でマクロを作れるようになりましょう!

参考

更新履歴