¿Cómo saber cual textbox contiene un string igual a otro?

Iniciado por rapbyone, 3 Septiembre 2016, 08:15 AM

0 Miembros y 1 Visitante están viendo este tema.

rapbyone

Amigos míos, solicito su apreciada ayuda: tengo mi formulario de la siguiente manera:



A través del command_button Realizo una comprobación entre los 3 texbox de la izquierda, con el textbox de la derecha para saber si el string del text4 se repite en alguno de los textbox de la izquierda a través del siguiente código:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
If Text4.Text = Text1.Text Or Text4.Text = Text2.Text Or Text4.Text = Text3.Text Then
MsgBox "iguales"
End If
End Sub


El tema es que necesito averiguar cual de los 3 de la izquierda es el que tiene el mismo string que el de la derecha, es decir poder obtener el nombre del control que tiene el mismo string.

Se puede hacer de alguna forma??
gracias amigos  ;-)





okik

Tienes varias maneras:
Sin que tengas que cambiar nada del programa que usas como ejemplo, es meter las palabras en un array y luego comparar y obtener el índice:

Código (vb) [Seleccionar]

Dim Index as Integer
Dim tmpText(1 To 4) As String
tmpText(1) = Text1.Text
tmpText(2) = Text2.Text
tmpText(3) = Text3.Text
tmpText(4) = Text4.Text
For Index = 1 To 3
If tmpText(4) = tmpText(Index) Then
MsgBox ("Texto: " & Index & " está repetido" _
& vbCrLf & "Palabra: " & tmpText(Index))
End If
Next Index




Otra forma  es crear una Matriz de controles, que consiste en crear un control y llamarlo txtPalabra, por ejemplo y en Propiedades del control establecer en la propiedad Index, el valor 0, después copia el control en el formulario y pega de nuevo, automáticamente se crea otro control idéntico con el Index=1, si copias y pegas otro tendrá Index=2....

También puedes copiar y pegar directamente y VB te preguntará si deseas crear una matriz de controles le dices que sí y listo, cada vez que lo copies y pegues se irá añadiendo un índice.

Luego para comparar haces lo siguiente:

Código (vb) [Seleccionar]

Dim Index as Integer
For Index = 0 To 2
If txtPalabra(3).Text = txtPalabra(Index).Text Then
MsgBox ("Texto: " & Index & " está repetido" _
& vbCrLf & "Palabra: " & txtPalabra(Index))
End If
Next Index


El primer control de texto en este caso tiene el Indice = 0
txtPalabra(0)
txtPalabra(1)
txtPalabra(2)
txtPalabra(3)

txtPalabra(3)  sería el cuarto.


rapbyone

Cita de: okik en  3 Septiembre 2016, 17:51 PM
Tienes varias maneras:
Sin que tengas que cambiar nada del programa que usas como ejemplo, es meter las palabras en un array y luego comparar y obtener el índice:

Código (vb) [Seleccionar]

Dim Index as Integer
Dim tmpText(1 To 4) As String
tmpText(1) = Text1.Text
tmpText(2) = Text2.Text
tmpText(3) = Text3.Text
tmpText(4) = Text4.Text
For Index = 1 To 3
If tmpText(4) = tmpText(Index) Then
MsgBox ("Texto: " & Index & " está repetido" _
& vbCrLf & "Palabra: " & tmpText(Index))
End If
Next Index




Otra forma  es crear una Matriz de controles, que consiste en crear un control y llamarlo txtPalabra, por ejemplo y en Propiedades del control establecer en la propiedad Index, el valor 0, después copia el control en el formulario y pega de nuevo, automáticamente se crea otro control idéntico con el Index=1, si copias y pegas otro tendrá Index=2....

También puedes copiar y pegar directamente y VB te preguntará si deseas crear una matriz de controles le dices que sí y listo, cada vez que lo copies y pegues se irá añadiendo un índice.

Luego para comparar haces lo siguiente:

Código (vb) [Seleccionar]

Dim Index as Integer
For Index = 0 To 2
If txtPalabra(3).Text = txtPalabra(Index).Text Then
MsgBox ("Texto: " & Index & " está repetido" _
& vbCrLf & "Palabra: " & txtPalabra(Index))
End If
Next Index


El primer control de texto en este caso tiene el Indice = 0
txtPalabra(0)
txtPalabra(1)
txtPalabra(2)
txtPalabra(3)

txtPalabra(3)  sería el cuarto.



Perfecto amigo, manos a la obra
muchas gracias amigo