首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VBA隐藏Excel中的行

用VBA隐藏Excel中的行
EN

Stack Overflow用户
提问于 2012-12-16 18:53:29
回答 2查看 4K关注 0票数 0

好的,我有一堵砖墙,对我来说是一堵大墙,但对你们来说却是一堵小墙,所以我在寻求帮助。

我有一个电子表格,在不同的行上有110个问题,我要求潜在员工和现有员工在下一列中回答Y或N,然后我用它来突出显示各种弱点或发展领域,这样我就可以为他们建立职业生涯和培训路径。然后,在第二个选项卡上,使用公式,表1中的Y和N用红色和绿色填充图表,红色和绿色通常表示员工是否具有较强的技术能力,需要提高他们的软技能,反之亦然。

我需要你在TAB 3上的帮助。Tab 3将会有一个“建议读数”列表和训练,以纠正他们可能在TAB 1上回答的N。TAB 1称为问题TAB 2称为图表TAB 3称为反馈

所以,在TAB3中,在单元格B9中,我愚蠢的思维方式是...IF QUESTIONS, C9 = "Y" THEN HIDE FEEDBACK B9

EN

回答 2

Stack Overflow用户

发布于 2012-12-16 22:00:15

那么,您要的是逻辑还是VBA字符串?

因为您的逻辑是正确的,而对于VBA,它可能是这样的

代码语言:javascript
复制
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

..if我对你的理解是正确的

票数 1
EN

Stack Overflow用户

发布于 2012-12-16 22:50:55

你也可以使用命名范围,如果你的一些响应显示/隐藏了多行,这意味着你不必硬编码它们,你可以编辑命名范围。

为了让我的示例代码正常工作,您需要将命名范围的“名称”写在与问题相同的行的第三列中。

代码语言:javascript
复制
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位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13900578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档