2016-12-14 101 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

相關問題