【发布时间】:2017-11-17 15:26:55
【问题描述】:
我有一些代码会在“关闭”主题时隐藏行它可以完美地工作,直到我关闭一个新主题为止。
问题是工作表的典型使用会隐藏所有已关闭的主题。因此,当我将打开的主题更改为关闭并运行此宏时,它将取消隐藏所有隐藏的主题,但隐藏最新的主题(本质上是因为此代码只是来回反转自身)。
我需要添加一个语句,以便取消隐藏所有隐藏的主题,并且不隐藏最新的“已关闭”主题。我很难解释,所以我很抱歉。
Set Rng = Range("A11:A1000")
For Each MyCell In Rng
If MyCell.Value = "Closed" Then
If MyCell.EntireRow.Hidden = True Then
MyCell.EntireRow.Hidden = False
Else
MyCell.EntireRow.Hidden = True
End If
End If
Next MyCell
With ActiveSheet.Buttons("Button 1")
If .Caption = "Hide" Then
.Caption = "Show"
Else
.Caption = "Hide"
End If
End With
End Sub
好的,所以在第一张图片中是我“关闭”一个主题的示例。我只是将“打开”更改为“关闭”并且它标记为绿色。 注意:所有之前关闭的主题目前隐藏。
当我将这个宏运行到“显示”时,它会取消隐藏所有隐藏的行,但是它现在会隐藏我刚刚更改为“已关闭”的行,因为它之前没有被隐藏。可以看到,全部显示后,第 33 行被隐藏了。
【问题讨论】:
-
具体问题是什么?您是否要求为您完成工作?
-
你如何确定最新的“关闭”主题是什么?
-
另外,与其使用
ifs,不如写MyCell.EntireRow.Hidden = Not MyCell.EntireRow.Hidden -
我在我的 OP 中添加了更多带有图像的描述。这个宏只是将所有“关闭”的单元格的值设置为隐藏或不隐藏(与它们相反),我需要用“显示”取消隐藏所有单元格并用“隐藏”隐藏“关闭”单元格隐藏”