¿Cómo guardar el valor de un textbox en una celda que coincida con un criterio de búsqueda?

Tengo una hoja de excel (hoja 1) con claves de proyectos que se han registrado. Usamos un formulario (Userform2) para dar seguimiento a cada uno de los proyectos. Éste formulario me permite buscar la clave de cada proyecto con un combobox. Lo que quiero es que al registrar un textbox del UF2 me guarde la información en la hoja 1 pero en el renglón que corresponde a la clave del proyecto seleccionado. Actualmente me da los registros pero en desorden. He intentado hacerlo mediante una condición IF pero no me ha resultado.

1 respuesta

Respuesta
3

Puedes poner cómo cargas los proyectos en el combobox.

¿Existen proyectos repetidos?

¿En cuál columna de la hoja1 están los proyectos?

¿En cuál columna de la hoja1 vas a poner el dato del textbox?

Después de responder lo anterior, supongo que la lógica sería así:

- Capturas o seleccionas un proyecto en el combobox

- Capturas un dato en el textbox

- Presionas un botón y quieres que el dato del textbox se pase a la hoja1, en la misma fila donde está el dato del combo. ¿Correcto?

Es correcto Dante, la lógica sería como lo mencionas. A continuación respondo tus preguntas:

¿Existen proyectos repetidos?: Sí, pero los registros repetidos pertenecen al mismo proyecto ya que otra parte de la herramienta nos registra la cantidad de personas que intervienen en cada uno de los proyectos, por lo que tendríamos p.ej. 5 registros con la misma clave de proyecto (Pero no vería problema si se duplican los registros derivados del nuevo UF que quiero programar, siempre y cuando queden dentro de la clave que les corresponde)

¿En cuál columna de la hoja1 están los proyectos?: están en la columna A

¿En cuál columna de la hoja1 vas a poner el dato del textbox?: en la columna N 

Puedes poner cómo cargas los proyectos en el combobox: El combobox toma la clave  directamente de la hoja 1 (columna A), pero aquí sí logré que me diera sólo los registros únicos. Por lo que al registrar un nuevo proyecto en la hoja 1 aparece directamente en el combobox

Saludos

Pero si tienes 5 registros con el mismo proyecto, y quieres agregar el dato del textbox al proyecto, ¿a cuál de los 5 registros se le pondría el dato?

Y cuando te pedí que pusieras cómo cargas los proyectos al combo, me refiero a que pongas el código de VBA que utilizas.

Sería suficiente con que me ponga el dato en el primer registro, ya que al final la idea es hacer un reporte y ahí solo pondremos los datos únicos, por eso te decía que no veo mucho problema si es que se repiten los registros. 

sobre el código, es el siguiente:

Private Sub UserForm_Initialize()
Dim Fila As Integer, final As Integer, Registro As Integer
Fila = 1
Do While Hoja1.Cells(Fila, 1) <> ""
Fila = Fila + 1
Loop
final = Fila - 1

With Hoja1
For Fila = 4 To final
Registro = WorksheetFunction.CountIf(.Range(.Cells(1, 1), .Cells(Fila, 1)), .Cells(Fila, 1))
If Registro = 1 Then
ComboBox1.AddItem .Cells(Fila, 1)
End If
Next Fila
End With

End Sub

*** con este código quito los duplicados y me muestra los registros únicos en el combo

Te anexo el código para el botón

Private Sub CommandButton1_Click()
'Por Dante Amor
    'Actualizar proyecto
    '
    'Validaciones
    If TextBox1.Value = "" Then
        MsgBox "Captura un dato en el textbox", vbExclamation
        TextBox1.SetFocus
        Exit Sub
    End If
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then
        MsgBox "Selecciona un registro del combo", vbExclamation
        ComboBox1.SetFocus
        Exit Sub
    End If
    '
    'Actualización
    Set h = Sheets("Hoja1")
    Set b = h.Columns("A").Find(ComboBox1.Value, lookat:=xlWhole)
    If Not b Is Nothing Then
        h.Cells(b.Row, "N").Value = TextBox1
        MsgBox "Proyecto actualizado", vbInformation
    End If
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Perfectísimo, me funcionó bastante bien. Te lo agradezco mucho! Sólo si pudieras explicarme que es lo que hace esta parte del código "lookat:xlwhole" para poder interpretarlo mejor y tratar de aplicarlo yo mismo en futuras ocasiones.

Gracias por el apoyo!

El parámetro Lookat, se refiere a sí la búsqueda debe Coincidir con el contenido de toda la celda, las constantes pueden ser XlWhole (la búsqueda es verdadera, si la coincidencia del dato es exacta y completa con el contenido de toda la celda) o XlPart (la búsqueda es verdadera, si el dato coincide con una parte del contenido de la celda).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas