Completar textbox según valor de combobox

21 envíos / 0 nuevos
Último envío
Jesús Martínez
Imagen de Jesús Martínez
Offline
última acción: Hace 3 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 5008
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 día 1 seg
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
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 )

 

------
Ya sé Excel, pero necesito más.

Jesús Martínez
Imagen de Jesús Martínez
Offline
última acción: Hace 3 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 5008
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 día 1 seg
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
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

 

------
Ya sé Excel, pero necesito más.

Jesús Martínez
Imagen de Jesús Martínez
Offline
última acción: Hace 3 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 5008
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 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
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 años 3 meses
alta: 25/05/2017 - 11:32
Puntos: 90
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 años 3 meses
alta: 25/05/2017 - 11:32
Puntos: 90
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 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
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 años 3 meses
alta: 25/05/2017 - 11:32
Puntos: 90
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 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
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 años 3 meses
alta: 25/05/2017 - 11:32
Puntos: 90
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 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
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

Edeeeer (no verificado)
Imagen de MariaCamila
Como lo solucionaste?

Como lo solucionaste?

anibal
Imagen de anibal
Offline
última acción: Hace 4 años 9 meses
alta: 07/06/2019 - 18:36
Puntos: 10
Objeto application.worksheetFunction

Amigo ese codigo lo utilice para efectivamente poder llenar un textbobx segun lo que haya seleccionado en un combobox. Pero esto da error si no tengo la hoja activa donde se almacena los datos del combobox como hago para que sin necesidad de tener la hoja activa el textbox se llene con la informacion sin dar error : No se puede obtener la propiedad VlookUp de la clase worksheetfunction

Agustin Arzate ... (no verificado)
Imagen de MariaCamila
pregunta

como puedo hacer para que una vez seleccionado una opcion del combobox en hoja2 y en el textbox apareca información pero de la hoja1

Cron
Imagen de Cron
Offline
última acción: Hace 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
En ambos casos, donde dice

En ambos casos, donde dice:

For a = 1 To 9
    For b = 1 To 11
        matriz(a - 1, b - 1) = Cells(a, b).Value
    Next
Next

Poned:

For a = 1 To 9
    For b = 1 To 11
        matriz(a - 1, b - 1) = worksheets("nombredelahoja").Cells(a, b).Value
    Next
Next


Un saludo

Manuel de Jesús... (no verificado)
Imagen de MariaCamila
Propiedad autocompletar de combobox con código VBA

Buenos dias, mi pregunta es sencilla, he estado trabajando en un formulario de ventas en excel vba, en ese mismo formulario inserté el correspondiente ComboBox para que hiciera la busqueda autocompletando mientras se va escribiendo cada letra inicial del producto buscado, pero veo que los combobox no tienen la propiedad de autocompletar, quiero saber si mediante código vba puedo implementar esa propiedad de buscar autocompletando texto desde el rango donde se encuentra la lista de productos en la hoja correspondiente de excel, me puedes escribir a maneguerra43@mail.com gracias. Te envio el archivo.

Mañe Guerra

AdjuntoTamaño
File dogueria_central.xlsm136.76 KB