2016-02-08 13 views
3

我已經設置了一個工作表,該工作表允許用戶從單元格中的數據驗證列表中選擇預設選項(B23)。用戶在這一個單元格中的選擇將觸發某些行不被隱藏,引導用戶將數據輸入到適當的行中。我用來取消隱藏相應行的VBA代碼工作正常,除非用戶將數據輸入到其中一個未隱藏行中,否則所有行都會隱藏。然後用戶需要從初始數據驗證列表(單元格B23)重新選擇它們的選項以再次取消隱藏相應的行。他們輸入的值被輸入並保存在單元格中,但他們需要在每個數據輸入步驟之間重新選擇它們的初始選擇,這很煩人,而我想要修復。爲數據輸入取消隱藏基於單元格值的行 - 刷新錯誤

我懷疑: 1)VBA代碼我蹣跚一起不考慮這一事實的用戶將數據輸入到被隱藏/將被觸發取消隱藏行,和/或 2)的關鍵問題是使用數據驗證列表(B23)刷新單元格,以觸發哪些行未被隱藏。不幸的是,我不知道該怎麼做。

任何幫助將非常感謝!

我的隱藏行的VBA代碼如下。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim allRows As Range 

Set allRows = Rows("27:64") 
allRows.Hidden = True 

If Not Intersect(Target, Range("B23")) Is Nothing Then 
    If Target.Value = "A1" Then 
     Rows("27:31").Hidden = False 
    ElseIf (Target.Value = "A10-A-S" Or Target.Value = "A10-A-P" Or Target.Value = "A10-A-T") Then 
     Rows("32:36").Hidden = False 
    ElseIf (Target.Value = "A10-B-S" Or Target.Value = "A10-B-P" Or Target.Value = "A10-B-T") Then 
     Rows("37:44").Hidden = False 
    ElseIf (Target.Value = "E19S" Or Target.Value = "E19P" Or Target.Value = "E19T") Then 
     Rows("46:54").Hidden = False 
    ElseIf (Target.Value = "E20S" Or Target.Value = "E20P" Or Target.Value = "E20T") Then 
     Rows("56:64").Hidden = False 
    End If 
End If 

End Sub 

回答

1

您只要任何人改變工作表上什麼是正確的,該Worksheet_Change事件將觸發並隱藏行。

一個簡單的選擇很可能會以包裹檢查代碼的改變是由你的下拉菜單觸發:

With Target 
    If .Count = 1 Then 
     If .Row = 23 And .Column = 2 Then ' Assumes your list result is B23? 
      allRows.Hidden = True 
      ' do your other checks and updates here... 
     End If  
    End If 
End With 
0

您應該檢查目標是B23,如果不是Exit Sub。也許是這樣的。

If Intersect(Target, Range("B23")) Is Nothing Then 
     Exit Sub 
    End If 
相關問題