Excel 基于一组单元格隐藏另一张图纸上的行,然后打印

Excel 基于一组单元格隐藏另一张图纸上的行,然后打印,excel,vba,Excel,Vba,我有两张工作表“主要”和“检查表” “主”工作表在单元格B14:B29和单元格E14:E21中有选择(我所做的选择是指当这些单元格被激活时,它们会自动填充X)。我在页面上还有一个标记为“打印”的按钮 “检查表”页面是一个检查表 我想在按下标有“打印”的按钮时 -根据“主”工作表上选择的框筛选/隐藏“检查表”上的行 -将“检查表”打印到默认打印机 例如,如果主B14有一个X(我可以在不区分大小写的地方设置它吗?),那么第6-10行将被隐藏,如果B15有一个X,那么第106-116行将被隐藏。在我提

我有两张工作表“主要”和“检查表”

“主”工作表在单元格B14:B29和单元格E14:E21中有选择(我所做的选择是指当这些单元格被激活时,它们会自动填充X)。我在页面上还有一个标记为“打印”的按钮

“检查表”页面是一个检查表

我想在按下标有“打印”的按钮时 -根据“主”工作表上选择的框筛选/隐藏“检查表”上的行 -将“检查表”打印到默认打印机

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


我还想知道是否可以使用组来实现这一点,以便有人在不更改代码的情况下更方便地在我后面向检查列表中添加项目。

以下是您的示例,隐藏行或将行分组并显示行级别1

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

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

太棒了,谢谢你,我要开始玩了。有没有办法让它只引用组,这样,如果有人在我后面,并在组内的检查列表中添加一个项目/行,代码就不必修改?如果您给范围命名,那么您可以通过
range(“GivenName”)交换
range(“6:10”)
您的问题是否有关于范围命名的附加信息?如果是,请考虑在这里解释“接受答案”: