Just some code suggestions, but in agreement with Boyds path ...
Since you have multiple events that could effect the visibility of your controls, then I would create a Private procedure in the code behind the form:
Private Function ControlVisibility() As Byte
Dim Chye As Boolean
Chye = Nz(DLookup("ER", "tbl_subA", "AD= " & Me.AD), False)
Me.EC.Visible = Chye
Me.WE.Visible = Not Chye
Then, I would call that code in the events that need to use it. If the event that controls the visibility only has to call the ControlVisibility code (like for the AD after update event), then you can set the event property to call the code directly with a setting like this:
However, if the event has to do other stuff, or behave slightly differently (like the Forms Current event) then you would set the event property to "[event procedure]" and enter your code, but in that block of code be sure to call the ControlVisibility() procedure.
Private Sub Form_Current()
If Me.NewRecord Then
Me.WE.Visible = False
Me.EC.Visible = False