Buen día, tengo un problema parecido al que resuelves en este post... soy nueva en esto de VBA y buscando en tutoriales y libros e ido programando una base de datos solo que al querer hechar andar el boton de actualizar no e podido se me duplican los datos o bien se guardan en otras celdas... el boton de buscar yo lo programe de la siguiente manera...
Private Sub CommandButton2_Click()
Worksheets("BASE_DATOS").Activate
Range("A4.JF1000").Select
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
TextBox2 = ActiveCell 'Nombre
Podrias ayudarme por favor... estoy desesperada , de ante mano gracias!!!
Hola
¿Qué es exactamente lo que quieres hacer?
Un saludo
Hola Cron.. quiero programar un boton para actualizar datos... es decir los busco y quiero modificarlos... lo que me pasa es que al querer hacerlo se me duplican... y no e encontrado la forma para programarlo
La idea general está clara. Pero debes ser más precisa.
¿Quieres que al pulsar un botón en un formulario, los valores que hay en un textbox se copien a una celda?¿Quieres que la hoja actualice los datos que llegan desde otra hoja/libro? ¿Quieres que se recalcule la hoja porque no lo hace? ¿Qué es exactamente para ti "actualizar datos"?
Un saludo
Buen día Cron, tengo un boton "Actualizar".... Yo busco un dato (mediante el # de empleado) me aparece la información de este (Nombre, apellidos, examenes, fechas y calificaciones de los mismos... como estos tienen validez solo por un año requiero estar cambiando esta informacion.... entonces quiero buscar al empleado #4512 y modificar ciertos datos y que estas modificaciones sustituyan a las anteriores en la misma casilla.... cosa que no hace... busco al empleado #4512 me muestra toda la informacione cada casilla del formulario y al modificar algo me lo guarda en otras celdas como un empleado nuevo....
¿Podria adjuntar el archivo aqui mismo?
Te adjunto una captura de pantalla del formulario... quiero cambiar datos desde el formulario y que se reflejen el mi archivo excel.
De ante mano gracias por tu tiempo.
Vale, entonces entiendo que lo que tienes es un formulario y quieres que el valor del textbox se copie a la celda. Tu código está al revés. Cuando haces la búsqueda, copias el valor de la celda al textbox del formulario.
Cuando haces una asignación (un signo igual), el lado de la derecha es el que tiene el valor, y el de la izquierda es donde lo quieres poner.
En tu caso, sustituye:
ActiveCell.Offset(0, 1).Select
TextBox2 = ActiveCell
por lo siguiente:
ActiveCell.Offset(0, 1).Select
Activecell.value = TextBox2
Se siguen guardando los datos modificados como un dato totalmente nuevo, es decir, en otras casilla de la base de datos.. aque se debera esto?
Te adjunto el archivo espero puedas darle un vistaso.
De ante mano muchas gracias!
En el código asociado al botón "Actualizar datos" le dices que lo copie en la primera fila. Sin embargo, en el código que nos pasaste en tu primera pregunta, realizas una búsqueda con este código:
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate
Y que ahora ha desaparecido en el archivo que nos has mandado.
En cuanto lo pones en su sitio, el botón funciona perfectamente.
Un saludo
Cron, muchisimas gracias por tu ayuda me ha servido de mucho.
Saludos!!
Buen día podria ayudarme con un problema que me ha surgido al crear una base de datos en excel con vba por favor.
He creado un formulario en excel contiene combobox y textbox's para capturar datos y guardarlos celdas especificas en una hoja excel ... lo que no logro hacer (y tampoco encontré algo similar que pudiese adaptar a mi situación) es:
Como puedo buscar informacion a partir de 2 datos introducidos en el formulario (en este caso en el ComboBox4 y texbox179 respectivamente) y al pulsar el botón "consultar" (que lleva por nombre CONSULTARCAP... se carguen los demás datos en los demás textbox ( que serian el: TextBox177 y TextBox178 ).
De ante mano muchas gracias por su ayuda.
Saludos :)
¿Dónde están los datos que necesitas cargar a los otros combos?
Si la info ya está en la hoja, ¿de verdad necesitas cargarlos al formulario?
De todas maneras, para buscar el Cells.find que utilizabas está bien. Esto te da una celda, por lo que si lo asignas a un objeto tipo range, puedes obtener fila y columna. Algo así como:
Dim objeto as range
objeto = Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate
fila = objeto.row
columna = objeto.column
Esto te puede servir si necesitas encontrar una celda y devolver el valor de dos celdas más a la derecha. Harías:
Valor = cells(fila,columna + 2)
Un saludo
Clon yo tengo un problema igual para la actualizacion de una base de datos.. pero mi pregunta se puede hacer por medio de una grabacion de macro...
El problema de las grabaciones de macro es que siempre trabajarán con la misma celda en la que encontraste el dato cuando la grabaste.
En realidad las grabaciones son una herramienta muy útil, pero salvo para cosas muy concretas y sencillas, yo no las utilizaría sin pasarles después de grabarlas el filtro del ojo del programador.
Hola Cron espero expricarme en mi problema y sobre todo espero que me ayudes, realice un archivo el cual funciona capturando la informacion deseada en celdas y guardandolas por medio de una macro en un libro externo llamado base de dato, cada dato tiene un numero unico el cual al editar dichos datos con este numero los busco y me da la informacion requerida, pero quisiera actualizar los datos, por ejemplo si busco el codigo, 12345 y la informacion es Nombre:Mesa,Material:Madera, Proceso:Corte...Etc. Yo quisiera actualizar el Proceso de Corte a Barnizado, para que cuando pase algun inspector y escanee el codigo le aparesca en que proceso esta dicho producto, espero averme explicado y me puedas ayudar...
Lo que suelo hacer cuando esto se realiza por código es una idea parecida a como funciona BUSCARV.
Cuando utilizas BUSCARV, lo primero que haces es ponerte en la primera columna, buscar el valor correspondiente, y luego desplazarte a la derecha x celdas y tomar ese dato.
En código es parecido, pero hay que hacer el proceso manualmente.
Busco en la primera columna con el método Range("A:A").find("loquequierobuscar")
En ocasiones puedo añadir más parámetros a find, en función de cómo quiera que se comporte.
Esta búsqueda la asigno a una variable de tipo range, y luego me desplazo hacia la derecha y hago la magia, algo así como:
Dim celda As Range
Set celda = Range("A:A").find("12345")
if not celda is nothing
celda.offset(0,4).value = "valorquequieroañadir"
end if
En este ejemplo considero que quieres cambiar el valor de la columna D.
Espero que te sirva.
Ok lo pondré en práctica y espero y me funcione de antemano gracias...
Disculpa no tengo mucha experiencia en las macros pero ya hice lo q me enviastes pero me envía algunos errores q fui solucionando pero aún así no obtengo resultado, cabe mencionar q mi archivo de Base de Datos y el de Captura de datos se encuentran en libros diferentes..
¿Puedes poner aquí qué es lo que has hecho exactamente?
Es más, ¿podrías subir los archivos? Por supuesto, antes de subirlos, elimina los datos o deja datos falsos.
Un saludo
Ok.... mira este es mi archivo para capturar proyectos..
Cada que le doy guardar se envia a un nuevo libro que se llama Base de Datos.
Lo que necesito hacer es que cuando busque algun codigo (1,2,3,4) pueda cambiar el PROCESO (de SOLDAR a PINTURA) en el que se encuaentra dicho proyecto y eso realizarlo desde mi archivo de Captura de proyecto y que se cambie en el archivo de Base de datos, como te comente se encuentran en diferentes libros de exel.... espero y me ayudes
Sí, la estructura más o menos la tenía clara. Lo que no sé es qué es lo que has hecho en el código hasta ahora. Es decir, qué código es el que no te funciona.
Lo digo porque una cosa es desarrollar aquí todo el código y otra diferente es resolver alguna duda. Si tienes dudas concretas, estaré encantado de resolvértelas.
Ya te he dicho cómo lo haría yo. Y tú me has dicho que lo has intentado y que te da error. Si quieres, sube el código que te da error y vemos dónde puede estar el problema, pero un foro no es el lugar donde se desarrolle el código.
Espero que me entiendas.
Ok Mira segun alo que entendi fue sobre el codigo que me enviaste
Dim celda As Range
Set celda = Range("[BASE DE DATOS PROYECTOS.xlsm]BASE DATOS DE PROYECTOS'!B3:F100").find("CAPTURA PROYECTOS.xlsm'!C4")
if not celda is nothing
celda.offset(0,6).value = "CAPTURA PROYECTOS.xlsm'!C8"
end if
Ok
¿Esto te funciona correctamente?
Un saludo
No realiza ninguna función...
Hola Cron, por lo que leo en los comentarios tu sabes de programacion en Excel. fijate que tengo un problema, ya que quiero realizar GENERAR un boton donde le de click me salgan unas condiciones que hice en excel para localizar unos alumnos. y cuando escoja esa condicion unicamente salgan los alumnos que la cumplan. podras ayudarme?
Claro! ¿Dónde tienes el problema?
[comentario movido a tema nuevo en el foro http://www.necesitomas.com/actualizar-tabla-boton]
[comentario movido a tema nuevo en el foro http://www.necesitomas.com/actualizar-datos-tabla-macro ]
buen dia,
me podrias ayudar con un código para programar un boton y que me traga el dato de la ultima columna hacia la derecha por favor
[comentario movido a tema nuevo en el foro http://www.necesitomas.com/ultima-columna]
[comentario movido a tema nuevo en el foro https://www.necesitomas.com/ayuda-programar-formulario]
[Comentario movido a tema nuevo en el foro: https://www.necesitomas.com/ayudaaaa-favor]