首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于一组单元格隐藏另一个工作表上的行,然后打印

基于一组单元格隐藏另一个工作表上的行,然后打印
EN

Stack Overflow用户
提问于 2019-01-16 03:10:33
回答 1查看 31关注 0票数 0

我有两个工作表"Main“和"CheckList”。

“主”工作表在单元格B14:B29和单元格E14:E21中进行了选择(我的意思是,我所做的选择是为了在激活这些单元格时自动填充X)。我在页面上还有一个标记为"Print“的按钮

"CheckList“页面是一个检查表。

当我按下标记为" print“的按钮时,根据在"Main”工作表上选择的方框,过滤/隐藏"CheckList“上的行-将"CheckList”打印到默认打印机。

例如,如果主B14有一个X(我也可以在不区分大小写的地方使用它吗?)那么第6-10行将被隐藏,如果B15有一个X,那么第106-116行将被隐藏。对于我提到的范围内的每个X,它将是一组不同的行。

我也很好奇这是否可以使用组来完成,这样别人就可以更容易地在不更改代码的情况下将项目添加到检查表中。

EN

回答 1

Stack Overflow用户

发布于 2019-01-16 03:38:05

下面是您的示例,要么隐藏行,要么对行进行分组并显示行级1。

如果您为清单上的每个相关区域指定了名称(通过公式|名称管理器),则可以通过Range("RowsToBeHiddenByB14")交换Range("6:10")。如果其他人后来在检查表中的命名范围内添加了一些行,代码仍然有效-否则他必须在Excel的名称管理器中调整该名称的范围。

代码语言:javascript
复制
Private Sub HideOrGroupSomeRows()
    Dim MainSheet As Worksheet
    Dim CheckSheet As Worksheet

    Set MainSheet = ActiveWorkbook.Sheets("Main")
    Set CheckSheet = ActiveWorkbook.Sheets("CheckList")

    ' Either just hide the rows:
    CheckSheet.Range("6:10").EntireRow.Hidden = _
        StrComp(MainSheet.Range("B14").Value, "x", vbTextCompare) = 0
    CheckSheet.Range("106:116").EntireRow.Hidden = _
        StrComp(MainSheet.Range("B15").Value, "x", vbTextCompare) = 0

    ' Or group them and show rowlevel 1:
    CheckSheet.UsedRange.ClearOutline
    With CheckSheet.Outline
        .AutomaticStyles = False
        .SummaryRow = xlAbove
        .SummaryColumn = xlLeft
    End With
    If StrComp(MainSheet.Range("B14").Value, "x", vbTextCompare) = 0 Then _
        CheckSheet.Range("6:10").EntireRow.Group
    If StrComp(MainSheet.Range("B15").Value, "x", vbTextCompare) = 0 Then _
        CheckSheet.Range("106:116").EntireRow.Group
    CheckSheet.Outline.ShowLevels RowLevels:=1

    Set MainSheet = Nothing
    Set CheckSheet = Nothing
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54205384

复制
相关文章

相似问题

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