我知道这里有很多关于在excel-vba中隐藏和取消隐藏行的问题,但我似乎无法让我的代码工作......
我正在制作一个电子表格,其中列出了月份总数。我希望工作表隐藏任何未显示在工作表中的任何月份的行。
对于前。如果1月份的列表中没有数据,则隐藏1月份总计行。一旦有人将列表中的数据放入列表中,那么该行将取消隐藏。
我知道脚本不会一直运行,所以我添加了一个“月份重置”按钮来运行脚本并隐藏/取消隐藏所有适当的行。
出于某种原因,每次按下按钮时,无论数据是否在下面的列表中,该行都会消失。到目前为止,我只编写了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
答案 0 :(得分: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