2016-12-14 143 views
-4

在工作表“输入”中,我有两个下拉列表。第一个是在收益之间进行选择,第二个是在观察类型之间进行选择。从下拉选择中隐藏的行在从第二个下拉列表中选择时隐藏

在工作表“输出”中,行被隐藏。

当我选择一个支付时,指定的行被隐藏,这是很好的,但在选择观察类型后,支付的行是不隐藏的,这是不好的。

我用下面的代码:

With Sheets("Output") 
Sheets("Output").Rows("112:137").Hidden = False 
Sheets("Output").Rows("138:151").Hidden = False 
Select Case Target.Value 
Case "Bonus Capped Single Index" 
Sheets("Output").Rows("112:154").Hidden = True 
Case "Bonus Capped Single Share" 
Sheets("Output").Rows("112:154").Hidden = True 
Case "Bonus Uncapped Single Index" 
Sheets("Output").Rows("112:154").Hidden = True 
Sheets("Output").Rows("256:257").Hidden = True 
Case "Bonus Uncapped Single Share" 
Sheets("Output").Rows("112:154").Hidden = True 
Sheets("Output").Rows("256:257").Hidden = True 
Case "Bonus Uncapped Single Index" 
Sheets("Output").Rows("112:154").Hidden = True 
Sheets("Output").Rows("256:257").Hidden = True 
Case "Bonus Capped Worst of Indices" 
Sheets("Output").Rows("112:154").Hidden = True 
Case "Bonus Capped Worst of Shares" 
Sheets("Output").Rows("112:154").Hidden = True 
Case "Bonus Uncapped Worst of Indices" 
Sheets("Output").Rows("112:154").Hidden = True 
Sheets("Output").Rows("256:257").Hidden = True 
Case "Bonus Uncapped Worst of Shares" 
Sheets("Output").Rows("112:154").Hidden = True 
Sheets("Output").Rows("256:257").Hidden = True 
Case "Phoenix Single Share" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("139").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True  
Case "Phoenix Single Index" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Case "Phoenix Yeti Single Index" 
Sheets("Output").Rows("138").Hidden = True 
Sheets("Output").Rows("116:131").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Case "Phoenix Yeti Single Share" 
Sheets("Output").Rows("139").Hidden = True 
Sheets("Output").Rows("116:131").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Case "Worst of Indices Phoenix" 
Sheets("Output").Rows("138").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("116:131").Hidden = True 
Case "Worst of Shares Phoenix" 
Sheets("Output").Rows("138").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("116:131").Hidden = True 
Case "Worst of Shares Phoenix Yeti" 
Sheets("Output").Rows("116:131").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Case "Worst of Indices Phoenix Yeti" 
Sheets("Output").Rows("139").Hidden = True 
Sheets("Output").Rows("116:131").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Case "Autocall Single Index" 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("112:131").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Case "Autocall Single Share" 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("112:131").Hidden = True 
Sheets("Output").Rows("139").Hidden = True 
Case "Autocall Worst of Shares" 
Sheets("Output").Rows("254:257").Hidden = True  
Sheets("Output").Rows("112:131").Hidden = True 
Sheets("Output").Rows("139").Hidden = True 
Case "Autocall Worst of Indices" 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("112:131").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Case "Reverse Convertible Single Share" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138:154").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("162:164").Hidden = True 
Sheets("Output").Rows("173:175").Hidden = True 
Case "Reverse Convertible Single Index" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138:154").Hidden = True  
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("162:164").Hidden = True 
Sheets("Output").Rows("173:175").Hidden = True 
Case "Worst of Shares Reverse Convertible" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138:154").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("162:164").Hidden = True 
Sheets("Output").Rows("173:175").Hidden = True 
Case "Worst of Indices Reverse Convertible" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138:154").Hidden = True  
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("162:164").Hidden = True 
Sheets("Output").Rows("173:175").Hidden = True 
Case "Coupon Linker Index" 
Sheets("Output").Rows("160:164").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("171:175").Hidden = True 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("138:154").Hidden = True 
Case "Fix Coupon Express Single Index" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("136:137").Hidden = True 
Sheets("Output").Rows("139").Hidden = True 
Case "Fix Coupon Express Single Share" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("136:137").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Case "Fix Coupon Worst of Shares" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("136:137").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Case "Fix Coupon Worst of Indices" 
Sheets("Output").Rows("116:133").Hidden = True 
Sheets("Output").Rows("254:257").Hidden = True 
Sheets("Output").Rows("136:137").Hidden = True 
Sheets("Output").Rows("138").Hidden = True 
Case Else 
Sheets("Output").Rows("112:137").Hidden = False 
Sheets("Output").Rows("138:151").Hidden = False 
End Select 
End With 

