【发布时间】:2020-05-02 12:09:30
【问题描述】:
我有一个包含一系列单元格 (B15:BL15) 的工作表,其中的公式返回“显示”或“隐藏”。当我从表单控件(不是 ActiveX)组合框中进行选择并将下面的宏分配给组合框时,值会发生变化。该宏应该根据单元格值显示或隐藏列。
我第一次进行选择时,无论单元格中的值如何,所有列最终都会隐藏。当我再次选择它时,代码工作正常(即我选择选项 A 并且范围内的所有列都被隐藏。我选择选项 B 然后返回选项 A 并且现在显示和隐藏正确的列。)。我在这里遗漏了什么?
Option Explicit
Sub ShowHide()
Cells.Columns.EntireColumn.Hidden = False ' Added to unhide all of the columns first.
Dim c As Range
For Each c In Range("B15:BL15").Cells ' Range of cells containing the formulas
With c
If .Value = "Hide" Then
.EntireColumn.Hidden = True
Else
.EntireColumn.Hidden = False
End If
End With
Next c
End Sub
非常感谢任何帮助!
【问题讨论】:
-
选项 A / B 做什么来触发 ShowHide()?我测试了代码,它似乎可以正常工作。
-
恐怕您的活动工作表不是您要处理的工作表。尝试根据其名称定义您的工作表并再次运行代码。代码很简单,必须做显而易见的事情......运行
Debug.Print ActivePage.Name,也许你会有一个惊喜...... -
组合框(在工作表 1 上)输出馈送到另一个工作表(工作表 2)中的立方体公式。然后,该集合由工作表 1 中的 cuberankedmember 公式引用。如果该公式返回空白,则该范围内的公式将返回“隐藏”。如果没有,它将返回“显示”。示例:我从组合框(表 1)中选择水果,并在表 2 中创建一个集合,其中包含苹果、橙子、香蕉。工作表 1 中的 A - E 列包含 cuberankedmember 公式,A - C 将包含 Apples、Oranges 和 Bananas。 D & E 为空白。 A - C 将是“显示”,D & E 将是“隐藏”
-
“我将以下宏分配给组合框”是什么意思?此过程是否由
combo_Change事件调用?如果您的代码在适当的工作表上运行,并且第 15 行存在必要的参考值,则代码必须按预期运行。 -
嗨@FaneDuru - 抱歉编辑。它没有用。我创建了表单控件组合框,当您右键单击它时,您可以选择“分配宏”,因此我将 ShowHude 子分配给它。我没有做 combo_change 事件。