That's a stunning help from both of you and thank you for the warm welcome.

Appreciated that you also looked into the step 2 and found what might be fixed.

I have compiled bits of your codes and knowledge into one sub main with three steps:

1. Make all first letters of each word lowercase.
2. Make all first letters of each word uppercase. At this point, apply the exclusion list (leave the words in the too array as they were originally).
3. Delete the unwanted word.

Sub Main()
For Each cll In Selection.Cells
  xx = Split(cll.Value)
  For i = LBound(xx) To UBound(xx)
    xx(i) = LCase(Left(xx(i), 1)) & Mid(xx(i), 2)
  Next i
  cll.Value = Join(xx)
Next cll


too = Array("in", "with", "en", "pour", "para", "a", "per", "di", "de", "avec", "contre", "dans", "entre", "par", "sans", "sur", "bis", "für", "aus", "mit", "nach", "von", "auf", "sopra", "tra", "da", "con", "contra", "por", "sin")
For Each cll In Selection.Cells
  xx = Split(cll.Value)
  For i = LBound(xx) To UBound(xx)
    If IsError(Application.Match(xx(i), too, 0)) Then xx(i) = UCase(Left(xx(i), 1)) & Mid(xx(i), 2)
  Next i
  cll.Value = Join(xx)
Next cll


For Each cll In Selection.Cells
    Selection.Replace What:="dot ", Replacement:=""
Next cll
End Sub
Some background - I deal with multiple stakeholders and they deliver me these Excel files with all of those strings. Dealing with multiple stakeholders means that each of them will always deliver me a bit different string with different capitalization pattern and so on, so I want to standardize the look of the text across all the cells. Therefore, I opened this thread.

Short additional explanation - I did it in this order because sometimes the words from the too array come to me, starting with a lowercase and sometimes with an uppercase (and I need to change/keep them all to the lowercase). If I completely followed your code, then I would have a problem with substituting, let's say, "With" into "with" because "With" would be kept on the exclusion list (too array), hence it would not be changed into lowercase.

The created function works smoothly on my end and I'm gonna keep it as a backup option. Easy to use and effective and... easy to explain to other people.

To sum up - I have run the above code for a couple of times and it seems to work like a charm, but could I just please ask you to have a look to check if there are any potential errors/problems that I might encounter in the future (and that I haven't been able to notice myself)? I am compiling these codes based on your suggestions, some online tutorials, and Google, so I'm no expert at all.