Modificar datos de una tabla con un ListBox en Excel
Este tema ya lo venía pensando a raíz de varias consultas en el Blog, y bueno, me di a la tarea de preparar un ejemplo sencillo, pero que puede servir de base para proyectos más ambiciosos.
El ejemplo tiene una tabla la cual se mostrará en un ListBox que está en un formulario. Para efecto de modificar los datos de cada registro, basta con elegir uno de ellos y presionar el botón Modificar y lanzará otro formulario donde se podrán actualizar los datos.
Al igual también cuenta con un botón de Eliminar para eliminar la fila donde está el registro,
Imagen del formulario

Código del formulario para mostrar datos
'Cerrar formulario Private Sub CommandButton2_Click() Unload Me End Sub ' 'Abrir el formulario para modificar Private Sub CommandButton3_Click() If Me.ListBox1.ListIndex < 0 Then MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO" Else Modificar.Show End If End Sub ' 'Eliminar el registro Private Sub CommandButton4_Click() Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO") If Pregunta <> vbNo Then Fila = Me.ListBox1.ListIndex + 2 Rows(Fila).Delete Application.ScreenUpdating = True End If End Sub ' 'Activar la celda del registro elegido Private Sub ListBox1_Click() Fila = Me.ListBox1.ListIndex + 2 For i = 1 To 4 Cells(Fila, 1).Activate Next i End Sub 'Dar formato al ListBox y traer datos de la tabla Private Sub UserForm_Initialize() With ListBox1 .ColumnCount = 4 .ColumnWidths = "60 pt;60 pt;70 pt" .ColumnHeads = True End With ListBox1.RowSource = "Tabla1" End Sub
Código del formulario para modificar
'Actualizar el registro Private Sub CommandButton1_Click() For i = 1 To 4 ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value Next i Unload Me End Sub ' 'Cerrar formulario Private Sub CommandButton2_Click() Unload Me End Sub ' 'Llenar los cuadro de texto con los datos del registro elegido Private Sub UserForm_Initialize() For i = 1 To 4 Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value Next i End Sub
Muchas gracias por el ejemplo, quiero preguntarte cosas.
no entiendo por que si copio el código, primero me sale error que no encuentra el formulario donde voy a modificar los datos.
segundo no se como hacer para que me quede como el ejemplo, de que me cargue los datos si selecciono varias veces diferentes registros, no al tiempo sino si doy click en uno y después miro otro para que me actualice los datos que son. en el formulario de modificación me quedan los datos de la primer consulta
y tercero al activar la etiqueta ColumnHeads me sale los subtitulos pero de las celdas a,b,c,d,e.
te agradezco la ayuda.
Código del formulario para mostrar datos
‘
‘Abrir el formulario para modificar
Private Sub cmdAceptar_Click()
If Me.ListBox2.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
Else
FRMMODIFICARPRODUCTO2.Show
End If
End Sub
Private Sub cmdCancelar_Click()
FRMMODIFICARPRODUCTO.Hide
End Sub
'
'Eliminar el registro
Private Sub CommandButton1_Click()
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta vbNo Then
Fila = Me.ListBox2.ListIndex + 1
Rows(Fila).Delete
Application.ScreenUpdating = True
End If
End Sub
‘
‘Activar la celda del registro elegido
Private Sub ListBox2_Click()
Fila = Me.ListBox2.ListIndex + 1
For i = 1 To 7
Cells(Fila, 1).Activate
Next i
End Sub
Private Sub UserForm_Initialize()
Sheets(“PRODUCTOS”).Select
ListBox2.ColumnCount = 7
ListBox2.ColumnWidths = “300 pt;100 pt;200 pt;150 pt;80 pt;100 pt;100 pt”
ListBox2.ColumnHeads = True
ListBox2.RowSource = “A1:G6000”
End Sub
Código del formulario para modificar
‘Actualizar el registro
Private Sub cmdcrearproducto_Click()
For i = 1 To 7
ActiveCell.Offset(0, i – 1).Value = Me.Controls(“TextBox” & i).Value
Next i
FRMMODIFICARPRODUCTO2.Hide
FRMMODIFICARPRODUCTO.Hide
FRMPRODUCTOS.Hide
ActiveWorkbook.Save
End Sub
Private Sub CommandButton2_Click()
FRMMODIFICARPRODUCTO2.Hide
End Sub
‘
‘Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
For i = 1 To 7
Me.Controls(“TextBox” & i).Value = ActiveCell.Offset(0, i – 1).Value
Next i
End Sub
Ya probaste descargando el ejemplo y haciendo pruebas con tus datos?
Si claro, el código que envió esta adaptado al que estoy haciendo. por eso las preguntas. tambien te lo envie completo al correo.
ya lo adapte. lo unico que no me funciona es que al seleccionar otra fila para modificarla me salen los datos de la primera que habia seleccionado.
lo de la etiqueta tampoco me cuadra.
pero lo que realmente es que me actualice los datos al cambiar de fila seleccionada en el formulario de modificar.
Cuál es el código que tienes en el formulario? tanto para cargar los datos de la tabla, como para hacer la modificación del registro ?
Hola Sergio, excelente trabajo. Pero tengo una pregunta, tal vez seria bueno que pudieras agregar un boton al pie del form. para “agregar” nuevas filas. Si la agrego “a mano” en la tabla principal, luego el boton “abrir lista” no se actualiza… o es que no he leido bien o se me paso algo?.
Bueno es un gran ejemplo que pienso usar en una planilla que contiene a la fecha unos 600 registros de empleados con muchos datos. Como debo ir agregando – y quitando gente- de ahi la consulta que te hago.
Sigue asi!. 🙂
Te comento que los ejemplos son precisamente para motivar a las personas a integrar sus propios desarrollos e ir aprendiendo. Estos ejemplos son tal cual, por lo que te invitaría a seguir buscando el en blog; seguramente en el ejemplo que publiqué aquí http://exceleinfo.wordpress.com/2011/07/05/ejemplo-de-formulario-de-captura-en-excel/ podrás encontrar las preguntas que buscas.
Con respecto al ejemplo en cuestión, la línea que dice ListBox1.RowSource = “Tabla1” carga sólo los datos del rango llamado llamado “Tabla1”. En este caso será cuestión de reemplazarlo por el rango que desees.
Buenas Tardes, yo copie el codigo y lo adapte a un programa que estoy haciendo. me ha ido muy bien es cuestion de asociar y adaptarse. me podrias ayudar es que cuando consulto varias filas en el formulario de modificar me quedan los datos de la primer consulta , me gustaria que lo hiciera como en el ejemplo, consultas una fila y te salen los datos de la consulta si consulto otra fila cambia y actualiza…. aunque copie el codigo tal cual no me lo hace como en el ejemplo de antemano te agradezco sergio x la ayuda y la asesoria…
Cuál es el código que tienes en el formulario? tanto para cargar los datos de la tabla, como para hacer la modificación del registro ?
Para cargar los datos de la tabla tengo :
Private Sub UserForm_Initialize()
Sheets(“PRODUCTOS”).Select
ListBox2.ColumnCount = 7
ListBox2.ColumnWidths = “300 pt;100 pt;200 pt;150 pt;80 pt;100 pt”
ListBox2.RowSource = “B1:G6000”
End Sub
y para modificar el registro tengo
‘Abrir el formulario para modificar
Private Sub cmdAceptar_Click()
If Me.ListBox2.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
Else
FRMMODIFICARPRODUCTO2.Show
End If
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox2_Click()
Fila = Me.ListBox2.ListIndex + 1
For i = 1 To 7
Cells(Fila, 1).Activate
Next i
End Sub
'Actualizar el registro
Private Sub cmdcrearproducto_Click()
For i = 1 To 7
ActiveCell.Offset(0, i – 1).Value = Me.Controls("TextBox" & i).Value
Next i
FRMMODIFICARPRODUCTO2.Hide
FRMMODIFICARPRODUCTO.Hide
FRMPRODUCTOS.Hide
ActiveWorkbook.Save
End Sub
esos son los datos que me estas pidiendo
La cuestión está en que estás utilizando HIDE para cerrar el formulario, pero lo que haces es OCULTARLO, y cuando lo vuelves a llamar te muestra la misma información.
Mejor utiliza la línea
Unload FRMMODIFICARPRODUCTO2
Y así con todos lo formularios
O también usa
Unload Me
Para cerrar el formulario activo
que bien muchas gracias. que buen apoyo….
sergio me dices que Unload me guarda los cambios al cerrar el formulario?
No. El Unload cierra el formulario, los cambios se los debes de programar con un botón o un evento al cerrar el formulario.
tenia una plantilla funcionando en la cual ya me traia las formulas para calcular el iva y demas.
lo que pasa es que lo que van a facturar no todos los elementos llevan iva por que son medicamentos.
se me ocurrio agregar dos listbox mas (iva y calculoiva)
agregue una formula que es precio * cantidad * iva
como unos van en 0.16 y otros en cero
todos pasan a calculoiva le saco el subtotal a estey lo envio a iva
pero me salen errores
si ingreso primero un producto que lleve iva no sale error, y me deja cargar mas productos lleven o no iva.
pero si el primer producto que ingreso en la factura no lleva iva
me sale
error 9
subindice fuera de intervalo
si lo depuro me envia a
FRMFACTURA.sumarValorTotal
FORMULARIO AGREGAR PRODUCTO
Private Sub cmdAgregar_Click()
If Trim(Me.txtCantidad.Text) = “” Then MsgBox (“Debes ingresar la cantidad!!”): Exit Sub
If Me.txtPrecio.Text = “” Then MsgBox (“Debes elegir un producto!!”): Exit Sub
With FRMFACTURA
.lstCantidad.AddItem (Me.txtCantidad.Text)
.lstDescripcion.AddItem (Me.cmbProducto.Text)
.lstValorUnitario.AddItem (Me.txtPrecio.Text)
.lstValorTotal.AddItem (Str(Val(Me.txtCantidad.Text) * Val(Me.txtPrecio.Text)))
.lstIva.AddItem (Me.txtIva.Text)
.lstCalculoIva.AddItem (Str(Val(Me.txtCantidad.Text) * Val(Me.txtPrecio.Text * Val(Me.txtIva.Text)))) ‘AQUI DEBERIA IR LA FORMULA PARA EL IVA
Cuenta = .lstCantidad.ListCount
If Cuenta >= 14 Then MsgBox (“Tienes ya el maximo de (14) productos por factura”): Exit Sub
End With
FRMFACTURA.sumarValorTotal
Me.txtPrecio.Text = “”
Me.txtIva.Text = “”
Me.txtCantidad.Text = “”
Me.cmbProducto.ListIndex = -1
Me.cmbProducto.SetFocus
End Sub
FORMULARIO FACTURA
Public Sub sumarValorTotal() ‘ suma solo la ultima lista, osea, Valor Total
Dim i As Integer
Dim j As Integer
Dim dTotal As Double
Dim dTotalIva As Double
dTotal = 0
For i = 0 To Me.lstValorTotal.ListCount – 1
dTotal = dTotal + Val(Me.lstValorTotal.List(i))
dTotalIva = 0
For j = 0 To Me.lstCalculoIva.ListCount – 1
dTotalIva = dTotalIva + Val(Me.lstCalculoIva.List(j))
Next
Me.txtSubtotal.Text = dTotal
Next
Me.txtCalculoIva.Text = dTotalIva
If dTotal > 0 Then ‘ aqui se hacen los calculos para el subtotal, iva y total
If dTotalIva > 0 Then
Me.txtIva.Text = Val(Me.txtCalculoIva.Text)
Me.txtTotal.Text = Val(Me.txtSubtotal.Text) + Val(Me.txtFlete.Text) + Val(Me.txtIva.Text)
End If
End If
arrTotal = Split(Me.txtTotal.Text, “.”)
If UBound(arrTotal) = 0 Then
Me.txtLetras.Text = “SON: ” & Num2Text(arrTotal(0)) & ” PESOS”
Else
Me.txtLetras.Text = “SON: ” & Num2Text(arrTotal(0)) & ” CON ” & arrTotal(1) & “PESOS”
End If
End Sub
tengo problemas para crear crear un autonumerico. me explico. tengo un formulario con un textbox llamdo txtnofactura, en el cual quiero llevar el conteo de facturas realizadas y las mismas se me guarden en una base de datos que es una hoja de excel. el problema es que cuando logro hacer el autonumerico y sierro el formulario me empieza a contar desde el numero que le asipne no en el ultimo numero generado. por favor si pueden ayudarme se los agradecere.
Te recomiendo que guardes el número en una celda de una hoja oculta y cuando el formulario haga la consulta y el incremento sea sobre esa celda.
me podrias decir la secuencia de codigo. ya que tengo 5 dias en estoy y estoy bloqueado.
solo me falta esto para poner a funcional esto
El punto solo es aumentar en 1 el dato que tengas en la celda elegida, por ejemplo:
Sub test()
Range(“A1”).Value = Range(“A1”).Value + 1
numero = Range(“A1”).Value
MsgBox “La nueva factura es ” & numero
‘Aquí pones tu código restante
End Sub
sergio muchisimas gracias. de verdad que tienes un conosimiento de vba espectacular. mis mas grandes respetos.
Saludos Sergio, quiero preguntarte si puedo hacer que no salgan los espacios en blanco al momento de visualizar
las filas en el listbox, lo que pasa es que en RowSource lo coloco en “A1:E1000” por logica para
que me cargue mas informacion, pero las filas llenas van hasta “A1:E359” asi no me muestra
las filas vacias, pero si ingreso otro registro lo deja cargar en la bd pero no lo refleja en el
listbox
Private Sub UserForm_Initialize()
Sheets(“CLIENTES”).Select
ListBox1.ColumnCount = 5
ListBox1.ColumnWidths = “290 pt;100 pt;200 pt;120 pt;200 pt”
ListBox1.RowSource = “A1:E1000”
End Sub
Para este caso, puedes revisar la respuesta que doy a un comentario aquí: http://exceleinfo.wordpress.com/2010/02/15/utilizar-un-combobox-como-lista-de-bsqueda/
buenas una pregunta sergio, como puedo hacer para filtrar eso datos de ese listbox d la tabla, y en cual despues modificarlos.Gracias
Para eso que comentas te recomiendo leer el post http://exceleinfo.wordpress.com/2012/07/07/modificar-datos-de-una-tabla-con-un-listbox-en-excel/
Hola Sergio, pregunta de una novata: he tratado de adaptar tu ejemplo, pero no doy. Ya cambié el RowSource, y me muestra correctamente los datos en el formulario buscar, pero no se como indicar que se Active la celda del registro elegido, ya que se encuentra en otra hoja?
Mucho agradeceré tu apoyo.
Hola Graciela:
La ActiveCell aplica sólo a la hoja activa donde estén trabajando. Te recomiendo que cuando se ejecute el formulario, se active la hoja donde están los datos y cuando cierres el formulario, regreses al hoja donde estabas.
Hola Sergio, te agradezco tu pronta respuesta, me queda claro lo de ActiveCell, lo que no me da es dónde tengo que indicar la hoja, que en este caso es DIRECTORIO. Lo indique en el codigo del formulario buscar, pero creo que algo me falta, ya que se va a la hoja en cuestion pero como en la hoja 1 esta el formulario, ya no puedo ver el otro formulario que muestra los datos del registro.
‘Activar la celda del registro elegido
Private Sub ListBox2_Click()
Sheets (“DIRECTORIO”).Activate
Fila = Me.ListBox2.ListIndex + 1
For i = 1 To 6
Cells(Fila, 1).Activate
Next i
End Sub
Disculpa mi ignorancia, pero de verdad soy una burra!!. Podrías apoyarme, porfis?
Que tal Graciela:
El botón que lanza el formulario estará en una hoja diferente a donde están tus datos y el código que debe contener es:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets(“DIRECTORIO”).Activate
Buscar.Show
End Sub
Al momento de que cierres el formulario, el botón de cerrar debe contener el código:
Private Sub CommandButton2_Click()
Sheets(“Hoja2”).Activate ‘o como se llame tu hoja
Application.ScreenUpdating = True
Unload Me
End Sub
Haz pruebas y comentas.
Podrias subir el ejemplo en xls porfavor es que tengo solo office 2000 en mi trabajo y bueno
Claro, aquí lo puedes descargar: https://skydrive.live.com/redir?resid=4509FEB32392C17C!2235&authkey=!AERFeVvDfh6_D5w
Saludos !!
genial trabajo.
Creo que es algo lo que pido. Me gustaría tratar un par de cosillas contigo por privado. Es posible?? Si quieres le dejo mi email
Un Saludo y gracias x tu gran trabajo
amigo hice cada paso del ejemplo pero al ejecutarlo aparece el listbox en blanco. que estoy haciendo mal: el codigo que escribo es el siguiente:
‘Activar la celda del registro elegido
Private Sub ListBox1_Click()
Sheets(“ancianos”).Activate
Fila = Me.ListBox1.ListIndex + 2
For i = 1 To 12
Cells(Fila, 1).Activate
Next i
End Sub
‘Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm1_Initialize()
Sheets(“ancianos”).Select
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = “70 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt”
ListBox1.ColumnHeads = True
End Sub
No te estás equivocando, sólo que el código que usas no es para llenar los datos.
Te recomiendo que descargues el ejemplo que esta en este post y tomes el código del archivo: http://exceleinfo.wordpress.com/2012/07/07/modificar-datos-de-una-tabla-con-un-listbox-en-excel/
Hola Sergio, felicitaciones por tan buen trabajo, he tomado tu ejemplo y lo he adapatado a mis necesidades. Tengo una inquietud, uno de los datos a modificar o actualizar es de tipo combobox, me gustaria que debo hacer ya que reemplazo en me.control(“textbox” por “combobox y no me funciona, que debo hacer para traer el valor y poder modificarlo? te agradezco muchisimo tu colaboracion
Si usas
Me.Controls("Combobox" & 1)
.Value debes tener en cuenta que tus Combos se tienen que comenzar con el texto Combobox, o en su defecto simplemente hacer referencia al objeto de la manera normalNombreCombo.Value
Hola Sergio , soy un seguidor de tu blog y te cuento que he aprendido mucho y te lo agradesco mucho.
aTengo una pregunta sobre este post, al igual que otros usuarios he adaptado este formulario a mis necesidades , pero tengo un problemita mi tabla en unos d elos txtbox llama un dato numerico que esta en formato moneda , cuando lo llama en el textbox se ve de esta manera 10990,56 y en la tabla esta en este formato 10,990.56 como hago para que el dato se vea en el txtbosx igual como esta en la tabl?
Que tal. Puedes usar este código.
Private Sub CommandButton1_Click()
With Me.TextBox1
.Value = Range(“A1”).Value
.Value = Format(.Value, “#,##0.00”)
End With
End Sub
Gracias por tu respuesta sergio , hice lo que me recomiendas pero no me funciona correctamente por las siguientes 2 razones.
1- el codigo que me pasaste solo me funciona para una celda en especifico y tengo una BD con varios importes
2-El otro problema es que cuando ejecuto el codigo el importe que tengo en esa celda esta asi 3,723.35 cuando ejecuto el codigo me lo pone asi 372,335.00
Saludos
Que tal.
El código que te pasé es para formatear el o los TextBox que decidas, así que no importa cuántos importes tengas. Si tienes más TextBox nada más hay que replicar el código y cambiar el rango.
Con respecto al formato del TextBox, si tu cantidad de la celda es 3 mill +, no entiendo por qué muestre la cantidad de 300 mil en el TextBox. Yo hice las pruebas y me salió bien.
Prueba ingresando a mano la cantidad en la celda y ejecuta el código para validar que salga correctamente.
En todo caso, por favor mecióname que configuración regional tienes en tu PC.
Gracias por tu respuesta, ya resolvi el problema con el codigo que me enviaste , estaba poniendo el formato de numero mal . Muchas gracias.
Hola, quisiera saber si me puedes ayudar mandandome el archivo para enteder mejor el codigo, agradeceria muchisimo tu ayuda
Hola.
Bájalo desde este link: https://www.dropbox.com/s/hv5kb3o0c2kglh6/EXCELeINFO%20-%20Modificar%20datos%20mediante%20ListBox.xlsm
hola, muy buenos tus ejemplos, tienes algún canal en youtube?
Sí claro, en la parte superior del Blog está el link.
Que tal sergioacamposh, he visto tu ejemplo y lo he modificado para uno que estoy haciendo, el problema es el siguiente, en el form de modificar quiero que los texbox lo jalen pero de la selección del listbox sin ‘Activar la celda del registro elegido ya que se encuentra en otra hoja que va a estar oculta y por eso me marca error y a su vez pueda modificar los datos sin ver la hoja oculta.
¡Hola!
Una duda con respecto al código. Todo me funciona a la perfección excepto al guardar la información, sólo me actualiza la primera celda, que capturo con el TextBox1, las demás no actualizan los datos. El proceso lo mando llamar de un módulo.¿Alguna sugerencia?
Worksheets(“DatosFiltrados”).Activate
For i = 1 To 6
ActiveCell.Offset(0, i – 1).Value = frmFiltradoDeDatos.Controls(“TextBox” & i).Value
Next i
Call FuncionBoton.LimpiarTxtBoxModulo
¡Típico!, cuando agotas toda la información disponible y te decides por preguntar tu duda, encuentras la solución de inmediato. Al parecer mi problema estaba con la variable “i”, la tenía declarada como pública, la declare dentro del proceso y problema resuelto.
Gracias.
Me da gusto que lo haya resuelto tú mismo.
Hola, he tomado como ejemplo tu publicacion, que ha proposito esta super, pero si pudieras ayudarme en un pequeño lio q tengo. He creado un formulario a travez del cual ingreso datos de articulos diversos q van a una tabla en una independiente, lo he cargado en un listbox sin complicaciones, pero al momento de intentar modificar algun ingreso, la informacion no se carga en el formulario de modificacion mientras el puntero del mouse no se encuentra en la hoja activa. Que debo hacer? para que el formulario de modificacion cargue los datos a corregir independientemente de q si esta en la hoja activa.
Por otro lado, tengo otro caso, el formulario de ingreso no
Tomando el caso anterior, falto mencionarle que el formulario de ingreso trabaja con combobox, esta herramienta lista una serie de datos de otra hoja independiente. El problema esta justamente al momento de cargar los datos para modificar. Luego el formulario presenta error al momento de pretenderse proyectar. A ver si me puede ayudar.
tu ejemplo esta genial y me resulto muy util; pero me gustaria saber como borrar los datos si por ejemplo mi lista se encuentra en el rango A:C, que solo borre lo que seleccione de esta lista ya que tengo datos en las demas columnas y no quiero que me borre todo
Qué tal.
Sustituye la línea:
Rows(Fila).Delete
Por esta:
Range(“A” & Fila & “:” & “C” & Fila).Delete Shift:=xlUp
Private Sub ListBox1_Click()
fila = Me.ListBox1.ListIndex + 2
For i = 1 To 4
Cells(fila, 1).Activate
Next i
End Sub
PERO UTILIZARLO EN LA HOJA 2
Hola como van, primero que tod me ha servido muchisimo este blog para manejar excel de forma avanzada, los felicito por ese trabajo, ahora les presento mi problema:
tengo un libro de excel donde lanzo el userforms desde la hoja1 y quiero filtrar y modificar con un combobox información de la hoja cuentas, ya pude con mucho esfuerzo hacerlo funcionar a medias, pero tengo dos problemas:
1. cuando aparecen los resultados si hay mast de tres y selecciono alguno de los ultimos ( en un ejemplo de 3 o mas resultados, a partir del 3 resultado) me da un error 91 que hace falta un bloque with en la linea que comienza con las barritas //:
Private Sub ListBox1_Click()
Worksheets(“Cuentas”).Range(“A3”).Activate
Cuent = Me.ListBox1.ListCount
Set rango = Range(“A1”).CurrentRegion
For i = 0 To Cuent – 1
If Me.ListBox1.Selected(i) Then
Valor = Me.ListBox1.List(i)
// rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
// Worksheets(“Cuentas”).Range(“A3:A600”).Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
End If
Next i
End Sub
El segundo problema es que si selecciono el segundo resultado y le doy modificar siempre me trae el userform con los valores de la primera fila y no de la segunda, que puede ser?
Gracias por la ayuda 🙂
Hola, primero quiero avisar que he echo un programita exclusivamente tomando ejemplos de esta pagina, modificandolos y complilandolos, pero he llegado a un punto que no se como solucionar algunas cosas, ya que mi conocimento es muy limitado, uno de los problemas que tengo o duda ( a la cual no le enceuntro respuesta leyendo los post y preguntas y respuestas, y por ello acudo a tu ayuda) es: al modificar desde un formulario la tabla, en mi caso una tabla de 38 columnas, se me modifican todas las celdas de la fila de la tabla, como hago para que SOLO se modifiquen aquellas en las que SI se calbió un dato mediante el formulario??? y no el resto, y esto va principalmente al hecho de que me modifica el formato de algunas celdas de la tabla y no se como solucionarlo. Gracias
buen dia les consulto.. como hago que este codigo me traiga por palabra y no por lista…
digamos que necesito poder buscar por palabra y no por lista desplegable-…
si alguien me puede ayudar …gracias!
Private Sub CommandButton1_Click()
Valor = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, Sheets(“BUSCAR CODIGO”).Range(“$B$10:$C$1999”), 2, 0)
Me.Label1.Caption = Valor
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox1.List = Sheets(“BUSCAR CODIGO”).Range(“$B$10:$C$1999”).Value
End Sub
funciona bien con textbox, pero qué hacer cuando por ejemplo el nombre se carga en un combobox