Duda Con bucle de búsqueda y remplazo

Hola experto,
Realmente soy nuevo en esto del trabajo con macros en excel. Tengo dos botones de comando y cuatro textbox en un formulario de excel distribuidos de la siguiente manera:
textbox1= identificacion
textbox2= usuario
textbox3= Fecha de Respuesta
textbox4= Respuesta
Inicialmente en el textbox1 indico el numero de cedula del usuario para que al dar clic en el primer botón de comando el nombre del usuario sea traído al textbox2. Hasta ahí voy bien. Los textbox 3 y 4 son campos que debo diligenciar con la fecha y el resumen de la respuesta que se da a su petición. Empleo el siguiente código y obtengo como resultado que todas las celdas hasta la celda objetiva se llenan con los campos del textbox 3 y 4. Mi problema esta en el código con la fuente en Negrita:
i = 2
If TextBox1.Value = "" Then
TextBox2 = ""
MsgBox "Digite la Identificación de Usuario"
Else
While Hoja1.Cells(i, 3) <> ""
If TextBox1.Text = Hoja1.Cells(i, 3) Then
TextBox2.Text = Hoja1.Cells(i, 2)
End If
i = i + 1
Wend
End If
End Sub
Private Sub CommandButton2_Click()
k = 2
If TextBox3.Text = "" Or TextBox4.Text = "" Then
MsgBox "Diligencie el campo de fecha y resumen de Respuesta"
End If
If TextBox1.Text = Hoja1.Cells(k, 3) Then


Hoja1.Cells(k, 10) = TextBox3.Text
Hoja1.Cells(k, 11) = TextBox4.Text
Else
While TextBox1.Text <> Hoja1.Cells(k, 3)
k = k + 1
Hoja1.Cells(k, 10) = TextBox3.Text
Hoja1.Cells(k, 11) = TextBox4.Text
Wend


End If

End Sub
Agradezco enormemente su pronta ayuda y sus valiosos comentarios

1 respuesta

Respuesta
1
Así como esta el bucle hace bien su trabajo, o sea rellenar si el TextBox1.Text <> Hoja1. Cells(k, 3)
Según lo que leo de tu script el text 3 y 4 lo pasas a las columnas 10 y 11 siempre que antes exista el id del usuario, hasta allí bien.
El problema es si cambio el valor del text1 en relación al contenido de la col 3, es decri ( si el usuario no existe)
¿Supongo qué la idea es agregar solo para aquellos que existen o no?, si es eso y no otra cosa, lo que debes hacer es habilitar o deshabilitar el botón agregar en función al resultado de la primera operación.
Es decir partes la aplicación con el botón 2 deshabilitado, presionas botón 1 entonces
1 encuentra usuario=habilita boton2
2 presionas boton3 pasando datos a la hoja y deshabilitas boton2
Vuelve al punto 1.
Hola experto, el concepto que me das es supremamente valioso, no se me hubiese ocurrido pensarlo en esa forma. El único punto es que lo aplico a mi macro y no me permite grabar unicamente en las celdas objetivo adyacentes al usuario buscadol, sino que me sigue grabando en todas las celdas anteriores a la misma.
Gracias por la agilidad y el interés por mi pregunta y estoy atento a tus comentarios
Prueba así:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer
i = 2
If TextBox1.Value = "" Then
TextBox2 = ""
MsgBox "Digite la Identificación de Usuario"
Else
While Hoja1.Cells(i, 3) <> ""
If TextBox1.Text = Hoja1.Cells(i, 3).Text Then
TextBox2.Text = Hoja1.Cells(i, 2)
CommandButton2.Enabled = True
End If
i = i + 1
Wend
End If
End Sub
Private Sub CommandButton2_Click()
Dim k As Integer
k = 2
If TextBox3.Text = "" Or TextBox4.Text = "" Then
MsgBox "Diligencie el campo de fecha y resumen de Respuesta"
End If
If TextBox1.Text = Hoja1.Cells(k, 3).Text Then
Hoja1.Cells(k, 10) = TextBox3.Text
Hoja1.Cells(k, 11) = TextBox4.Text
Else
While TextBox1.Text <> Hoja1.Cells(k, 3).Text
k = k + 1
If TextBox1.Text = Hoja1.Cells(k, 3) Then
Hoja1.Cells(k, 10) = TextBox3.Text
Hoja1.Cells(k, 11) = TextBox4.Text
End If
Wend
End If
CommandButton2.Enabled = False
End Sub
Private Sub UserForm_Initialize()
CommandButton2.Enabled = False
End Sub
Excelente Experto. Me ha sido Extremadamente valioso tu aporte, he podido corregir al fin ese detalle y finalizar la estructura de mi pequeño trabajo... Espero molestarte más adelante para adquirir más conocimientos respecto a este tema apasionante como es la programación... Nuevamente muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas