Completar textbox según valor de combobox

16 envíos / 0 nuevos
Último envío
Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 1 mes 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4903
Completar textbox según valor de combobox

Estoy trabajando con un formulario con textbox y combobox, el combobox lo cargo con el código

Private Sub UserForm_Activate()

ComboBox1.RowSource = "FP"

ComboBox4.RowSource = "LA"

ComboBox5.RowSource = "EP"

End Sub

El textbox2 quisiera que se cargue según el valor del combobox4 o se tengo el siguiente cuadro en la hoja6

SIGLA CÓDIGO

AA 001

OB 930

5L 275

Y asi sucesivamtente, la sigla lo definí el rango con el nombre de "LA" el cual carga el combobox4, y quisiera que al elegir del combobox4 la sigla AA en el textbox cargue su código o sea 001 y asi sucesivamente, algo como si el textbox2 fueradependientedel combobox4, espero que mi pregunta haya sido clara.

 

Gracias

Jesús

AdjuntoTamaño
Image icon formulario.jpg256.25 KB
Image icon datos.jpg364.16 KB

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 hora 17 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 7590
BuscarV, bueno, VLookup en el código VBA

Si fuese en una hoja de cálculo esto lo harías con un BUSCARV ¿no?

Bueno, pues en tu código puedes utilizar las funciones de la hoja de cálculo, por ejemplo la función BuscarV, aunque hay que utilizar la denominación en inglés de estas funciones., en este caso VLOOKUP. Las funciones de excel están disponibles en VBA a través de Application.Worksheetfunction

 

Application.WorksheetFunction.VLookup( y aquí los argumentos de la función )

 

Data Tools Suite
datos y tablas con Excel

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 1 mes 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4903
Re: Completar textbox según valor de combobox

Estimado Pacomegia: un poco mas de detalle por favor.

Gracias

Jesús

Jesus Martinez Plantarosa

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 hora 17 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 7590
Re: Completar textbox según valor de combobox

me refiero a que puedes utilizar la función VLOOKUP para buscar el valor en la lista y ponerlo en tu textbox.

podría ser algo así:

 Me.TextBox2.Value = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, Range("Extras!H2:I40"), 2, False)

 

Buscas lo que hay en el combobox1 en el rango de la hoja Extras donde tienes definidas tus equivalencias

 

Data Tools Suite
datos y tablas con Excel

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 1 mes 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4903
Re: Completar textbox según valor de combobox

Excelente gracias mil, eres un capo

Saludos

Jesús

Jesus Martinez Plantarosa

MariaCamila (no verificado)
Imagen de MariaCamila
Completar textbox según combobox

Muy lógica tu respuesta, sin embargo, utilizo el código y me sale error 438, el objeto no admite esta propiedad o metodo :/

JAOG (no verificado)
Imagen de MariaCamila
Hola María Camila, asegurate

Hola María Camila, asegurate que la instrucción la estés dando en el evento _Click()

Private Sub -nombredelcombobox-_Click()

      Me.-nombredeltextbox.Value = Application.WorksheetFunction.VLookup(Me.-nombredelcombobox-.Value, Range("LIST1!O2:P2"), 2, False)

End Sub

Guido (no verificado)
Imagen de MariaCamila
al revés?

En el caso de que sea al revés? Colocar un dato en el textbox y llenar el combobox? Sellado

Cron
Imagen de Cron
Offline
última acción: Hace 16 horas 11 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8870
Para eso tienes la función

Para eso tienes la función

.Additem

del combobox.

 

Un saludo

willalda
Imagen de willalda
Offline
última acción: Hace 5 meses 2 semanas
alta: 25/05/2017 - 11:32
Puntos: 65
Buenas tardes, Espero que me

Buenas tardes, 

Espero que me puedan echar una mano, ya que estoy bastante perdida con lo que quiero hacer. Creo que es muy parecido a lo que le estaban explicando en el foro pero no consigo hacerlo.

