- ベストアンサー
席表をEXCELで作りたい
100~300名参加の会合を開く時の席表を作るにあたり、今まではWordで参加者4~5名をテキストボックスに書いてテーブル両脇に配置し、テーブルを移動させる時は書き直していましたが、省力化出来ないものかと考えております。 参加人数によってテーブル数、配置、テーブル当たりの席数が変わりますから、会場レイアウト図も毎回作り変えています。集団で来られる方の人数が募集期間中に変動したりするので、前日夜までちょこちょこ移動作業をしなければならず、その度に書き直しをしていると誤字や欠落が起こるのでとても大変です。 そこで毎回、出欠名簿をEXCELで作るので、それをなんとか上手く使えないものかと思っています。 例えばレイアウト図は毎回作るにして、名簿から氏名の入ったテキストボックスもしくはラベルを作り、別のワークシートに並べておく(出来ればテーブル番号で分けて配置しておく)なんて事が簡単に出来る方法はありますでしょうか? EXCEL、Wordとも2000、OSはWindowsXP-HomeSP2です。
- みんなの回答 (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
その他の回答 (5)
- kuroizell
- ベストアンサー率55% (95/170)
> 同じ場所に重ならずにテキストボックスが作れれば言うことないかもしれません。 簡単にずらせますよ。 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」の足し算を大きくするほど、ズレ幅も増えます。
補足
大変ありがとうございます。 あと1つだけ教えて下さい。 テキストボックスを別のシートに作成するには、どの行に作成させたいシートを書いたら良いのでしょうか>
- kuroizell
- ベストアンサー率55% (95/170)
こういう事でしょうか? 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"にするなど、適当に変えてください。
お礼
自分のイメージに近い動作です。 同じ場所に重ならずにテキストボックスが作れれば言うことないかもしれません。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
エクセル2000の機能はわからないのですがエクセル2002のケースで説明します。 エクセルで名簿を作られているとしたらその名簿のあるセル範囲、例えば5人組みの場合でしたら5つのセルを選択してから「Shift」キーを押しながら「編集」をクリックし「図のコピー」を選びます。表示される画面はそのままOKし、別の座席を作成するシートに移ってから再び「Shift」キーを押しながら「編集」をクリックし「図の貼り付け」を選びます。これによって図として貼り付けられますのでシート上での位置の移動や大きさの調整などをスムーズに行うことができるようになります。また、図形を右クリックして「図の書式設定」から塗りつぶしの色や、枠線の色をを黒にするなどの操作ができるようになります。 参考になりましたら幸いです。エクセル2007の場合ですとリンクした貼り付けができますので表の名簿が変われば自動的に名前を変えることもできるのですが。
お礼
2000でやってみましたら、出来ますね。 イメージしていた作業に近いです。 あとは数百件同じ作業を繰り返すマクロにすれば、とりあえず目的は果たせそうです。 ありがとうございました。
- kuroizell
- ベストアンサー率55% (95/170)
- kuroizell
- ベストアンサー率55% (95/170)
イメージと違うかもしれませんが、名簿、座席番号、座席表の3シートを使ってvlookup関数とかでしょうか。
補足
名簿内の氏名が入力されているセルの値(つまり氏名)を別のワークシート上で、フォーム(またはコントロールツールボックス)からラベル(またはテキストボックス)を作成し、そこへ氏名を表示させるという感じです。 セルよりもラベルやテキストボックスの方が移動が自由かと思うので。
お礼
やろうと思ったことがほぼ全て出来てしまいました。 本当にありがとうございました。