【问题标题】:HIDE ROWS in EXCEL by CONDITION按条件隐藏 EXCEL 中的行
【发布时间】:2018-06-17 17:32:39
【问题描述】:

所以我正在通过 excel 构建定价表,并且有大约 1,000 行行项目。

我需要允许用户选中他们想要查看的框,然后通过使用表单控制按钮(或此处更好的方式)仅显示这些框。

最终结果是从该主列表中获取 20-30 个项目,以显示特定供应商的价格表打印输出。

我不熟悉 VBA 代码,但在其他领域有足够的经验,如果给出一个起点和简单的说明,我可以在这些领域执行和编辑代码。

我在第一列中插入了复选框,并将链接的单元格设置为在第二列中显示真假。我只需要编写一个宏来隐藏第 2 列中是否为假(未选中复选框),并让它在 12 分钟内处理宏。

非常感谢这里的任何帮助或建议!

【问题讨论】:

    标签: vba excel checkbox


    【解决方案1】:

    这可以通过一个非常简单的循环来完成,并且不应超过 12 分钟的时间限制。单击“隐藏行”时,运行以下代码:

        'This will make it so the screen doesn't "flicker" while the code is running
    Application.ScreenUpdating = False    
    
    For Each cell In Range("B4:B16").Cells
            If cell.Value = False Then
                Rows(cell.Row & ":" & cell.Row).EntireRow.Hidden = True
            End If
        Next cell
    
        'Turn screen updating back on or Excel will appear "frozen"
    Application.ScreenUpdating = True
    

    只需记住将 For 语句中的 Range 更改为您的实际 Range,您就应该一切就绪!

    【讨论】:

    • 哈哈。我想 12 分钟的标记对我来说更像是讽刺。我在这本工作簿中有几张纸,我需要做任何特定的事情来确保它只拉这张纸吗?否则我会将范围更新为 1,000 多行,看看会发生什么!
    • 确实!只需将 Rows(cell.Row & ":" & cell.Row).EntireRow.Hidden = True 更改为 Rows(cell.Row & ":" & cell.Row).EntireRow.Hidden = False。 :)
    • “我需要做一些具体的事情来确保它只拉这张纸吗?”是的!我的例子很快就完成了,但是为了确保它只做你想要的工作表,做两件事之一。要么放表(“表名称”)。在调用 Range 之前,或在调用循环之前激活您正在编辑的工作表。
    猜你喜欢
    • 1970-01-01
    • 2020-03-02
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    相关资源
    最近更新 更多