0

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

我有一个电子表格,我在不同行上使用了 110 个问题,我要求潜在员工和现有员工在下一列中回答 Y 或 N,然后我用它来突出各个领域的弱点或发展领域,这样我就可以建立他们的职业和培训道路。然后,在第 2 个选项卡上,使用公式,使用 TAB 1 中的 Y 和 N 填写图表,用红色和绿色填充,这通常可以识别员工是否技术强,是否需要发挥软技能,反之亦然.
我需要您对选项卡 3 的帮助。选项卡 3 将列出“建议阅读”和培训,以纠正他们可能在选项卡 1 上回答的 N。选项卡 1 称为问题选项卡 2 称为图表选项卡 3 称为反馈

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

4

2 回答 2

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

..如果我理解正确的话

于 2012-12-16T14:00:14.717 回答
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 位。

于 2012-12-16T14:50:55.010 回答