2012-12-16 111 views
0

好的,所以我打砖墙,它对我来说是一个巨大的墙壁,但我为你们打了一个小墙,所以我寻求帮助。Excel隐藏行与VBA

我有一个电子表格,我在不同的行上使用了110个问题,我要求有素质的员工和现有的员工在下一列回答Y或N,然后我用它来高亮显示弱点或开发区域的各个区域,所以我可以建立他们的职业和培训途径。然后,在第二个选项卡上,使用公式,来自TAB 1的Y和N用于填充红色和绿色的图表,通常用于识别员工是否技术性强,并且需要工作他们的软技能或反之亦然。
我需要您对TAB 3的帮助。标签3将有一个“建议读数”和训练,以补救他们可能在TAB 1上回答的N的清单。 TAB 1被称为问题 TAB 2被称为CHART TAB 3被称为反馈

因此,在TAB 3,在单元格B9,我的思维方式白痴......说IF QUESTIONS, C9 = "Y" THEN HIDE FEEDBACK B9

回答

1

那么你问的逻辑或VBA字符串?

的Cuz你的逻辑是好的,而对于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 

..如果我理解正确,那就是

+0

感谢您的回复!我在VBA真的很糟糕,实际上它吓坏了我!哪里会添加这个?我会打开反馈选项卡,然后开发人员,我使用2010年。 –

+0

为添加代码和excel工作簿:http://www.contextures.com/xlvba01.html – MarioTheHedgehog

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位。