Put this code into the Access Sheet module:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
For Each cell In Target
If cell.Column = 6 Then
Select Case cell.Value
Case "Company", "Organization", "School", "S. S. C. board"
Application.EnableEvents = False
Range("Q" & cell.Row).Resize(, 9).Value = "-"
Application.EnableEvents = True
Case Else
'do nothing
End Select
End If
Next cell
End Sub
In your original code reduces down to:
Sub Sort()
Application.Goto Reference:="R7C3:R2000C25"
ActiveWorkbook.Worksheets("Access").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Access").Sort.SortFields.Add Key:=Range("C7"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Access").Sort
.SetRange Range("C7:y2000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Save
End Sub
I think that's enough for one thread. 
If that takes care of your original question, please select Thread Tools from the menu link above and mark this thread as SOLVED. Thanks.
Bookmarks