こんにちは。Wendy02です。
>『検針【夏季】』という名前のシート のA1セルに入力されている内容を
>『検針表』という名前のシートのヘッダー(左側)に表示させたい場合は
『検針【夏季】』という名前のシート ----A1
↓
『検針表』という名前のシート -----ヘッダー(左)
というのは別々ですね。それは、本などでは、出てこないし、ややこしいですね。
理屈では、以下のようになります。
'ThisWorkbook モジュールのみ
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
If .Name <> "検針表" Then Exit Sub 'シート名
.PageSetup.LeftHeader = Worksheets("検針【夏季】").Range("A1").Value
End With
End Sub
一応、上記で成功したら、以下は無視されて結構です。もし、マクロを勉強されているのでしたら、実際は、そういう風に考えるのだなって思ってください。実際にされなくても結構です。
なぜ、理屈ではこうなると書いたかというと、実務的には、以下のようなもう一つ工夫を凝らします。常に自分以外の人にも使うことを考えます。その中で、相談されるのは、シートの名前を変えられてしまった、位置を動かされてしまってエラーが出る、ということです。
そこで、Visual Basic Editor を開いたとき、通常、左下に出てくる、プロパティで、それぞれのオブジェクト名を、一意(唯一の名前)に替えてあげます。
ここは、なるべく、英語を使います。
検針表 を、List06 (任意)
検針【夏季】を、List06_Sm (06 は、2006 年, Sm は、Summer の略,Sp 春、Wn 冬, Au 秋)
ここは、一般の人は、覗き見ることはありません。
そこで、コードをこのように替えます。
'ThisWorkbook モジュールのみ
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
If .CodeName <> "List06" Then Exit Sub 'シート名
.PageSetup.LeftHeader = List06_Sm.Range("A1").Value
End With
End Sub
試しに、シート名、『検針【夏季】』を、『検針【秋季】』書き換えてみても、エラーが出ずに、同じようにマクロが動きます。位置を変えても、問題ありません。CodeName といいますが、そのまま、Sheet1 やSheet2 も、オブジェクト名ですが、一般のシート名と、とても紛らわしいのです。そこで、こうした一意の名前が付けられるわけです。
なお、イミィデエイト・ウインドウというのは、デバッグ時に使われる、特殊な作業空間(ペイン)です。一通りの作業が出来ますが、ブックを閉じると消えてしまいます。
お礼
シート名から“【夏季】”を削除して試してみたところ うまくいきました。 シート名には括弧はあまり使わないほうがよさそうですね。 またひとつ勉強になりました。 今回も最後まで親切に教えていただき、ありがとうございました!