【问题标题】:Hide Row if Cell is blank如果单元格为空,则隐藏行
【发布时间】:2022-01-16 19:38:17
【问题描述】:

如果A:A 列的内容为空白,我有一个工作表活动代码隐藏所有行。现在,这段代码工作正常。我正在尝试将相同的代码应用于同一工作表上的按钮,然后该按钮将隐藏 M:M 列中的任何行,这也是空白的。

Sub Hide_Unused_Rows()

'Hide rows with no requirements
Dim lastrow As Long
Dim datasheet As Worksheet
Dim i As Long

Set datasheet = Sheets("ORDER FORM")

lastrow = datasheet.Range("M" & datasheet.Rows.Count).End(xlUp).Row

For i = lastrow To 2 Step -1
    If datasheet.Cells(i, 1) = "" Then
        datasheet.Rows(i & ":" & i).EntireRow.Hidden = True
    End If
Next I

End Sub

如上所述,此代码在应用于第 1 阶段(激活工作表)时可以完美运行,但当应用于第 2 阶段时,它不会隐藏M 列中的单元格为空白的行。除了 lastrow = datasheet.Range("M" & datasheet.Rows.Count).End(xlUp).Row 引用列 A 或列 M 之外,这 2 个操作的代码相同。

【问题讨论】:

    标签: excel vba show-hide


    【解决方案1】:

    您忘记在此处更改列:

    If datasheet.Cells(i, 1) = "" Then
    

    见下文。

    Sub Hide_Unused_Rows()
    
    'Hide rows with no requirements
    Dim lastrow As Long
    Dim datasheet As Worksheet
    Dim i As Long
    
    Set datasheet = Sheets("ORDER FORM")
    
    lastrow = datasheet.Range("M" & datasheet.Rows.Count).End(xlUp).Row
    
    For i = lastrow To 2 Step -1
        If datasheet.Cells(i, "M") = "" Then
            datasheet.Rows(i & ":" & i).EntireRow.Hidden = True
        End If
    Next i
    
    End Sub
    

    【讨论】:

    • 非常感谢...效果很好,让我大吃一惊,构建代码没有问题,但是 1 个简单的过度站点给我带来了数小时的烦恼
    • 你也可以参数化过程。将您的子标题更新为Sub HideUnused_Rows(Col As String),将最后一行更新为lastrow = datasheet.Range(Col & datasheet.Rows.Count).End(xlUp).Row。现在创建两个名为 HideA() 和 HideM() 的新潜艇,将此代码添加到 HideA() - HideUnused_Rows "A" 和类似的 HideM() - 将这些潜艇附加到您的两个按钮。
    猜你喜欢
    • 2012-01-10
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多