Función que si "encuentra" haga una acción

Iniciado por dimitrix, 19 Mayo 2008, 12:16 PM

0 Miembros y 2 Visitantes están viendo este tema.

dimitrix

Hola, lo que necesito es que si el programa "encuentra" una palabra en un texto haga una acción por ejemplo un msgbox, no puedo utilizar el If, ya que no el texto puede tener otros contenidos.

Thank.




cobein

Option Explicit

Private Sub Form_Load()
    '// Case sensitive
    If Not InStr(1, "Tu Texto", "Lo que buscas") = 0 Then
        Debug.Print "WTF"
    End If
   
    '// Case insensitive
    If Not InStr(1, UCase("Tu Texto"), UCase("Lo que buscas")) = 0 Then
        Debug.Print "WTF"
    End If
End Sub
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

cobein

Imagino !!!!! cosa que no tendria que pero bueno dejemoslo ahi, que el comentario del if es simplemente porque el no quire comparar una frase exacta sino ver si una palabra/s existen en un texto
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

dimitrix

Exacto, es lo que  dice "cobein", al principio no me iba, luego ya cambié las cositas un poquito y ya me va genial, pongo el código:

Código (vb) [Seleccionar]
Option Explicit

Private Sub Command1_Click()
    'Si no encuentra la letra "a" pasa abajo
    If Not InStr(1, Text1, "a") = 0 Then
        MsgBox "Econtré la letra a"
    Else
   
        MsgBox "No encontré la letra a"

End If
End Sub


Solo por curiosidad seba123neo, ¿Cómo sería con "Case"? Nunca está de más aprender.




cobein

Option Explicit

Private Sub Form_Load()
    Select Case True
        Case "mi texto tiene esto" Like "*esto*"
            Debug.Print "SE ACA TA"
        Case Else
            Debug.Print "NO TA"
    End Select
End Sub
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

seba123neo

a listo,ahora caigo  :),pues algo asi:

Option Explicit

Private Sub Command1_Click()
Select Case InStr(1, Text1, "a")
Case Is = 0
MsgBox "No encontré la letra a"
Case Is <> 0
MsgBox "encontré la letra a"
End Select
End Sub


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

dimitrix

Muchas gracias, unas preguntas para aprender ya que no encontré en google:

¿Qué hace el "Debug.Print"? Ya que imprimir algo en pantalla sería más lógico en C no en VB.

¿La función "Not InStr" que hace exactamente?, ¿Tiene otra función?




cobein

Debug.Print Imprime un dato en el Debug o Inmediato o como quieras llamarlo (Ctrl + G para abrirlo)

Not InStr son 2 cosas Not es simplemente una negacion Not 1 = 0 es lo mismo que 1 <> 0 

Y Instr es para bucar una cadena dentro de otra.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

dimitrix

Mmm no entendí eso de

"Debug.Print Imprime un dato en el Debug o Inmediato o como quieras llamarlo (Ctrl + G para abrirlo)"

¿Cuando hay que hacer lo de Crtl + G?