首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我已经设置了所需的打印区域,如何仅打印包含非“”公式结果的页面?

如果我已经设置了所需的打印区域,如何仅打印包含非“”公式结果的页面?
EN

Stack Overflow用户
提问于 2019-09-06 21:05:49
回答 2查看 108关注 0票数 0

作为一名库存控制专家,我设置了一个宏和一些公式来粘贴和挖掘从IBM Power 9库存箱位置数据库复制的数据。最终目标是创建所有仓位的硬拷贝阵列,以及它们的条形码和审计笔记的空间。已使用所需的公式和格式设置了结果工作表,并将其划分为所需的打印区域,以便运行宏只需使用多达2000个仓位的名称和条形码来填充它。

一切都像符咒一样工作,但目前我需要使用打印预览并手动设置要打印的活动工作表的范围,因为并不是所有包含格式和公式的活动单元格的48页都用于任何给定的存储箱组。

我已经搜索了多个站点几个小时了,没有发现任何对我有帮助的代码,我自学的VBA技能仅限于简单的宏和对其他人代码的轻微修改。是否有一种方法可以编写宏程序,使其仅打印带有值(非""-result公式)的页面(由预定的打印区域定义),而忽略仅使用“”-result公式和格式填充的页面?我正在运行Office 365的Excel。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-09 22:50:59

在查看了@ProfoundlyOblivious提供的链接后,我很快发现我缺乏使用VBA编写建议的解决方案的技能。然而,试图解析所有这些信息让我头脑发热,我确实开发了一个非常简单和诡秘的变通方法,使用与简单的单行宏绑定的公式。假设打印区域预定义的所有页面都具有相同的宽度,并假设至少有一个单元格将始终始终填充到已用页面上,如果您遇到类似的问题,这些说明应该适用。

在第一页的空白行中输入以下简单的二进制IF公式:

=IF(A1<>"",1,0)

其中,A1是第一页中的一个单元格,其中包含一个公式,如果正在使用该页,则可以保证该公式一致地返回值。(在我的例子中,导入的信息是从每页左上角开始的列中导入的)。

选中包含公式的页面行(不是整个工作表,只是打印区域定义的页面宽度),然后将fill拖到所有可能的页面上,然后在最后一页的同一行中简单地添加一个引用(添加)所有二进制IF(X,1,0)公式的SUM(,)公式。得到的总和将是填充的页数。

笨重,但功能强大。

最后,简单的print宏:

代码语言:javascript
运行
复制
Sub Print_Audit_Sheets()
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=Range("JW42").Value, Copies:=1, Collate:=True, IgnorePrintAreas:=False
End Sub

其中("JW42")是对所有二进制IF()公式求和()的范围的引用。这不是花哨,但它是简单的,简单的工作。确保更改IF()、binary和Sum()单元格的文本颜色,这样打印输出中就不会出现随机的1和0。

如果第一个页面的填充不一致,或者包含值的页面不连续,则需要修改此代码。

票数 0
EN

Stack Overflow用户

发布于 2019-09-09 13:11:24

我的回复对评论字段来说太长了,或多或少回答了你的问题,所以我把它移到了这里。

按照我想象数据的方式,我会遍历工作簿中的每一页。当我在一个页面上时,我会遍历每个公式,直到找到一个不是空白的结果。在找到非空白结果时,我会将该页添加到要打印的页列表中,并移动到下一页。检查完最后一页后,我会打印列表中的每一页。

你可能想定义完成你的项目所需的步骤(类似于我刚才所做的),因为每一步都需要几个动作,几乎每一个动作对于有你这样经验的人来说都是一个新的挑战。一旦定义好了,找到对你的程序至关重要的最基本的动作,然后开始。保持简单,你不会总是知道挑战会是什么,或者它会来自哪里。看起来很简单的步骤,比如页面之间的循环,需要对工作簿对象有基本的了解,而且这是一个比循环复杂得多的主题。

请记住,我们来这里是为了解决您当前代码的问题。如果您对现有代码没有问题,那么除了为您指明一条路径之外,没有什么可以做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57822630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档