プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっています。

Excelで次のようなデータを作成しました。

sheet本社名簿、sheet支社名簿1、sheet支社名簿2、sheet社員情報 の4枚のシート
それぞれの印刷対象になる範囲には、「_本社」といったように名前をつけています。
範囲は先頭に1.2.3・・・のインデックスがついています。

これをリストで「_本社」を選ぶと、sheet社員情報のフォーマットに
一行づつ差し込んで印刷したいのです。
以下の構文を作成したのですが、うまくいきません。

また名簿には50行用意していますが、数人の支社もあります。
その場合、人数を指定しなくても空白行は無視することはできますでしょうか。

どうぞお力を貸してください。

Sub 社員情報_社別印刷()

Select Case Worksheets("社員情報").Range("C2").Value 'C2でリストから範囲選択します。
Case Is = "_本社"
Sheets("本社名簿").Select

Application.Goto Reference:="Print_Area" 'Print_Areaはフォーマット範囲です。
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("A1").Select 'A1セルを選択する

Case Is = "_支社1"
Sheets("支社名簿1").Select
・・・以下繰り返し

End Select

End Sub

A 回答 (1件)

具体的なマクロを教えて欲しいのに,「一体どこにデータを差し込みたいのか」といったあなたのエクセルの様子が分かる,一番肝心な具体的エクセルの情報がまるでありません。




●今できていること:
ブックのあちらこちらのセルに
_本社
_支社1
などの,名前の定義を施してある。

社員情報というシートのC2セルに,これらの名前を選んで入力できるよう仕込んである。


●今やりたいこと
選んだ名前のセル範囲の内容を(記入されている範囲で),上から順に「所定のシート」の「所定のセル」に転記し,印刷したい


sub macro1()
 dim Target as range
 dim h as range
 set taregt = activeworkbook.names(worksheets("社員情報").range("C2").value).referstorange

 for each h in target.columns(1)
  if h <> "" then
   worksheets("所定のシート").range("所定のセル").value = h.value
   worksheets("所定のシート").printout
  end if
 next
end sub


以上の基本形を下敷きに,もう一度ご自分で今やりたいことを整理して,マクロを自作してみてください。
    • good
    • 0
この回答へのお礼

早々に回答いただきありがとうございます。
試行錯誤の結果、データ行をカウントし、そこまでを繰り返す方法で解決いたしました。

お礼日時:2011/05/06 15:44

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