Todas las funciones esas tiene un problema de logica.....
Si, por ejemplo, hago una busqueda asi
Const StrOri As String = "Miguel Angel Ortega Avila"
Const StrIni As String = "El"
Const StrFin As String = "el"
el resultado va a ser nulo porque se comienza a buscar desde el principio en ambas ocasiones y en realidad la segunda palabra se tiene que buscar a partir del final de la primera.....
Public Function Entre_Texto(ByRef StrIn As String, ByVal StrIni As String, ByVal StrFin As String, Optional ComparacionEstricta As Boolean) As String
Dim Pos(1) As Long
Dim IniPos As Long
If Len(StrIn) Then
Pos(0) = InStr(1, StrIn, StrIni, Abs(Not ComparacionEstricta))
If Pos(0) = 0 Then Exit Function
IniPos = Pos(0) + Len(StrIni)
Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))
If Pos(1) = 0 Then Exit Function
Entre_Texto = Mid$(StrIn, IniPos, Pos(1) - IniPos)
End If
End Function
Private Sub Form_Load()
Const StrOri As String = "Miguel Angel Ortega Avila"
Const StrIni As String = "El"
Const StrFin As String = "el"
'MsgBox Text_Between_Words(StrOri, StrIni, StrFin)
'MsgBox TextoEntreMedio(StrOri, StrIni, StrFin)
Debug.Print Entre_Texto(StrOri, StrIni, StrFin, True)
Debug.Print Entre_Texto(StrOri, StrIni, StrFin, False)
End Sub