Seguiré hoy con el tema de los últimos días, esto es con Formularios (UserForm) en Excel. Hoy en concreto veremos como asociar a un TextBox el valor seleccionado de un ListBox, es decir, veremos cómo podemos desde un ListBox creado rellenar los TextBox o Cuadros de Texto incluidos en nuestro formulario; además aprenderemos una forma de Cambiar el nombre (propiedad Caption) de nuestras Etiquetas (Labels).
Partiremos del trabajo realizado en la entrada anterior (ListBox con varias columnas y encabezados), donde llegamos a este diseño:
Accedemos al Editor de VB (Alt+F11) y dentro del Editor buscamos nuestro formulario UserForm1, activamos dicho formulario con lo que nos aparecerá el Cuadro de herramientas o controles. En este buscaremos los siguientes controles:
El diseño nos quedaría así:
Una vez ha quedado acorde a nuestro control de calidad visual, podemos añadirle la funcionalidad buscada.
En primer lugar, modifcaremos ciertas propiedades de los diferentes controles incluidos en nuestro formulario. En concreto cambiaremos los nombres que se muestran en las tres etiquetas por la cabecera o rótulos de la tabla origen de datos, también asignaremos un nombre definido por nosotros al Marco (O Frame):
Observemos el resultado:
Ya sólo nos queda asignar una funcionalidad a nuestro Cuadro de Lista (ListBox1), y es que pretendemos que cada vez que seleccionemos un elemento de esa Lista, aparezca reflejado en los cuadros de texto, por supuesto, cada valor donde corresponda.
Esto lo conseguiremos con un evento click sobre el ListBox:
Y listo, ya esta nuestro formulario operativo, podremos comprobar cómo en cada ocasión que marquemos de entre los elementos del ListBox, los valores de éste se mostrarán en los Cuadros de Texto (TextBox) habilitados.
Por último remarcar que, al estar vinculado directamente a los valores de la Hoja de cálculo, cualquier cambio o modificación en alguno de los datos de la Tabla1 se veré reflejado sobre nuestro formulario, incluyendo, por supuesto los nombres de las tres Etiquetas (Labels).
Partiremos del trabajo realizado en la entrada anterior (ListBox con varias columnas y encabezados), donde llegamos a este diseño:
Accedemos al Editor de VB (Alt+F11) y dentro del Editor buscamos nuestro formulario UserForm1, activamos dicho formulario con lo que nos aparecerá el Cuadro de herramientas o controles. En este buscaremos los siguientes controles:
- Marco (Frame): con este delimitaremos, y haremos independiente de otros controles, lo que incluyamos en él.
- Etiquetas (Labels): no editable, para nombrar los Cuadros de texto que situaremos a su lado.
- Cuadro de Texto (TextBox): donde vincularemos los valores seleccionados en el Cuadro de Lista (ListBox).
El diseño nos quedaría así:
Una vez ha quedado acorde a nuestro control de calidad visual, podemos añadirle la funcionalidad buscada.
En primer lugar, modifcaremos ciertas propiedades de los diferentes controles incluidos en nuestro formulario. En concreto cambiaremos los nombres que se muestran en las tres etiquetas por la cabecera o rótulos de la tabla origen de datos, también asignaremos un nombre definido por nosotros al Marco (O Frame):
Sub UserForm_Initialize() Dim fila As Single 'le decimos cuántas columnas tendrá ListBox1.ColumnCount = 3 'que sí que tiene encabezado ListBox1.ColumnHeads = True 'el origen de datos en nuestra hoja de cálculo ListBox1.RowSource = "Tabla1" 'renombramos el Marco Frame1.Caption = "Datos seleccionados:" 'damos nombre a las etiquetas creadas, empleando la cabecera de la Tabla1 fila = ListBox1.ListIndex + 2 With Hoja1.Range(ListBox1.RowSource) Label1.Caption = .Cells(fila, 1).Offset(-1, 0).Value Label2.Caption = .Cells(fila, 2).Offset(-1, 0).Value Label3.Caption = .Cells(fila, 3).Offset(-1, 0).Value End With End Sub
Observemos el resultado:
Ya sólo nos queda asignar una funcionalidad a nuestro Cuadro de Lista (ListBox1), y es que pretendemos que cada vez que seleccionemos un elemento de esa Lista, aparezca reflejado en los cuadros de texto, por supuesto, cada valor donde corresponda.
Esto lo conseguiremos con un evento click sobre el ListBox:
Private Sub ListBox1_Click() fila = ListBox1.ListIndex + 2 With Hoja1.Range(ListBox1.RowSource) TextBox1.Text = .Offset(ListBox1.ListIndex, 0).Resize(1, 1).Value TextBox2.Text = .Offset(ListBox1.ListIndex, 1).Resize(1, 1).Value TextBox3.Text = .Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value End With End Sub
Y listo, ya esta nuestro formulario operativo, podremos comprobar cómo en cada ocasión que marquemos de entre los elementos del ListBox, los valores de éste se mostrarán en los Cuadros de Texto (TextBox) habilitados.
Por último remarcar que, al estar vinculado directamente a los valores de la Hoja de cálculo, cualquier cambio o modificación en alguno de los datos de la Tabla1 se veré reflejado sobre nuestro formulario, incluyendo, por supuesto los nombres de las tres Etiquetas (Labels).
Hola, Quisiera saber como hacer al contrario
ResponderEliminarElegir en un textbox y ubicarlo en un listbox
Hola Oscar,
Eliminarel tema es que un TextBox es un cuadro de texto donde escribir algo, no parece que tenga mucho sentido 'elegir' un elemento de un textbox, ya que en estos no es posible desplegar nada.
Si te refieres a escribir algo en el textbox y luego añadirlo como elemento de un ListBox, tendrías que emplear la propiedad additem del listbox sobre el textbox.value.
Slds
Hola, tengo una duda relacionado con los listbox.
ResponderEliminarTengo un listbox con una serie de números, entre ellos números decimales. Quiero copiar uno de los item (por ejemplo el item(2) que es 27,56) a un label.
Cuando lo copio mediante la orden Label.Caption = Val(List3.List(1)) me sale en el label el valor 27 y no los decimales. ¿cómo puedo hacer para que aparezcan decimales?
Gracias!
Hola Pedro,
Eliminarprueba con .Formula en lugar de .Value
Label.Caption = Val(List3.List(1).Formula)
si fallara, prueba con
Label.Caption = Replace(Val(List3.List(1).value), ",", ".")
Slds cordiales
Muchas Gracias Ismael!
Eliminarme marca erro en la parte
ResponderEliminarWith Hoja1.Range(ListBox1.RowSource)
en la palabra Range
Hola Noemi,
Eliminarun placer saludarte igualmente.
Asegúrate que tus controles en el UserForm se llaman de igual forma (ListBox1), y que tienes una 'Hoja1' (fíjate en el codename de la hoja.. no en el nombre visble)
Saludos
ok, entonces el nombre que tiene la etiqueta de la hoja no es el que se utiliza??
EliminarSaludos
Las hojas pueden ser llamadas de varias formas, en particular utilizando el nombre de la 'etiqueta' (propiedad Name) o su nombre de código (propiedad codename).
Eliminarhttp://excelforo.blogspot.com.es/2013/08/vba-la-propiedad-codename-de-las-hojas.html
Quizá tu problema sea ese.. estás intercambiando nombres.
Verifica también el nombre del control (del ListBox)
Saludos
Hola, espero que estén bien. Tampoco me funciona la hoja está bien referenciada y el texbox bien nombrado, cuando coloco la flecha sobre el with muestra el nombre de la tabla fuente del listbox, pero saca error de "se requiere objeto" gracias
ResponderEliminarHola Carlos,
Eliminarsupongo te refieres al código de este mismo post...
Asegúrate que el CodeName de tu hoja corresponde con el de tu código.. en mi ejemplo, es 'Hoja1'.. quizá en tu caso se distinto o simplemente no exista..
Saludos
Buenos dias, he estado tratando de trabajar con listas muy grandes, la validacion no me sirve porque no es predictiva y toca elegir uno por uno los datos, y el combobox tampoco porque tengo muchas lineas diferentes y tendria que insertar un combobox por cada linea donde quiero insertar un nombre.
ResponderEliminarNavegando me consegui este ejemplo que podria solucionar todo pero no se como hacerlo pues no se explica muy bien y no tengo mucho conocmiento en VBA, en el ejemplo usan un textbox y un listbox, el textbox esta asociado a una lista ya creada y cuando se va escribiendo algo en el textbox me muestra en el listbox todas las opciones que hay en la lista, nada mas se elige cual es la que necesito y se inserta en cualquier celda donde esta ubicado en ese momento, es muy facil porque con uno solo que inserte me sirve para cuantos datos diferentes quiera incluir, solo cambiando de celda al momento de hacer la eleccion, te dejo el link para descargar el ejemplo a ver si me puedes ayudar sobre como crearlo, saludos y gracias http://www.mediafire.com/download/jmg5ginjnqn/ListaDesplegableConAutoAjuste.xls
Hola,
Eliminarla técnica de esto es emplear la herramienta de Filtro avanzado sobre la columna A (Nombres) de la Hoja de 'DAtos'.. el ListBox muestra el resultado obtenido de ese filtro.. esto es, se apoya en un Filtro para mostrar los valores resultantes que coinciden con lo escrito en el TextBox.
Está asociado a un evento DoubleClick y Change de ambos controles...
Lo que no sé es cómo puede serte útil si tienes que completar listas muy grandes de datos.. tendrías que replicar esos controles tantas veces como registros tuvieras...
?
Saludos
Si me sirve porque con uno solo puedo introducir los elementos en cuantas celdas diferentes quiera, ya lo pude aplicar a mi hoja, pero el problema que tengo ahor es que el listbox se reduce de tamaño cada vez que le doy a un valor o que borro lo que escribi en el textbox para hacer una nueva busqueda, es normal que reduzca tamaño? como se arregla? en el ejmplo que use no pasa eso.
EliminarSaludos...
Estoy intentando vaciar una base de datos desde datos capturados con un useform con textbox y listbox lo que no encuentro es como pasar esa seleccion del listbox a la base de datos en la respectiva posicion de la columna que le corresponde...
ResponderEliminarHola Edwin,
Eliminarpodrías emplear el método .Find en VBA para localizar el dato sobre tu hoja de cálculo, y una vez localizada ir rellenando celda a celda los elementos del ListBox.
Saludos
decidi cambiar un poco la forma de captura y como era solo para elegir uno de dos item agreue un boton de opcion.... Ahora tengo otro problemita, prepare este codigo y corre bien al menos esta parte que es para buscar en una tabla partiendo de un valor en untextboxt y me los muestra en el mismo userfome en otrostextbox pero uno de esos textbox que carga quiero que lo muestre cuando aparecen el dato buscado con formato porcentul 0,00% y no se como, este es el codigo:
EliminarPrivate Sub buscar_Click()
Sheets("PROVEEDORES").Select
Range("A:A").Select
If buscar1 = "" Then
MsgBox "Capturar datos"
buscar1.SetFocus
Exit Sub
End If
encontrado = False
If IsNumeric(buscar1) Then
valt1 = Val(buscar1.Value)
Else
valt1 = buscar1
End If
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, "A") = valt1 Then
TextBox1 = Cells(i, "A")
TextBox2 = Cells(i, "B")
TextBox3 = Cells(i, "C")
encontrado = True
Exit For
End If
Next
If encontrado = False Then
MsgBox "Proveedor no Encontrado"
End If
End Sub
Hola,
Eliminarpuedes aplicar la función format donde quieres conseguir ese formato porcentual:
format(range("A1"),"0.00%")
Saludos
Buenas tardes,
ResponderEliminarTengo una duda con respecto a como puedo enlazar un textbox con un combobox. Tengo una tabla en excel de meses de forma horizontal de enero a diciembre, del lado izquierdo tengo datos como código y proveedor, ahora bien una vez que activo mi userform que contiene un combobox donde hago aparecer todos los meses y textbox donde se agregará un valor de aporte, lo que necesito es saber como hace visual basic para que entienda que al seleccionar el mes en el combobox y agregue un valor en el textbox me lo lleve a la celda vacía del mes y si quisiera agregar un nuevo dato lo agregue en el espacio siguiente y así sucesivamente.
Espero me pueda ayudar,
Muchas Gracias!!
Hola,
Eliminardeberás realizar una búsqueda sobre los códigos dispuestos en la hoja, para localizar su fila a partir del valor del Combobox, una ve tengas localizada la fila y su posición de columna, podrás devolver el dato del TextBox con algo similar a esto:
cells(fila,columna).value=textBox1.value
en lugar de A2 deberás disponer de una variable par la fila y columna...
espero aportarte la idea
Saludos
Muchas gracias por responder,
EliminarLo que había hecho para tratar de solucionar el problema era esto:
If ComboBox4.Text = "ENERO" Then
Range("D2").Select
ActiveCell.Offset(1, 0) = TextBox4.Value
End If
Pero resulta que el offset no realiza el trabajo de dirigir el segundo valor a la celda siguiente.
Y a parte debía agregar por cada mes dicha instrucción, y sólo se almacena la información en la primera celda y no logra ingresar datos en las celdas siguientes.
Gracias!!!
Hola,
Eliminarentiendo que en la hoja de cálculo, en tu columna D tienes los datos de ENERO, y quieres ir agregando nuevos datos uno debajo de otro..
en ese caso:
If ComboBox4.Text = "ENERO" Then
Range("D"&rows.count).end(xlup).Offset(1, 0) = TextBox4.Value
End If
Saludos
Hola,
EliminarPerfecto muchísimas gracias me sirvió muy bien.
Saludos!!
;-)
EliminarUn saludo!!
amigo tengo un problema con el codigo al principio si funsiona bien cuando selecciono el primer registro pero si luego quiero cambiar a otro en el mismo listbox no me aparece el valor absoluto de lo que seleccione
ResponderEliminarpor ejemplo si selecciono el numero 164 la primera vez me lo pone en el textbox tal cal esta pero si despues selecciono el 165 solo me duvelve al textbox el 1 si lo selecciono de nuevo me devuelve el 6 y si lo vuelvo a hacer me devuelve el 5 que puedo hacer para que solo me devuelva el valor absoluto que sea completamente igal al del textbox
Hola Elin,
Eliminarno termino de entender el problema..
Al añadir el evento click asociado al ListBox (ver post arriba) se gestionan los cambios y que cada vez que selecciones (hagas click) sobre un elemento lo muestre en los textbox...
Es decir, el movimiento es desde el ListBox hacia el TextBox.
Saludos
Hola Ismael. Tu código me ha servido de una forma maravillosa, pero necesito de tu ayuda para finalizar mi objetivo. Lo que quiero es que al momento de seleccionar con el primer click un item de un list box este me copie un dato a un text box (numero inicial de recibo para impresion), y al momento de seleccionar otro item me copie a otro text box el numero final de impresión. Mi problema esta en que no se como codificar el codigo que diferencie el primer click al segundo click para ordenar la seleccion, ademas de eso no se si se pueda con tu codigo o necesite de un multiselect diferente.
ResponderEliminarHola,
Eliminarel problema es que no existe un evento de primer click o segundo click para ningún control...
En todo caso podrías asociar la acción a si ha sido ya rellenado el primer textbox, esto es, al hacer click rellena el primer textbox (si está vacío), y al hacer otra vez click comprueba si el primer textbox está relleno y si lo está rellena el segundo...
Espero te sirva la idea.
Saludos
muchas gracias Ismael, no lo había pensado de esa manera y de verdad que me sirvió tu pensamiento. Gracias por tu tiempo eres un excelente maestro. Saludos desde Colombia.
Eliminar;-)
EliminarSlds
Hola buenas tardes, tengo una duda tengo un listbox, quisiera que el valor que selecciono me aparesca en un combobox, se puede?
ResponderEliminarHola,
Eliminartendrías que cargar el item (.additem) al combobox y luego mostrarlo con combobox1.value
Saludos cordiales
Estimado Ismael,
ResponderEliminaren este caso tengo un buscador de productos quiero al hacer clik en un producto seleccionado en un textbox1 primer columna el label11 el tome este valor y textbox2 tome el valor de la columna7 y luego al aceptar en un CommandButton1 intrudusca estos dos valores del laber11 y textbox2 en la celda C6 y D6 de la hoja31
Hola,
Eliminarno existe un evento Click sobre un TextBox.. pero quizá un evento GotFocus te pueda servir.
No me queda claro de que columnas hablas si trabajas con TextBox... quizá te refieras a un ListBox?
En todo caso, para rellenar/recuperar un Label deberás emplear la propiedad Caption, y para rellenar/recuperar sobre un TextBox la propiedad Value
Saludos
me fascino tu código es perfecto, me seria muy util si al momento de seleccionar una linea, estos datos fueran enviados a un listbox de otro formulario, como podria hacerlo, de ante mano, muchisimas gracias por compartir.
ResponderEliminarHola!
Eliminargracias!
En cuanto a la cuestión.. siempre es complicado mover datos entre diferentes formularios (supongo los tendrías abiertos en modal..).
Lee este post:
http://excelforo.blogspot.com.es/2015/07/vba-arrastrando-datos-entre-listbox-de.html
verás cómo moverlos entre ListBox de un mismo UserForm
Para hacerlo entre distintos formularios, tendrías que emplear el nombre del formulario delante del nombre del control...
UserForm1.ListBox1....
Saludos
Hola, saludos me sirvio el ejemplo gracias pero tengo una duda, quiero colocar un boton de aceptar para q mi seleccion me aparezca en una lista de otra hoja, me explico quiero colocar en la lista los platos de un restaurant con su precio, al aceptar que me aparezcan en la hoja de la mesa que hace el pedido. agradezco la ayuda
ResponderEliminarHola,
Eliminarpuedes llevar los datos a la hoja de cálculo que quieras.
Por ejemplo desde el testbox
Sheets("HojaFinal").range("A1").value=Me.TextBox1.value
o directamente desde el ListBox siguiendo las pautas del post.
Saludos
Hola, saludos me sirvió tu ejemplo, soy nuevo en esto de macros,me podrias recomendar algun libro o algún material para aprender macros
ResponderEliminarHola,
Eliminarlo mejor es buscar soluciones concretas a los problemas que encuentres en internet...
Otra opción busca en www.excelforo.com
Saludos
Hola me sirvió tu ejemplo me gustaria saber como puedo hacer para modificar el elemento seleccionado del listbox no se si viene incluido en el ejemplo pero no se modifica el valor al cambiarlo en el textbox
ResponderEliminarHola,
Eliminarpodrías asociarlo a un botón para que con un método .Find por ejemplo, localice el dato de la hoja y realice el cambio...
Ese cambio refrescará el ListBox
Date cuenta que el ListBox es un reflejo de lo que hay en la hoja de cálculo... asi pues, cualquier cambio que desees ver en el listbox (en este caso), se debe realizar sobre la hoja.
Saludos
Este comentario ha sido eliminado por el autor.
ResponderEliminarhola que tal...excelente tu ejemplo me sirvió de mucho y funciona muy bien cuando elijo ítem por ítem del ListBox, sin embargo tengo dos TextBox asociados a búsqueda...a ver si me explico mi ListBox tiene 3 columnas: código, descripción, unidades. tengo dos TextBox previos (uno para BUSCAR POR CÓDIGO y otro para BUSCAR POR DESCRIPCIÓN) como te dije al principio tu ejemplo me funciona muy bien cuando escojo item por item del ListBox pero cuando aplico las opciones de búsqueda, osea cuando ingreso un código en el TextBox asociado a cualquiera de los buscadores y la lista del ListBox se hace mas específica y quiero elegir uno de ellos me sale:"...error 1004...se ha producido un error definido por la aplicación o el objeto" y se marca de amarillo el siguiente párrafo : "With Sheets("Hoja1").Range(LISTA1.RowSource)" (mi listbox se llama LISTA1 y le puse sheets("Hoja1") porque sólo así carga)....me podrías ayudar?
ResponderEliminarHola Alexander
Eliminares complicado darte una respuesta clara, pero con las porciones de código que aportas, esto tiene mala pinta:
.Range(LISTA1.RowSource)
quizá no lo esté entendiendo como rango ???
Slds
Hola, Gracias por su código ha sido de gran ayuda, tengo un problema, he agregado un textbox de busqueda inteligente y cada vez que empiezo con la búsqueda se desaparece las cabeceras en listbox,
ResponderEliminarHola!
Eliminar¿por textbox de busqueda inteligente te refieres a que lo has asociado a un evento change??
Entiendo has cargado el listbox como tabla y no item a item.... lo cual sería recomendable para aplicar filtros o búsquedas sobre ese listbox desde el textbox 'inteligente'
Te diría que cargues el listbox elemento a elemento... el encabezado de éste lo sitúes con labels, así no tendrás problemas.
Saludos
le agradezco bastante
Eliminarme funciona bien, sin embargo, no funciona cuando el listbox1 esta sujeto a un buscador, es decir, tengo un textbox sobre el listbox que al escribir, filtra los resultados que se muestran en el listbox. Hasta ahi todo bien, pero al seleccionar una fila, me tira error
ResponderEliminarHola,
Eliminarlo expuesto en el comentario anterior...
Saludos
Hola excelente es lo que buscaba!! Te hago una consulta si quiero hacer lo mismo pero los texbox a rellenar están en otro formulario, como seria
ResponderEliminarHola
Eliminarlo primero sería trabajar en modal en los UserForm... y luego emplear en primer lugar el nombre del formulario, por ejemplo:
UserForm2.TextBox1.Value=UserForm1.TextBox2.Value
que rellenaría el textbox del segundo formulario con el valor del textbox3 del primero
Saludos
tengo una consulta mas, quiero reflejar datos de otra hoja en los textbox, que la tabla no esta asociado a listbox
ResponderEliminarHola,
Eliminarpuedes referirte a otras hojas, por ejemplo
userform1.TextBox1.Value=hoja2.Range("B2").Value
Saludos
Hola, y el botón de guardar para cuando modifique?
ResponderEliminarHola Jimmmy,
Eliminareste ejemplo solo tiene un sentido: ListBox -> TextBox
Busca en la categoría del blog de Macros y encontrarás algún ejemplo inverso
Saludos
gracias
EliminarHola, yo agrego los datos a cuatro cuadros de texto, hasta ahí bien pero si quiero seguir metiendo datos a los campos de abajo como como
ResponderEliminarCómo hago esto
ResponderEliminarHola,
Eliminargestiona el registro con un commandbutton que una vez trasladados los dato libere los textbox y permita seguir metiendo datos
Saludos
Hola, ¿como están?. Es lo que necesito desde hace tiempo. Pero quise adaptarlo a lo que quiero y no pude, me explico. Poseo un TextBox que me filtra el ListBox.
ResponderEliminarAhora bien, cuando le doy doble clip en el item seleccionado y previamente filtrado por el TextBox en el ListBox para que me aparezca en los demas TextBox me da error especificamente en esta linea
"With Hoja1.Range(LISTA.RowSource)".
este es el codigo completo:
Private Sub LISTA_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
fila = LISTA.ListIndex + 2
With Hoja1.Range(LISTA.RowSource)
TextBox1.Text = .Offset(LISTA.ListIndex, 0).Resize(1, 1).Value
End With
End Sub
Private Sub TextBox_Change()
Application.ScreenUpdating = False
Sheets("Hoja1").Select
Range("B2").Select
LISTA.Clear
While ActiveCell.Value <> ""
M = InStr(1, UCase(ActiveCell.Value), UCase(TextBox.Text))
If M > 0 Then
LISTA.ColumnCount = 5
LISTA.AddItem
ActiveCell.Offset(0, -1).Select
LISTA.List(LISTA.ListCount - 1, 0) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LISTA.List(LISTA.ListCount - 1, 1) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LISTA.List(LISTA.ListCount - 1, 2) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LISTA.List(LISTA.ListCount - 1, 3) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LISTA.List(LISTA.ListCount - 1, 4) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LISTA.List(LISTA.ListCount - 1, 5) = ActiveCell.Value
ActiveCell.Offset(0, -5).Select
End If
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Hola!
Eliminaryo me aseguraría de qué devuelve exactamente
Lista.RowSource
quizá te devuelva vacío o algún error, si no hubieras cargado el listbox empleando esa propiedad, y lo hubieras cargado con .additem
Slds
Hola buenas tardes,
ResponderEliminarAsocié un textbox con una listbox hasta ahí bien; pero entonces quiero saber como hago para que cuando de la lista se elijan ciertas palabras, entonces se calcule en otra celda una operacion pero con otro textbox.
por ejemplo en la lista dice:
Amarillo
Azul
Rojo
entonces cuando sea amarillo tome una celda donde se diligencia un valor y lo multiplique por 2
cuando sea azul tome una celda donde se diligencia un valor y lo multiplique por 4
cuando sea rojo tome una celda donde se diligencia un valor y lo multiplique por 6.
Saludos. estaré atenta a respuesta. muchas gracias.
Hola,
Eliminarsi ya tienes la parte de llevar el dato seleccionado en el ListBox al textBox, solo te queda condicionar para realizar la operación.
IF TextBox1.Value="Amarillo" THEN
TextBox2.Value=range("A1").Value * 2
ELSEIF TextBox1.Value="Amarillo" THEN
TextBox2.Value=range("A1").Value * 4
...
END IF
Saludos
Hola buenas tardes
ResponderEliminarmuy bueno el ejemplo y bien explicado, solo una duda si quiero que al seleccionar un elemento del listbox y pasarlo al textbox me lo elimine del listbox, como sería
Hola,
Eliminarpara eliminar un elemento del ListBox usa .RemoveItem
echa un vistazo aquí
https://excelforo.blogspot.com/2018/01/vba-borrar-elementos-listbox-RemoveItem.html
Saludos