• ベストアンサー

席表をEXCELで作りたい

100~300名参加の会合を開く時の席表を作るにあたり、今まではWordで参加者4~5名をテキストボックスに書いてテーブル両脇に配置し、テーブルを移動させる時は書き直していましたが、省力化出来ないものかと考えております。 参加人数によってテーブル数、配置、テーブル当たりの席数が変わりますから、会場レイアウト図も毎回作り変えています。集団で来られる方の人数が募集期間中に変動したりするので、前日夜までちょこちょこ移動作業をしなければならず、その度に書き直しをしていると誤字や欠落が起こるのでとても大変です。 そこで毎回、出欠名簿をEXCELで作るので、それをなんとか上手く使えないものかと思っています。 例えばレイアウト図は毎回作るにして、名簿から氏名の入ったテキストボックスもしくはラベルを作り、別のワークシートに並べておく(出来ればテーブル番号で分けて配置しておく)なんて事が簡単に出来る方法はありますでしょうか? EXCEL、Wordとも2000、OSはWindowsXP-HomeSP2です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.6

連休挟んだので遅くなりましたが、別のシートをアクディブにするだけでOKです。ついでにコードの不自然な部分直しておきました。 Sub Macro1() Dim rng As Range Dim cell As Range Dim V As Integer Dim H As Integer Set rng = Selection H = 100 V = 50 For Each cell In rng   Worksheets("sheet2").Activate   ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, H, V, 100#, 20).Select   With Selection     .Characters.Text = cell.Value     .HorizontalAlignment = xlCenter     .VerticalAlignment = xlCenter     With .Characters.Font       .Name = "MS 明朝"       .FontStyle = "bold"       .Size = 15     End With   End With   V = V + 10   'H = H + 10 Next cell End Sub

TT142GTTR
質問者

お礼

やろうと思ったことがほぼ全て出来てしまいました。 本当にありがとうございました。

その他の回答 (5)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.5

> 同じ場所に重ならずにテキストボックスが作れれば言うことないかもしれません。 簡単にずらせますよ。 Sub Macro1() Dim rng As Range Dim cell As Range Dim var As Variant Dim H As Integer Dim V As Integer Set rng = Selection H = 100 V = 50 For Each cell In rng   With cell   .Select     var = .Value     ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, H, V, 60#, 20).Select     Selection.Characters.Text = var     With Selection.Characters.Font       .Name = "MS Pゴシック"       .FontStyle = "標準"       .Size = 11     End With   End With   V = V + 10   H = H + 20 Next cell End Sub Vが垂直、Hが水平の初期位置。 「V = V + 10」の足し算を大きくするほど、ズレ幅も増えます。

TT142GTTR
質問者

補足

大変ありがとうございます。 あと1つだけ教えて下さい。 テキストボックスを別のシートに作成するには、どの行に作成させたいシートを書いたら良いのでしょうか>

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.4

こういう事でしょうか? Dim rng As Range Dim cell As Range Dim var As Variant Set rng = Selection For Each cell In rng  With cell  .Select     var = .Value     ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 160.25, 35.25, 60#, 20.25).Select     Selection.Characters.Text = var     With Selection.Characters.Font       .Name = "MS Pゴシック"       .FontStyle = "標準"       .Size = 11     End With   End With Next cell End Sub > 参加者4~5名をテキストボックスに書いて というのにはそぐわないかもしれませんが、「選択した範囲の値でテキストボックスを作る」ものです。全部同じ場所に重なって作られます。 4000件ほどのリストでやったら、ちょっと後悔するような動作をしましたが。 太字にしたければ"標準"を"bold"にするなど、適当に変えてください。

TT142GTTR
質問者

お礼

自分のイメージに近い動作です。 同じ場所に重ならずにテキストボックスが作れれば言うことないかもしれません。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

エクセル2000の機能はわからないのですがエクセル2002のケースで説明します。 エクセルで名簿を作られているとしたらその名簿のあるセル範囲、例えば5人組みの場合でしたら5つのセルを選択してから「Shift」キーを押しながら「編集」をクリックし「図のコピー」を選びます。表示される画面はそのままOKし、別の座席を作成するシートに移ってから再び「Shift」キーを押しながら「編集」をクリックし「図の貼り付け」を選びます。これによって図として貼り付けられますのでシート上での位置の移動や大きさの調整などをスムーズに行うことができるようになります。また、図形を右クリックして「図の書式設定」から塗りつぶしの色や、枠線の色をを黒にするなどの操作ができるようになります。 参考になりましたら幸いです。エクセル2007の場合ですとリンクした貼り付けができますので表の名簿が変われば自動的に名前を変えることもできるのですが。

TT142GTTR
質問者

お礼

2000でやってみましたら、出来ますね。 イメージしていた作業に近いです。 あとは数百件同じ作業を繰り返すマクロにすれば、とりあえず目的は果たせそうです。 ありがとうございました。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.2

一応イメージつけておきます。 どこに表示させるかは、名簿に該当する座席番号を入れます。

TT142GTTR
質問者

補足

素早いご回答に感謝致します。 これは別のワークシート内のセルに名簿の値を呼び出しているんですよね? 席の入れ替えはこの手法で楽にはなるのですが、印刷までを考えると位置の微調整などをするには、別のセルに呼び出すのではなく、ラベルなどに値を貼った方がやり易いと思うので違う方法を探しています。 どうもありがとうございました。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

イメージと違うかもしれませんが、名簿、座席番号、座席表の3シートを使ってvlookup関数とかでしょうか。

この投稿のマルチメディアは削除されているためご覧いただけません。
TT142GTTR
質問者

補足

名簿内の氏名が入力されているセルの値(つまり氏名)を別のワークシート上で、フォーム(またはコントロールツールボックス)からラベル(またはテキストボックス)を作成し、そこへ氏名を表示させるという感じです。 セルよりもラベルやテキストボックスの方が移動が自由かと思うので。

関連するQ&A