1

我知道这里有很多关于在 excel-vba 中隐藏和取消隐藏行的问题,但我似乎无法让我的代码工作......

我正在制作一个电子表格,上面列出了当月的总数。我希望工作表隐藏未出现在工作表中的任何月份总计的行。

例如。如果列表中没有一月份的数据,则一月份的总计行将被隐藏。一旦有人将 1 月的数据放入列表中,则该行将取消隐藏。

我知道脚本不会一直运行,所以我添加了一个“月重置”按钮,该按钮将运行脚本并隐藏/取消隐藏所有适当的行。

出于某种原因,每次我点击按钮时,无论数据是否在下面的列表中,该行都会消失。到目前为止,我只为一月份的行编写了代码:

Private Sub CommandButton1_Click()
Sheets("Master Pipeline").Select
For Each cell In Range("B16:B100")
If cell.Value = "January" Then
Range("A3").EntireRow.Hidden = False
Else
Range("A3").EntireRow.Hidden = True
End If
Next
End Sub

单元格 A3:A14 列出了月份及其旁边的单元格中的总数。第 16:100 行有数据列表,B 列有月份。

请帮忙...

提前致谢,

LT

4

1 回答 1

2

您可以使用以下内容隐藏数据范围中缺少的任何月份。请注意,您不需要(也不应该)为每个月编写代码。另请注意,查找范围内的值比循环遍历数据范围要高效得多。

让你的按钮调用这个子:

Sub HideMissingMonths()
    Dim ws As Worksheet
    Dim months As Range
    Dim data As Range
    Dim cell As Range
    Dim found As Range    

    Set ws = ThisWorkbook.Sheets("Master Pipeline")
    Set months = ws.Range("A3:A14")
    Set data = ws.Range("B16:B100")

    Application.ScreenUpdating = False

    ' unhide all months before we begin
    months.EntireRow.Hidden = False

    For Each cell In months
        Set found = data.Find(what:=cell, LookIn:=xlValues)
        If found Is Nothing Then cell.EntireRow.Hidden = True
    Next cell

    Application.ScreenUpdating = True
End Sub
于 2013-05-21T21:51:09.673 回答