如果一个单元格为空,如何停止某些行的打印

时间:2019-01-29 17:02:17

标签: excel vba

我正在尝试创建一个宏来打印活动表。在第1,2,3,6页上总有数据,因此我为单元格选择了“”,并且选择了一个永远不会包含数据的单元格,因此它们将始终打印。对于第4页和第5页,我只希望它们在定义的一个特定单元格中有内容的情况下打印,并且如果该单元格为空,则不会打印该页面。第4页只有一个单元格,我需要检查它是否为空白,但是在第5页上,我需要检查4个单元格,如果其中任何一个都不为空白,则需要打印第5页。前3页现在可以正常打印,但是转到第4页时出现错误

我尝试过更改第4页的if语句,以便它可以查看单个单元格,然后如果符合规则,它将隐藏这些单元格(我希望它们在完成第6页的打印后取消隐藏)或只是不打印这些行,而不是先隐藏然后取消隐藏)。

Public Sub PrintReport()

将strSheetName设置为字符串 strSheetName = ActiveSheet.Name

如果Range(“ A2”)。Value =“”那么'第1页

Range(“ A1:R91”)。PrintOut

如果Range(“ A93”)。Value =“”那么'第2页

Range(“ A92:R157”)。PrintOut

如果Range(“ A158”)。Value =“”那么'第3页

Range(“ A158:R199”)。PrintOut

如果Range(“ C202”)。Value =“”那么'第4页

Range(“ A200:A243”)。EntireRow.Hidden = True

其他

Range(“ A200:A243”)。EntireRow.Hidden = False

如果Range(“ C246”)。Value和Range(“ A269”)。Value和Range(“ E285”)。Value和Range(“ E293”)。Value =“”那么'第5页

Range(“ A244:A301”)。EntireRow.Hidden = True

其他

Range(“ A244:A301”)。EntireRow.Hidden = False

如果Range(“ P302”)。Value =“”然后'第6页

Range(“ A320:R325”)。PrintOut

如果结束

如果结束

如果结束

如果结束

如果结束

如果结束

结束子

我希望它打印出符合指定条件的每个页面,然后打印或不打印那些指定的单元格。第1-3页打印得很好,因为它们将始终打印,但是在第4页上始终会出错,该页上的范围记为Range(“ A200:A243”)。Hidden = True。我需要它在打印其余页面后隐藏然后取消隐藏这些行,或者只是不打印而不取消隐藏。

1 个答案:

答案 0 :(得分:2)

您只能隐藏行或列,而不能隐藏任何范围。将.EntireRow添加到所有隐藏/取消隐藏语句中,以使隐藏/取消隐藏处理整行,如下所示:

Range("A244:A301").EntireRow.Hidden = True