Muy buenas.
Estimados solicito de su ayuda ya he topado no se como hacer para que el formulario actualice los datos de la fila; les platico como esta la cosa estoy trabajando en dos hojas la primera se llama "MODULOS" en esta tengo un boton que despliega un formulario#1 de captura de datos los cuales al guardar almacena los datos en la hoda dos o "BASE DE DATOS" la cual esta protegida; ahora bien en la hoja "BASE DE DATOS", en cada fila he dejado una celda en la cual se invoca un formulario#2 el cual permite actualizar algunos registros pero no he logrado hacerlo por tal pido de su ayuda, no se como hacerlo. hice esto pero no me funsiono; por favor ayuda paso a paso aun soy muy pero muy novato en esto de VBA... De antemano Muchas Gracias.
Private Sub CommandButton1_Click()
If TextBox1 = "" Or TextBox10 = "" Or TextBox3 = "" Or TextBox11 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Or TextBox9 = "" Then
MsgBox "FALTA POR LLENAR CUADROS DE INFROMACION", vbInformation, "ERROR DE CAPTURA DE DATOS"
Else
Dim rango As Long
Sheets("BASE DE DATOS").Unprotect "contraseña"
Worksheets("BASE DE DATOS").Activate
Range("A" & ActiveCell.Row).Select
ActiveCell.Value = TextBox1.Value
ActiveCell.Value = TextBox3.Value
ActiveCell.Value = TextBox4.Value
ActiveCell.Value = TextBox5.Value
ActiveCell.Value = TextBox6.Value
ActiveCell.Value = TextBox7.Value
ActiveCell.Value = TextBox8.Value
ActiveCell.Value = TextBox9.Value
ActiveCell.Value = TextBox10.Value
ActiveCell.Value = TextBox11.Value
MsgBox "REGISTRO EXITOSO", vbOKOnly, "REGISTRO"
ActiveWorkbook.Save
ActiveSheet.Protect "contraseña", True, True
UserForm2.TextBox1.Value = ""
UserForm2.TextBox3.Value = ""
UserForm2.TextBox4.Value = ""
UserForm2.TextBox5.Value = ""
UserForm2.TextBox6.Value = ""
UserForm2.TextBox7.Value = ""
UserForm2.TextBox8.Value = ""
UserForm2.TextBox9.Value = ""
UserForm2.TextBox10.Value = ""
UserForm2.TextBox11.Value = ""
MsgBox "DATOS INGRESADOS EN LA FILA " & fila
End If
End Sub
Hola
Lo que veo aquí es que estás poniendo todos los valores en la misma celda, que es la celda activa. Esa celda será la celda A5, si la celda activa anterior estaba en la fila 5, por ejemplo.
Personalmente prefiero utilizar CELLS(fila,columna), pues es más sencillo de manejar en VBA. Así, si quieres ir rellenando los datos en la misma fila solo tienes que ir aumentando el índice de la columna. Esta notación es muy útil para hacer bucles.
Si prefieres seguir con range, deberás cambiar de celda cada vez que añadas un valor (no cambias a la siguiente como cuando manualmente pulsas Intro). Esto se hará con la orden Activecell.offset(fila,columna)
Un saludo
ayuda lo he intentado y he ratreado en la web pero no he logrado encontrar nada ya logre que actualice los datos dentro de la misma fila pero resulta que cuando le pongo las columnas que son me da un error 1004 ayuda a poder solucionarlo y si no es mucho pedir si pueden guiarme paso a paso ya que soy novato en esto de VBA. por su ayuda muchas gracias
Tal y como lo tienes, si al darle al botón tienes seleccionada cualquier celda que esté en una columna de la A a la K, te va a dar error siempre, pues estás mirando una celda 11 columnas más a la izquerda.
Mi pregunta es: ¿Por qué no fijas la celda inicial con algo así como CELLS(4,3).activate y a partir de ahí empiezas a hacer todo lo demás?
En este caso, CELLS(4,3) sería la celda C3
Un saludo
Buen Día.
Gracias Amigo por la Ayuda, lo que sucede es que no fijo la celda dado que lo que necesito es que actualice en cada fila; - en la celda "J" de cada celda fila con datos tengo un Userform2 que se activa al hacer doble click sobre la celda este se abre y hala los datos a cada textbox;- Ahí es donde se actualizan los datos; para ello es lo que pido ayuda ya que no se como hacer para que al presionar el botón actualizar o guardar los vuelva a poner en las celdas que corresponden.
sera que me ayudas.
de antemano gracias.
Es difícil saberlo porque no adjuntas el archivo, sino solo capturas.
Habría que ver cómo queda la cosa tras abrir el userform. No obstante, yo capturaría la fila al abrir el userform, y luego utilizaría el valor al hacer el volcado de datos. Lo que haces es correcto, pero como depende de la celda activa, variará en función de cuál sea. En caso de que no lo toques, estarías en la J, por lo que no le puedes restar 11 columnas, pues te sales de la hoja, y de ahí el error que te da. Yo haría, además, que no dependa de la celda activa (Activecell.offset)
Si adjuntas el archivo (elimina los datos que no desees compartir antes), quizás podemos ir más al grano.
Un saludo
me regalas tu correo el mio djjhonybeat@outlook.com
Envio archivo para que me ayudes.
gracias por la ayuda.
Gracias.
Mejor continuamos por aquí. Así lo que te regalo gratis, lo damos a la comunidad gratis. Las consultas privadas también las atiendo, pero las cobro ;)
En tu código, lo que ocurre es que estás utilizando mal la orden offset y no te estás colocando en la celda correcta en cada momento. Yo haría lo siguiente:
Sustituye el código este:
ActiveCell.Offset(0, -10).Select
ActiveCell.Offset(0, 1) = TextBox1.Value
ActiveCell.Offset(0, 2) = TextBox11.Value
ActiveCell.Offset(0, 3) = TextBox3.Value
ActiveCell.Offset(0, 4) = TextBox10.Value
ActiveCell.Offset(0, 5) = TextBox4.Value
ActiveCell.Offset(0, 6) = TextBox5.Value
ActiveCell.Offset(0, 7) = TextBox6.Value
ActiveCell.Offset(0, 8) = TextBox7.Value
ActiveCell.Offset(0, 9) = TextBox8.Value
ActiveCell.Offset(0, 10) = TextBox9.Value
Por este otro:
fila = Activecell.row
cells(fila,1) = TextBox1.value
cells(fila,2) = TextBox11.value
cells(fila,3) = TextBox3.value
.
.
.
cells(fila,10) = TextBox9.value
Por supuesto, rellena todas las líneas con el mismo patrón.
Espero que te sirva.
Un saludo
Muchas gracias el codigo funsiono perfectamente... mil gracias..
cierro la consulta.
bendiciones