This should do step 1 successfully; it acts on the currently selected cells:
Sub blah()
For Each cll In Selection.Cells
  xx = Split(cll.Value)
  For i = LBound(xx) To UBound(xx)
    xx(i) = UCase(Left(xx(i), 1)) & Mid(xx(i), 2)
  Next i
  cll.Value = Join(xx)
Next cll
End Sub