2013-06-05 73 views
1

我試圖在一張表中有多個Worksheet_Change,但是我遇到了實施它們的問題。多個Worksheet_Change問​​題

我想:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$B$6" Then 
    Select Case Target.Value 
     Case "Yes" 
     Range("DataYes").EntireRow.Hidden = True 
     Range("DataNo").EntireRow.Hidden = False 
     Case "No" 
     Range("DataYes").EntireRow.Hidden = False 
     Range("DataNo").EntireRow.Hidden = True 
     Case "" 
     Range("DataYes").EntireRow.Hidden = True 
     Range("DataNo").EntireRow.Hidden = True 
    End Select 
    End If 


    If Target.Address = "$Q$6" Then 
    Select Case Target.Value 
     Case "TRUE" 
     Range("DataNo").EntireRow.Hidden = False 
     Range("CrComments").EntireRow.Hidden = False 
     Case "FALSE" 
     Range("CrComments").EntireRow.Hidden = True 
    End Select 
    End If 

End Sub 

在這種情況下,只有代碼的第一件作品。第二個不是。沒有錯誤消息。

我也試過:

Private Sub Worksheet_Change(ByVal Target As Range) 

Select Case Target.Address 

    Case "$B$6" 
     If Range("B6").Value = "Yes" Then 
      Range("DataYes").EntireRow.Hidden = True 
      Range("DataNo").EntireRow.Hidden = False 
     ElseIf Range("B6").Value = "No" Then 
      Range("DataYes").EntireRow.Hidden = False 
      Range("DataNo").EntireRow.Hidden = True 
     ElseIf Range("B6").Value = "" Then 
      Range("DataYes").EntireRow.Hidden = True 
      Range("DataNo").EntireRow.Hidden = True 
     End If 
     End If 

    Case "$Q$6" 
     If Range("Q6").Value = "TRUE" Then 
      Range("CrComments").EntireRow.Hidden = False 
     ElseIf Range("Q6").Value = "FALSE" Then 
      Range("CrComments").EntireRow.Hidden = True 
     End If 
     End If 


End Select 
End Sub 

在這段代碼中,我得到了一個End if without block if錯誤第一種情況下的最後End If

刪除出錯結束的IF仍然沒有使代碼工作的第二件

回答

1

你有兩個錯誤的「結束如果」,這裏是固定碼:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Select Case Target.Address 

     Case "$B$6" 
      If Range("B6").Value = "Yes" Then 
       Range("DataYes").EntireRow.Hidden = True 
       Range("DataNo").EntireRow.Hidden = False 
      ElseIf Range("B6").Value = "No" Then 
       Range("DataYes").EntireRow.Hidden = False 
       Range("DataNo").EntireRow.Hidden = True 
      ElseIf Range("B6").Value = "" Then 
       Range("DataYes").EntireRow.Hidden = True 
       Range("DataNo").EntireRow.Hidden = True 
      End If 

     Case "$Q$6" 
      If Range("Q6").Value = "TRUE" Then 
       Range("CrComments").EntireRow.Hidden = False 
      ElseIf Range("Q6").Value = "FALSE" Then 
       Range("CrComments").EntireRow.Hidden = True 
      End If 
    End Select 
End Sub 

至於你原來的問題它不應該改變任何東西。

請問您能提供更多信息嗎?

+0

謝謝,我沒有收到任何錯誤,但'Q6'部分仍然不起作用。 'Q6'部分是根據複選框選擇更改爲「TRUE」或「FALSE」的單元格。如果這是真的,則應該放棄一行。 'B6'部分起作用,'Q6'不起作用。這裏有更多的代碼。 'Explicit選項 子AssignRownames() 行( 「15:15」)。EntireRow.Name = 「DataYes」 行( 「16:16」)。EntireRow.Name = 「DataNo」 行(「8 :8「)EntireRow.Name =」CrComments「 End Sub' – pufAmuf

+1

您是否嘗試過使用」True「和」False「? – Pragmateek

+0

是的,我甚至在沒有引號的情況下嘗試過'True''False'。 – pufAmuf

2

「FALSE」和「TRUE」的單元格值將被讀取爲FalseTrue(布爾值,而不是字符串),因此您需要更改Q6上的測試。

If Target.Address = "$Q$6" Then 
    Select Case Target.Value 
     Case True 
     Range("DataNo").EntireRow.Hidden = False 
     Range("CrComments").EntireRow.Hidden = False 
     Case False 
     Range("CrComments").EntireRow.Hidden = True 
    End Select 
End If 
+0

謝謝,但我有一個單元格從它讀取該字符串,其細胞被寫爲TRUE或FALSE。當我改變了這部分代碼中,'Q6'部分仍然無法正常工作。 – pufAmuf

+0

然後我不不知道還有什麼建議......它對我有用。 –