Excel使用VBA隐藏行

时间:2012-12-16 10:53:29

标签: excel vba show-hide

好的,所以我有hita砖墙,它对我来说是一面大墙,但是对我们来说是一个小墙我打赌,所以我在寻求帮助。

我有一个电子表格,我在不同的行上使用110个问题,我要求在下一栏中回答员工和现有员工回答Y或N,然后使用它来强调各个方面的弱点或开发区域,所以我可以为他们建立一个职业和培训的道路。然后,在第二个选项卡上,使用公式,来自TAB 1的Y和N用于填充图表,其中包含红色和绿色,这通常表明员工在技术上是否强大,并且需要运用他们的软技能或反之亦然。
我需要你对TAB 3的帮助.Tab 3将有一个“建议读数”的列表和训练,以补救他们可能在TAB 1上回答的N. TAB 1称为QUESTIONS TAB 2称为CHART TAB 3称为FEEDBACK

所以,在TAB 3上,在CELL B9中,我的白痴思维方式说...... IF QUESTIONS, C9 = "Y" THEN HIDE FEEDBACK B9

2 个答案:

答案 0 :(得分:1)

那么你要求逻辑或VBA字符串吗?

因为你的逻辑没问题,对于VBA来说,它可能就像

Sub HideRows()

For i = 1 to RowCount 'Change RowCount to however many rows there are in Questions & Feedback

If Sheets("Questions").Range("B"& i) = "Y" Then

Sheets("Feedback").Rows(i).Hidden = True

End If

Next i

End Sub

..如果我理解正确的话

答案 1 :(得分:0)

您还可以使用命名范围,如果您的某些响应显示/隐藏多行,则表示您不必对其进行硬编码,您可以编辑命名范围。

要使我的示例代码起作用,您需要在与问题相同的行的第3列中编写命名范围的“名称”。

Public Enum HiddenState
Hidden = 0
Shown = 1
Toggle = 2
End Enum

Public Sub Toggle(ByVal Name As String, Optional ByVal State As HiddenState = HiddenState.Toggle)
Dim Row As Variant
For Each Row In Names(Name).RefersToRange.Rows
    If State = Toggle Then
        Row.Hidden = Not Row.Hidden
    Else
        If State = Shown Then Row.Hidden = False Else Row.Hidden = True
    End If
Next
End Sub

Public Sub SetFeedback()
Dim Index As Integer
Dim RowCount As Integer

RowCount = 10 ' Change This

For Index = 1 To RowCount
    If Sheets("Questions").Cells(2, Index) = "Y" Then
        Toggle Sheets("Questions").Cells(3, Index), Hidden
    Else
        Toggle Sheets("Questions").Cells(3, Index), Shown
    End If
Next Index

End Sub

您需要将此代码添加到新模块中,如果您要明确隐藏和取消隐藏行,则不需要HiddenState位。