2016-06-17 188 views
1

我想动态地将一些数据设置为表格的页眉(和/或页脚)。Workbook_BeforePrint事件不起作用

从几个论坛,我发现了很多例子,说明如何做到这一点,并且他们似乎都很容易理解,没有任何困难。
所以我申请我读一个简单的尝试是这样的:

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

但它只是不工作:没有出现在我的表预览。

顺便说一句在单证唯一暧昧点正要使用数据的表达,所以我还试图通过Range("A1").Text替换Range("A1"),然后通过Range("A1").Value,还没有成功。

我想我失去了一些简单的点...

回答

0

其他答案已经提出,代码很好,问题不存在:事实上,问题来自于它没有被调用的事实。

而这又来自一个愚蠢的情况:设计模式启用!

随着设计模式禁用,所有工作正常...

0

这不是不工作的beforeprint,这是.centerfooter。尝试改为:

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

Documentation明确要求一个string,但我不知道为什么它明确地需要它作为一个string即使它已经是在细胞中的字符串。

+0

感谢您的答案。但它一直不显示任何东西!顺便说一句,我也试着直接使用'ActiveSheet.PageSetup.CenterFooter =“一些文本”',但它仍然是一样的。可能不是说'私人小组'只是从来没有被称为?但我想不出为什么...... – cFreed

+0

它对我来说就像2007年一样。你在'ThisWorkbook'模块中有吗? – Raystafarian

+0

读你最后的评论我认为“哈利路亚”,因为我在它涉及的工作表模块,而不是它。但是......在将它移动到'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中的页脚和“正在运行的Workbook_BeforePrint”处于立即窗口中。

+0

我发现什么是错的(看我自己的答案),谢谢你的回答。首先我像你所建议的那样添加了一个'Debug.Print',并且观察到执行窗口中没有任何内容出现。它强化了事件未被解雇的想法,所以我想在工作宏中添加一个'Debug.Print' ...这就是我发现我已经启用了设计模式的原因!我不能真正“接受”你的答案,但这肯定是我理解发生的事情的方式,所以我赞成它。再次感谢。 – cFreed