Les explico, lo que quiero hacer es coger la informacion de una tabla de la Hoja1 y que desde un combobox vea los datos de Proyecto, por ejemplo, que me salga la lista de Bilbao, Madrid..... y que cuando le de al boton de buscar en los textbox de D1.1, D2.1 y D2.3 me salgan las correspondientes fechas de esos proyectos.

Me podrian echar una mano por favor?

Muchos agradecimientos por adelantado!!!

AdjuntoTamaño
File tabla1.xlsx8.66 KB
Image icon excel_vb.jpg95.15 KB
willalda
Imagen de willalda
Offline
última acción: Hace 5 meses 2 semanas
alta: 25/05/2017 - 11:32
Puntos: 65
Ya he solucionado el problema

Ya he solucionado el problema,despues de tanto "estudiarlo" ya lo he sacado.

Ahora tengo otra duda, me gustaria crear un boton en una hoja de excel del libro y que me aparezca el UserForm1 que he creado, como tendria que hacerlo?

 

Un saludo

Cron
Imagen de Cron
Offline
última acción: Hace 16 horas 11 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8870
Utiliza form.show en la macro

Utiliza form.show en la macro asociada al botón.

 

Un saludo

willalda
Imagen de willalda
Offline
última acción: Hace 5 meses 2 semanas
alta: 25/05/2017 - 11:32
Puntos: 65
Perfecto, sale todo perfecto,

Perfecto, sale todo perfecto, pero tengo un problema ahora. Cuando intento añadir una 10 columna (seria la columna K del excel) al combobox me da un error:

"Se ha producido el error 380 en tiempo de ejecucion"

No se puede configurar la propiedad List.Valor de propiedad no valido

Os pongo el codigo por si me podeis echar una mano:

 

Private Sub cbProyecto_Change()

txtExp.Text = cbProyecto.List(cbProyecto.ListIndex, 1)

txtGes.Text = cbProyecto.List(cbProyecto.ListIndex, 2)

txtGestOb.Text = cbProyecto.List(cbProyecto.ListIndex, 3)

txtDr11.Text = cbProyecto.List(cbProyecto.ListIndex, 4)

txtDr12.Text = cbProyecto.List(cbProyecto.ListIndex, 5)

txtDr13.Text = cbProyecto.List(cbProyecto.ListIndex, 6)

txtDr14.Text = cbProyecto.List(cbProyecto.ListIndex, 7)

txtDr15.Text = cbProyecto.List(cbProyecto.ListIndex, 8)

txtDr21.Text = cbProyecto.List(cbProyecto.ListIndex, 9)

txtDr22.Text = cbProyecto.List(cbProyecto.ListIndex, 10) Cuando introduzco esta linea de codigo me salta el error

End Sub

 

 

Sub CargarCombobox()

Dim lin As Integer

lin = 2

Do Until Hoja1.Range("A" & lin).Value = ""

cbProyecto.AddItem Hoja1.Range("A" & lin).Value

cbProyecto.List(lin - 2, 1) = Hoja1.Range("B" & lin).Value

cbProyecto.List(lin - 2, 2) = Hoja1.Range("C" & lin).Value

cbProyecto.List(lin - 2, 3) = Hoja1.Range("D" & lin).Value

cbProyecto.List(lin - 2, 4) = Hoja1.Range("E" & lin).Value

cbProyecto.List(lin - 2, 5) = Hoja1.Range("F" & lin).Value

cbProyecto.List(lin - 2, 6) = Hoja1.Range("G" & lin).Value

cbProyecto.List(lin - 2, 7) = Hoja1.Range("H" & lin).Value

cbProyecto.List(lin - 2, 8) = Hoja1.Range("I" & lin).Value

cbProyecto.List(lin - 2, 9) = Hoja1.Range("J" & lin).Value

cbProyecto.List(lin - 2, 10) = Hoja1.Range("K" & lin).Value Cuando introduzco esta linea de codigo me salta el error

   lin = lin + 1

Loop

End Sub

 

 

 

Private Sub UserForm_Initialize()

Call CargarCombobox

End Sub

 

¿Como puedo resolver el problema?

Un saludo

Cron
Imagen de Cron
Offline
última acción: Hace 16 horas 11 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8870
Los combobox y los listbox

