Recorrer filas y aparezca en el textbox

Necesito un comando donde un cuadro combinado me busque en un listado un código de la hoja de excel me traiga la información de la derecha y se copie en textbox.

Ejemplo:

Código a buscar 34 en cuadro combinado

Hoja de Excel

A              B             C

34             1             0

23             2             3

34             4             5

34             5             8

12            3              5

Cuadro Combinado 34 

Textbox1 1             Textbox2  4                 Textbox3  5 

En espera de su ayuda a lo comentado, anticipo mi agradecimiento.

1 respuesta

Respuesta
1

Si he entendido bien hay que general tantos textbox como veces aparece el valor buscado en la columna A, y a cada combo box se le asigna el valor correspondiente a la misma fila en la columna B ¿Correcto?
Para resolverlo he creado un formulario de nombre "Formulario" con un cuadro combinado de nombre "CuadroCombinado" y he escrito el siguiente código en el formulario:

Private Sub CuadroCombinado_Change()
Dim Rg As Range
Dim Contador As Integer
Dim NuevoTextBox As MSForms.TextBox
Set Rg = Range("A1")
Contador = 0
While Not Rg.Value = ""
    If Str(Rg.Value) = Str(CuadroCombinado.Value) Then
        Contador = Contador + 1
        Set NuevoTextBox = Formulario.Controls.Add("Forms.Textbox.1", "TextBox" & Contador)
        'Juega con las propiedades de NuevoTextBox para que se creen a tu conveniencia
        'Yo lo he dejado programado para que aparezcan cada uno a la derecha del anterior
        With NuevoTextBox
            .Top = 60
            .Width = 50
            .Height = 20
            .Left = 10 + (Contador - 1) * 60
            .Value = Rg.Offset(0, 1).Value
        End With
    End If
    Set Rg = Rg.Offset(1, 0)
Wend
End Sub

Estimado Ivan, buenas tardes, me puedes ayudar con el archivo, para poderlo entender mejor el código enviado, gracias.

Att.

Andrés Moncayo

Estimado Ivan, mucha gracias por la respuesta ya me salio la información que requería, ahora tengo una pregunta al rato que quiero borrar para colocar otro código me sale el siguiente error:

  If Str(Rg.Value) = Str(TextBox3.Value) Then 

Se me pinta de color amarillo.

Att.

Andrés Moncayo

¿Es posible que el valor de TextBox3 esté en blanco? Eso daría error en la función Str( )

Por otra parte, si tienes un TextBox3 en tu formulario deberías cambiarlo de nombre, o editar un poco la macro que te envié para que no coindidan los nombres cuando inserte un tercer textbox.

Si te sigue dando problemas puedes mandame una foto de tu formulario con los nombres de cada objeto y el código y le doy un vistazo.

Estimado Iván, mi pregunta es como puedo borrar el código e ingresar otro sin tener que salir de formulario, ya que al momento de borrar me sale el error.

Att.

Andrés Moncayo

Lo normal es editar el código con el formulario cerrado.
Si haciéndolo así te sigue dando problemas pásame el código y le doy un vistazo.

Estimado Ivan, adjunto el código:

Private Sub TextBox3_Change()

Dim Rg As Range
Dim Contador As Integer
Dim NuevoTextBox As MSForms.TextBox
Set Rg = Range("A1")
Contador = 0
While Not Rg.Value = ""
If Str(Rg.Value) = Str(TextBox3.Value) Then
Contador = Contador + 1
Set NuevoTextBox = UserForm1.Controls.Add("Forms.Textbox.1", "TextBox" & Contador)
'Juega con las propiedades de NuevoTextBox para que se creen a tu conveniencia
'Yo lo he dejado programado para que aparezcan cada uno a la derecha del anterior
With NuevoTextBox
.Top = 45
.Width = 50
.Height = 20
.Left = 10 + (Contador - 1) * 60
.Value = Rg.Offset(0, 1).Value
End With
End If

Set Rg = Rg.Offset(1, 0)
If Str(Rg.Value) = "" Then
End If
Wend

End Sub

El problema es que tengo es al querer borrar el la información del textbox me sale el error, lo que quisiera de tu ayuda como poder dejar en limpio el casillero y poder realizar otra consulta sin cerrar el formulario:

En espera de tus comentarios, anticipo mi agradecimiento.

Att.

Andrés Moncayo

Asumo que el cuadro donde tienes escrito el número 34 es el TextBox3
Si utilizas un TextBox en lugar de un Combo Box preferible añadir un botón de ejecución.

También he cambiado el código para que los nuevos text boxes que genera la macro se llamen diferente, si no en caso de que un valor se repita tres veces tendríamos un nombre duplicado.

El nuevo código sería el que pego a continuación.

Option Explicit
Private Sub CommandButton1_Click()
Dim Rg As Range
Dim Contador As Integer
Dim NuevoTextBox As MSForms.TextBox
Dim Objeto As Control
For Each Objeto In Formulario.Controls
    If Left(Objeto.Name, 9) = "OutputBox" Then
        Formulario.Controls.Remove Objeto.Name
    End If
Next
Set Rg = Range("A1")
Contador = 0
While Not Rg.Value = ""
    If Str(Rg.Value) = Str(TextBox3.Value) Then
        Contador = Contador + 1
        Set NuevoTextBox = Formulario.Controls.Add("Forms.Textbox.1", "OutputBox" & Contador)
        'Juega con las propiedades de NuevoTextBox para que se creen a tu conveniencia
        'Yo lo he dejado programado para que aparezcan cada uno a la derecha del anterior
        With NuevoTextBox
            .Top = 60
            .Width = 50
            .Height = 20
            .Left = 10 + (Contador - 1) * 60
            .Value = Rg.Offset(0, 1).Value
        End With
    End If
    Set Rg = Rg.Offset(1, 0)
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas