View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Gary''s Student Gary''s Student is offline
external usenet poster
 
Posts: 11,058
Default Clear contents on change

I see why neither your nor my code works. If the cells in columns O & Q have
formulas, the change event won't get triggered, we would need some kind of
Calculate event.
--
Gary''s Student - gsnu200832


"Suzanne" wrote:

Didn't work. Details I didn't include in the original message (if it helps):

Option Explicit

COL O is a dropdown listing hazard codes
=IF(P2="",HAZCODELIST,INDEX(HAZCODE,MATCH(P2,HAZCO DE,0)))
COL P is a dropdown listing the name of the hazard -- based on COL O
selection
=OFFSET(HAZCODE,MATCH(O2,HAZCODE,0)-1,1,COUNTIF(HAZCODE,O2),1)

COL Q is a dropdown listing hazard names (to search by name instead of code)
=IF(R2="",HAZNAME2,INDEX(HAZNAME2,MATCH(R2,HAZNAME 2,0)))
COL R is a dropdown of hazard codes -- based on COL Q selection
=OFFSET(HAZNAME2,MATCH(Q2,HAZNAME2,0)-1,1,COUNTIF(HAZNAME2,Q2),1)

If users select COL O, COL P populates with names associated with the
selection (and so on with COL Q/R)

What I need to do: Eliminate the opportunity for population of both COL O/P
and COL Q/R (it MUST be one or the other)

Finally, this wasn't possible in Excel 2003 -- can it be done in 2007??

Clear COL P if COL O changes (same for COL Q/R)

For example, if the cell in COL P is filled, users must manually clear
(delete) the cell content if they want to change the selection from COL O

The kicker... I don't want COL P to clear unless COL O actually
changes (i.e., don't clear on focus; do clear on change)

Thanks -- Suzanne

"Gary''s Student" wrote:

Try this:

Private Sub Worksheet_Change(ByVal Target As Range)
Set t = Target
Set rr = Union(Range("O:O"), Range("Q:Q"))
If Intersect(t, rr) Is Nothing Then Exit Sub
c = t.Column
r = t.Row
Application.EnableEvents = False
If c = 15 Then
Cells(r, "P").ClearContents
Cells(r, "Q").ClearContents
Cells(r, "R").ClearContents
Else
Cells(r, "P").ClearContents
Cells(r, "O").ClearContents
Cells(r, "R").ClearContents
End If
Application.EnableEvents = True
End Sub

--
Gary''s Student - gsnu200832


"Suzanne" wrote:

If a cell in COL O changes, I want to clear the contents of COL P, Q R (in
the same row)
If a cell in COL Q changes, I want to clear the contents of COL O, P, R
(again in the same row)

I think I had the following working in Excel 2003, but its not working in
2007.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

With Target
Select Case .Column
Case 15 'column O
Application.EnableEvents = False
Cells(.Row, "P").ClearContents
Cells(.Row, "Q").ClearContents
Cells(.Row, "R").ClearContents
Application.EnableEvents = True
Case 17 'column Q
Application.EnableEvents = False
Cells(.Row, "O").ClearContents
Cells(.Row, "P").ClearContents
Cells(.Row, "R").ClearContents
Application.EnableEvents = True
End Select
End With

End Sub