2016-06-17 6 views
1

シートのヘッダー(および/またはフッター)に一部のデータを動的に設定する必要があります。Workbook_BeforePrintイベントが機能しない

いくつかのフォーラムから、私はそれを行う方法を示す数多くの例を見つけました。それらはすべて、何の問題もなく簡単に理解できるようです。
は、だから、私はこのような単純な試みに読んだもの適用:

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    ActiveSheet.PageSetup.CenterFooter = Range("A1") 
End Sub 

しかし、それは単に動作しない:何も私のシートのプレビューに表示されません。

はところでドキュメンテーションの唯一のあいまいな点は、使用するデータの表現についてだったので、私はまた、成功せず、その後、Range("A1").Valueにより、Range("A1").TextによってRange("A1")を交換してみました。

私はそれはそれは.centerfooterだ、機能していませんbeforeprintではありません

答えて

0

他の回答が既に示唆されているように、コードは問題なく、問題はありませんでした。実際、問題は呼び出されなかったという事実から来ました。

これは愚かな状況から来た:デザインモードが有効になった!

デザインモードを無効にすると、すべて正常に動作します。

0

...私はいくつかの簡単なポイントを逃していたとします。代わりに試してみてください:

ActiveSheet.PageSetup.CenterFooter = CStr(Cells(1, 1)) 

Documentation明示的stringを求めて、私はそれが明示的にそれが既にセル内の文字列の場合でもstringとして、それを必要とする理由はわかりません。

+0

お返事ありがとうございます。しかし、何も表示されません!私はまた、 'ActiveSheet.PageSetup.CenterFooter ="いくつかのテキスト "で直接試してみましたが、それはまだ同じでした。 'プライベート・サブ(Private Sub) 'が呼び出されただけではないのではないでしょうか?しかし、私は理由を理解することができません... – cFreed

+0

それは私のために、2007年にそれのように動作します。あなたは 'ThisWorkbook'モジュールでそれを持っていますか? – Raystafarian

+0

あなたの最後のコメントを読んでいました。私は「Alleluia」と思っていました。しかし、それを 'ThisWorkBook'モジュールに移した後、動作しません!他のアイデア? TIA – cFreed

1

あなたのコードは私のために働いていました。また、デバッグ用に余分な行を追加してコードをテストしました。

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    Debug.Print "Running Workbook_BeforePrint" 
    ActiveSheet.PageSetup.CenterFooter = Range("A1") 
    Cancel = True 
End Sub 

印刷する前に、フッターが空でした。印刷後、プレビューに一致するA1と「実行中のブックブックプリント」のフッターがイミディエイトウィンドウに表示されます。

+0

私はあなたの答えのおかげで、何が間違っているのか分かりました(自分の答えを見てください)。まず、あなたが提案したような 'Debug.Print'を追加し、実行ウィンドウに何も表示されないことを観察しました。それはイベントが発生しなかったという考えを強要したので、私は作業用マクロに 'Debug.Print'を追加したいと思っていました。私はあなたの答えを本当に "受け入れる"ことはできませんが、それは確かに何が起こったのか理解しているので、私はそれをアップレイトします。再度、感謝します。 – cFreed

関連する問題