With Sheets("Output") 'Observation and delivery 
Sheets("Output").Rows("158:212").Hidden = False 
Sheets("Output").Rows("246:253").Hidden = False 
Select Case Target.Value 
Case "American Cash" 
Sheets("Output").Rows("177:212").Hidden = True 
Sheets("Output").Rows("165").Hidden = True 
Sheets("Output").Rows("176").Hidden = True 
Case "American Physical" 
Sheets("Output").Rows("162:164").Hidden = True 
Sheets("Output").Rows("177:212").Hidden = True 
Sheets("Output").Rows("173:175").Hidden = True 
Sheets("Output").Rows("246:253").Hidden = True 
Case "European Cash" 
Sheets("Output").Rows("170:172").Hidden = True 
Sheets("Output").Rows("159:164").Hidden = True 
Sheets("Output").Rows("165").Hidden = True 
Sheets("Output").Rows("176").Hidden = True 
Case "European Physical" 
Sheets("Output").Rows("159:164").Hidden = True 
Sheets("Output").Rows("170:175").Hidden = True 
Sheets("Output").Rows("246:258").Hidden = True 
Case Else 
Sheets("Output").Rows("158:212").Hidden = False 
Sheets("Output").Rows("246:253").Hidden = False 
End Select 
End With 
End Sub 
+0

我猜这就是因为当你改变观察类型下拉列表中,在目标的值是一个观测类型。该值与收益中的任何情况都不匹配。因此运行'case else'显示所有行。 – nightcrawler23

+0

快速浏览一下,除了解决方案之外,还可以使用'With With Sheets(“Output”)',但每次都要继续声明它,而不是仅仅执行'.Rows(“1:2”)。 ..'不需要不断重复。 – BruceWayne

+3

@excelnewbie,你已经发布了这个问题[昨天](http://stackoverflow.com/questions/41098986/unable-to-hide-rows-correctly-vba)和一个非常相似的[12月9日]( http://stackoverflow.com/questions/41056861/sheet-refresh-sheet-doesnt-accept-entered-values)。你应该尝试跟踪已经给你的答案/建议和/或显示你的部分努力,而不是仅仅重复相同的代码 – user3598756

回答

0

既然你给你的代码中使用的目标,我猜你使用Worksheet_Change模块来运行代码。但是,您的代码应该看起来像这样来实现您所需的行为。 另外,请参阅我上面的评论

我已经使用A1和A2作为下拉列表的位置。您需要更改这些相应

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not (Intersect(Range("A1"), Target) Is Nothing) Then 
     Call showObservation(Target.value) '@nightcrawler23 
     ElseIf Not (Intersect(Range("A2"), Target) Is Nothing) Then 
     Call showPayoff(Target.value) '@nightcrawler23 
    End If 
End Sub 

Sub showPayoff(myCase as String) '@nightcrawler23 
    With Sheets("Output") 
     .Rows("112:137").Hidden = False 
     .Rows("138:151").Hidden = False 
     Select Case myCase '@nightcrawler23 
      Case "Bonus Capped Single Index" 
       .Rows("112:154").Hidden = True 
      Case "Bonus Capped Single Share" 
       .Rows("112:154").Hidden = True 
      Case "Bonus Uncapped Single Index" 
       .Rows("112:154").Hidden = True 
       .Rows("256:257").Hidden = True 
      Case "Bonus Uncapped Single Share" 
       .Rows("112:154").Hidden = True 
       .Rows("256:257").Hidden = True 
      Case "Bonus Uncapped Single Index" 
       .Rows("112:154").Hidden = True 
       .Rows("256:257").Hidden = True 
      Case "Bonus Capped Worst of Indices" 
       .Rows("112:154").Hidden = True 
      '... 
      '... 
      '... 
      '... 
     End Select 
    End With 
End Sub 

Sub showObservation(myCase as String) '@nightcrawler23 
    With Sheets("Output") 'Observation and delivery 
     .Rows("158:212").Hidden = False 
     .Rows("246:253").Hidden = False 

     Select Case myCase '@nightcrawler23 
      Case "American Cash" 
       .Rows("177:212").Hidden = True 
       .Rows("165").Hidden = True 
       .Rows("176").Hidden = True 
      Case "American Physical" 
       .Rows("162:164").Hidden = True 
       .Rows("177:212").Hidden = True 
       .Rows("173:175").Hidden = True 
       .Rows("246:253").Hidden = True 
      '... 
      '... 
      '... 
      '... 
     End Select 
    End With 
End Sub 
+0

谢谢您的回答,但它不起作用。将打开一个调试窗口,其中“Select Case Target.Value”行标记为 – excelnewbie

+0

请参阅上面的更改。您需要将Target.Value发送到潜艇,因为它们没有变量目标 – nightcrawler23

+0

@excelnewbie它有效吗? – nightcrawler23

相关问题