La función InStr se utiliza para buscar una cadena o parte de una cadena dentro de otra cadena.
Si la función encuentra la cadena a buscar devuelve un número que representa la posición donde encontró la cadena, si no la encuentra devuelve un 0.
Los parámetros que lleva esta función son:
InStr (comienzo, Cadena donde buscar , La Cadena a buscar)
Como esta función devuelve un número debemos almacenarla en una variable de tipo numérica para utilizarla.
Ejemplo:
Dim posicion As Integer
posicion = InStr("Estoy tomando mate", "mate")
En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que la variable posición pasa a valer 15.
Si observamos bien, la función en el primer parámetro, denominado comienzo, nos pide que le digamos desde que posición comenzar a buscar. En nuestro ejemplo, este parámetro lo obviamos, esto quiere decir que comenzará desde la posición 0 de la cadena a buscar. Pero podríamos especificar una posición en particular, por ejemplo desde la 5 , 10 etc..., según lo que necesitemos hacer.
Otro ejemplo de InsTr :
Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos opciones, un botón para buscar la primera frase, y otro que sigue buscando a partir de donde esté ubicda la selección.
Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresará la frase y otro TextBox llamado Text1 que tendrá el texto. Este ultimo con la propiedad Multiline en True.
También colocar dos CommandButton: Command1 y Command2
Colocar el siguiente código fuente en el formulario:
Option Explicit
Private m_Pos As Integer
Sub buscar_cadena(ByVal Posicion As Integer)
Dim p As Integer, Frase As String
Frase = txt_Buscar
p = InStr(Posicion, Text1, Frase)
If p > 0 Then
m_Pos = p
With Text1
.SelStart = m_Pos - 1
.SelLength = Len(Frase)
.SetFocus
End With
Else
MsgBox "No se encontró la frase", vbInformation
Text1.SetFocus
End If
End Sub
Private Sub Command1_Click()
'Busca a pratir de la primera pocición
Call buscar_cadena(1)
End Sub
Private Sub Command2_Click()
'Busca a partir del valor que tenga m_Pos
Call buscar_cadena(m_Pos + 1)
End Sub
Private Sub Form_Load()
Command1.Caption = "Buscar"
Command2.Caption = "Buscar siguiente"
Me.Caption = "Ejemplo de InStr "
End Sub
Nota: también hay una función similar a Instr llamada InstrRev , y lo que hace es devolver la posición de la primera concurrencia de una cadena dentro de otra cadena, pero comenzando por el extremo derecho de la misma.
No hay comentarios:
Publicar un comentario