[COLOR="Navy"]Private[/COLOR] [COLOR="Navy"]Sub[/COLOR] Worksheet_Change(ByVal Target [COLOR="Navy"]As[/COLOR] Range)
[COLOR="Navy"]Dim[/COLOR] c [COLOR="Navy"]As[/COLOR] Range
[COLOR="Navy"]Dim[/COLOR] sTemp [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String[/COLOR]
[COLOR="Navy"]If[/COLOR] [COLOR="Navy"]Not[/COLOR] Intersect(Target, Range("_MyRange")) [COLOR="Navy"]Is[/COLOR] [COLOR="Navy"]Nothing[/COLOR] [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]If[/COLOR] Target.Count = 1 [COLOR="Navy"]Then[/COLOR] [COLOR="SeaGreen"]'//multi-cell changes are ignored[/COLOR]
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] c [COLOR="Navy"]In[/COLOR] Range("_MyRange").Cells
[COLOR="Navy"]If[/COLOR] c.Value = Target.Value [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]If[/COLOR] c.Address <> Target.Address [COLOR="Navy"]Then[/COLOR]
sTemp = newRank
[COLOR="Navy"]If[/COLOR] sTemp <> "" [COLOR="Navy"]Then[/COLOR]
Application.EnableEvents = False
c.Value = sTemp
Application.EnableEvents = True
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]Next[/COLOR] c
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]Sub[/COLOR]
[COLOR="Navy"]Function[/COLOR] newRank() [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String[/COLOR]
[COLOR="Navy"]Dim[/COLOR] c [COLOR="Navy"]As[/COLOR] Range, r [COLOR="Navy"]As[/COLOR] Range
[COLOR="Navy"]Dim[/COLOR] s [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String[/COLOR]
[COLOR="Navy"]Dim[/COLOR] i [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Set[/COLOR] r = Range("_MyRange")
[COLOR="SeaGreen"]'//Rank 1 to Count of Cells[/COLOR]
[COLOR="Navy"]For[/COLOR] i = 1 [COLOR="Navy"]To[/COLOR] 4
s = s & " " & i & " "
[COLOR="Navy"]Next[/COLOR] i
[COLOR="SeaGreen"]'//Strip out all values until only the missing value remains[/COLOR]
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] c [COLOR="Navy"]In[/COLOR] r
s = Replace(s, " " & c.Value & " ", "", 1, 1)
[COLOR="Navy"]Next[/COLOR] c
[COLOR="SeaGreen"]'//If more than one missing value or no missing value then no return value[/COLOR]
[COLOR="Navy"]If[/COLOR] Len(s) - Len(Trim(s)) = 2 [COLOR="Navy"]Then[/COLOR]
newRank = s
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]If[/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]Function[/COLOR]