You can try this version of your algorithm - it's a little bit (~2x) faster in my testing (but I don't have any Hebrew text to test with, so I used the cutoffs shown...)
Function reverseOrderHebrew2(str As String) As String
Dim i As Long, c As String, sOut As String
Dim tmp As String
i = Len(str)
sOut = ""
tmp = ""
Do While i >= 1
c = Mid(str, i, 1)
If c < "a" Or c > "l" Then
tmp = c & tmp
Else
If Len(tmp) > 0 Then
sOut = sOut & tmp
tmp = ""
End If
sOut = sOut & c
End If
i = i - 1
Loop
If Len(tmp) > 0 Then sOut = sOut & tmp
reverseOrderHebrew2 = sOut
End Function
The other comments also have good suggestions - depending on how much text there is in your cells, the process of reading/writing the cell values may be more or less of a factor, and using a variant array may gain a lot of performance (as long as there are no formulas in your selection, which would get overwritten if you used that approach)