プロが教えるわが家の防犯対策術!

100~300名参加の会合を開く時の席表を作るにあたり、今まではWordで参加者4~5名をテキストボックスに書いてテーブル両脇に配置し、テーブルを移動させる時は書き直していましたが、省力化出来ないものかと考えております。

参加人数によってテーブル数、配置、テーブル当たりの席数が変わりますから、会場レイアウト図も毎回作り変えています。集団で来られる方の人数が募集期間中に変動したりするので、前日夜までちょこちょこ移動作業をしなければならず、その度に書き直しをしていると誤字や欠落が起こるのでとても大変です。

そこで毎回、出欠名簿をEXCELで作るので、それをなんとか上手く使えないものかと思っています。

例えばレイアウト図は毎回作るにして、名簿から氏名の入ったテキストボックスもしくはラベルを作り、別のワークシートに並べておく(出来ればテーブル番号で分けて配置しておく)なんて事が簡単に出来る方法はありますでしょうか?

EXCEL、Wordとも2000、OSはWindowsXP-HomeSP2です。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 20:37

> 同じ場所に重ならずにテキストボックスが作れれば言うことないかもしれません。


簡単にずらせますよ。

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つだけ教えて下さい。
テキストボックスを別のシートに作成するには、どの行に作成させたいシートを書いたら良いのでしょうか>

補足日時:2009/09/18 19:20
    • good
    • 0

こういう事でしょうか?



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"にするなど、適当に変えてください。
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2009/09/18 13:05

エクセル2000の機能はわからないのですがエクセル2002のケースで説明します。


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

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

ありがとうございました。

お礼日時:2009/09/18 12:59

一応イメージつけておきます。


どこに表示させるかは、名簿に該当する座席番号を入れます。
「席表をEXCELで作りたい」の回答画像2

この回答への補足

素早いご回答に感謝致します。

これは別のワークシート内のセルに名簿の値を呼び出しているんですよね?

席の入れ替えはこの手法で楽にはなるのですが、印刷までを考えると位置の微調整などをするには、別のセルに呼び出すのではなく、ラベルなどに値を貼った方がやり易いと思うので違う方法を探しています。

どうもありがとうございました。

補足日時:2009/09/17 18:52
    • good
    • 0

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

※添付画像が削除されました。

この回答への補足

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

セルよりもラベルやテキストボックスの方が移動が自由かと思うので。

補足日時:2009/09/17 17:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!