Los combobox y los listbox solo pueden tener 10 columnas si las añades una a una, pero hay una manera de hacer que tengan más, y es añadiendo un rango o una matriz en vez de los valores uno a uno.

Prueba a componer primero la matriz y luego añadirla, algo así como:

 

Private Sub UserForm_Initialize()

Dim matriz(9, 11) As Variant

For a = 1 To 9
    For b = 1 To 11
        matriz(a - 1, b - 1) = Cells(a, b).Value
    Next
Next
With ComboBox1
    .ColumnCount = b
    .List = matriz
End With

End Sub

willalda
Imagen de willalda
Offline
última acción: Hace 5 meses 2 semanas
alta: 25/05/2017 - 11:32
Puntos: 65
Perdonad mi ignorancia, pero

Perdonad mi ignorancia, pero no entiendo mucho de programacion. Lo que me quieres decir es que haga esto?

Private Sub cbProyecto_Change()

txtExp.Text = cbProyecto.List(cbProyecto.ListIndex, 1)

txtGes.Text = cbProyecto.List(cbProyecto.ListIndex, 2)

txtGestOb.Text = cbProyecto.List(cbProyecto.ListIndex, 3)

txtDr11.Text = cbProyecto.List(cbProyecto.ListIndex, 4)

txtDr12.Text = cbProyecto.List(cbProyecto.ListIndex, 5)

txtDr13.Text = cbProyecto.List(cbProyecto.ListIndex, 6)

txtDr14.Text = cbProyecto.List(cbProyecto.ListIndex, 7)

txtDr15.Text = cbProyecto.List(cbProyecto.ListIndex, 8)

txtDr21.Text = cbProyecto.List(cbProyecto.ListIndex, 9)

txtDr22.Text = cbProyecto.List(cbProyecto.ListIndex, 10) 

End Sub

 

 

Sub CargarCombobox()

Dim lin As Integer

lin = 2

Do Until Hoja1.Range("A" & lin).Value = ""

cbProyecto.AddItem Hoja1.Range("A" & lin).Value

cbProyecto.List(lin - 2, 1) = Hoja1.Range("B" & lin).Value

cbProyecto.List(lin - 2, 2) = Hoja1.Range("C" & lin).Value

cbProyecto.List(lin - 2, 3) = Hoja1.Range("D" & lin).Value

cbProyecto.List(lin - 2, 4) = Hoja1.Range("E" & lin).Value

cbProyecto.List(lin - 2, 5) = Hoja1.Range("F" & lin).Value

cbProyecto.List(lin - 2, 6) = Hoja1.Range("G" & lin).Value

cbProyecto.List(lin - 2, 7) = Hoja1.Range("H" & lin).Value

cbProyecto.List(lin - 2, 8) = Hoja1.Range("I" & lin).Value

cbProyecto.List(lin - 2, 9) = Hoja1.Range("J" & lin).Value

cbProyecto.List(lin - 2, 10) = Hoja1.Range("K" & lin).Value 

   lin = lin + 1

Loop

End Sub

 Private Sub UserForm_Initialize()

Dim matriz(9, 11) As Variant

For a = 1 To 9
    For b = 1 To 11
        matriz(a - 1, b - 1) = Cells(a, b).Value
    Next
Next
With ComboBox1
    .ColumnCount = b
    .List = matriz
End With

End Sub

 

 

 

AdjuntoTamaño
Image icon hoja1.png10.42 KB
Cron
Imagen de Cron
Offline
última acción: Hace 16 horas 11 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8870
No exactamente. La idea es

No exactamente. La idea es sustituir tu código por el mío, con los cambios que consideres oportunos (nombres de los objetos, etc.) Mi código solo te llena la lista del desplegable, de manera que cuando lo abras tengas la lista entera. Para cambiar el texto de los textbox puedes hacer lo de tu macro cbProyecto_change.

Pero tu macro cargarComboBox dará error si la cargas así. Si la cargas toda de una vez como en el código que te he puesto sí que lo admite. ¿Por qué? Ni idea, pero el caso es que funciona.

Un saludo