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