• ベストアンサー

【Excel】ヘッダーの設定について

Excel2003を使用しています。 ヘッダーに、例えばSheet1のA1セルに入力されている内容を 表示させることはできますか? A1セルの内容が変わればヘッダーの表示内容も変わるように したいのですが、このようなことは可能でしょうか? よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。Wendy02です。 >“実行エラー'9' インデックスが有効範囲にありません” これは、シート名が違います(そのシート名がありません)、という意味です。 上の名前の部分が通っていますから、 Worksheets("検針【夏季】").Range("A1").Value "検針【夏季】" これが、シート名と中に書かれた文字が、正確に同じではない、ということでしょうね、たぶん。 こういうのは、私の感覚としては、エラーの起こりやすいところだと思います。【 は 半角の [ など、様々です。 だから、アルファベットで、オブジェクト名を使うのが、一番安定した使い方が出来るのかもしれません。

rx-z5815
質問者

お礼

シート名から“【夏季】”を削除して試してみたところ うまくいきました。 シート名には括弧はあまり使わないほうがよさそうですね。 またひとつ勉強になりました。 今回も最後まで親切に教えていただき、ありがとうございました!

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。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 も、オブジェクト名ですが、一般のシート名と、とても紛らわしいのです。そこで、こうした一意の名前が付けられるわけです。 なお、イミィデエイト・ウインドウというのは、デバッグ時に使われる、特殊な作業空間(ペイン)です。一通りの作業が出来ますが、ブックを閉じると消えてしまいます。

rx-z5815
質問者

補足

アドバイスありがとうございます。 早速、教えていただいたとおりにやってみましたが “実行エラー'9' インデックスが有効範囲にありません” と出てきてしまいましたので、確認してみたところ、 >.PageSetup.LeftHeader = Worksheets("検針【夏季】").Range("A1").Value  ↑ この行全体が黄色になっていたのですが、この部分に何か問題がある? ということなのでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 このようにすれば出来ます。 Alt + F11 で、左上、プロジェクト・エキスプローラの中の、ThisWorkbook をダブルクリックで開く そして、以下を貼り付けます。 次に、Alt + Q で画面を閉じます。 '-------------------------------------------- Private Sub Workbook_BeforePrint(Cancel As Boolean) With ActiveSheet If .Name <> "Sheet1" Then Exit Sub 'シート名   .PageSetup.LeftHeader = .Range("A1").Value '  .LeftHeader, CenterHeader, RightHeader のどれか End With End Sub '-------------------------------------------- >A1セルの内容が変わればヘッダーの表示内容も変わるように >したいのですが、このようなことは可能でしょうか? これは、厳密には、A1 セルの内容が変わっても、ヘッダーの表示内容は変わってはいません。あくまでも、Sheet1 がアクティブシートであって、印刷や印刷プレビューを使って、その内容を印刷したり印刷を確認しようとしてプレビューを出した時点で変わります。

rx-z5815
質問者

補足

いつもお世話になり、ありがとうございます。 もう少し教えていただきたいのですが 『検針【夏季】』という名前のシートのA1セルに入力されている内容を 『検針表』という名前のシートのヘッダー(左側)に表示させたい場合は どのようにしたらいいでしょうか? アドバイスいただいたものを参考に本を見ながらいろいろと やってみたのですが、シート名の表示の仕方がいまいちわからず “[ ]を使わないといけないものが含まれている”といった内容の ダイアログが出てきたりして、なかなかうまくいきません。 お手数ですが、よろしくお願いします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

以下の方法をお試しください。 (1)「Alt」+「F11」キーで「VBE」 (2)「Ctrl」+「G」キーで「イミディエイトウィンドウ」を表示 (3)表示されたウインドウに    ActiveSheet.PageSetup.CenterHeader = Range("A1").Value を設定し、「Enter」 (4)「Alt」+「F11」でExcelに戻り「印刷プレビュー」で確認 (5)Center を「Left」・「Right」に変更すれば位置が変わります。

rx-z5815
質問者

お礼

回答ありがとうございました。 イミディエイトウィンドウに設定する 「ActiveSheet~…」の"ActiveSheet"は、ある特定のシートを 設定することもできるのですか?

関連するQ&A

専門家に質問してみよう