2017-03-09 78 views
0

是否有一種簡單的方法讓Excel在單元格更改時自動執行宏?Excel VBA在單元格從yes更改爲no時自動運行宏

Sub Change() 
If Range("E94").Value = "no" Then 
    Rows("95:118").EntireRow.Hidden = True 
ElseIf Range("E94").Value = "yes" Then 
    Rows("95:118").EntireRow.Hidden = False 
End If 
End Sub 

如果有人改變了細胞E94從「無」(標準)爲「是」應該「彈出」細胞免受值「95 - 118」。 如果我從「是」改回「否」,它們應該消失。

回答

1

使用Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal Target As Range) 
'Call your Sub here 
End Sub 

或者,您可以使用事件的對象範圍:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address(False,False) = "E94" Then 
    If Target.Value = "no" Then 
     Rows("95:118").EntireRow.Hidden = True 
    ElseIf Target.Value = "yes" Then 
     Rows("95:118").EntireRow.Hidden = False 
    End If 
End If 
End Sub 
+0

你的代碼會隱藏/取消隱藏僅列94,和OP要隱藏/取消隱藏行(「95:118」) –

+0

@ShaiRado起坐,不是看他的代碼正常。編輯 – gizlmo

2

可以使用Worksheet_Change事件,您希望這個代碼中的相關表跑步。

在你的情況,如果你想只有當細胞「E94」變更運行此代碼,那麼你需要檢查,如果某些細胞發生變化,你行做到這一點:

If Not Intersect(Target, Range("E94")) Is Nothing Then 

代碼

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("E94")) Is Nothing Then 
    If Target.Value = "no" Then 
     Rows("95:118").EntireRow.Hidden = True 
    ElseIf Target.Value = "yes" Then 
     Rows("95:118").EntireRow.Hidden = False 
    End If 
End If 

End Sub 
+0

是的,這正是我所尋找的。非常感謝。你節省了我的時間。對此,我真的非常感激。 – kyuubi

相關問題