Buenos días. Con este código llevo los datos de un userform hacia la hoja .Ahora necesito como hacer para que también si necesito pueda modificar o borrar el dato por favor ayúdame.. Gracias!... Private Sub UserForm_Click() Private Sub UFAGREGAR_Click() 'definimos las variables Dim iFila As Long Dim ws As Worksheet Set ws = Worksheets(1) ' Encuentra la siguiente fila vacía
iFila = ws.Cells(Rows.Count, 1) _ .End(xlUp).Offset(1, 10).Row ' Verifica que se ingrese un codigo If Trim(Me.UFCODIGO.Value) = "" Then Me.UFCODIGO.SetFocus MsgBox "DEBE INGRESAR UN CODIGO" Exit Sub End If ' Copia los datos a la tabla Excel ws.Cells(iFila, 1).Value = Me.UFCODIGO.Value ' Limpia el formulario Me.UFCODIGO.Value = "" Me.UFCODIGO.SetFocus End Sub
Primero que nada disculpa pero tuve que salir y no había revisado los correos Yo te voy a enviar como yo ingreso los datos a un Userform, ya que yo grabo los datos al final. Y como modificar esos mismos datos
Este código así yo ingreso más o menos los datos ya que espero tener todos los datos en el userform y luego ingreso los datos a la planilla, cuando estoy seguro de que los datos están correctos, ahora bien cada uno ingresa como lo estime conveniente, igual te mando este código para que lo veas y saques tu propia idea. Luego te mando el tema para modificar los mismos datos. Private Sub CommandButton1_Click() 'activamos la hoja 1 donde se encuentran los datos Worksheets("LibrodeCompras").Activate Dim fila As String Dim Total1, neto1, exento1, iva1 As Integer Dim fecha As Date TextBox9 = UserForm1.TextBox9.Text 'Verificamos que todos los campos esten llenos If TextBox9 = Empty Or ComboBox1 = Empty Or ComboBox2 = Empty Or NumeroFac = Empty Or Exento = Empty Or Neto = Empty Or Iva = Empty Or Total = Empty Then MsgBox Prompt:="No deje NINGUN campo vacio", Buttons:=vbOKOnly, Title:="Campo vacio" GoTo seguir End If Range("A13").Select Rows("13:13").Select fila = ActiveCell.Row Selection.Insert Shift:=xlDown hojaderuta = Val(TextBox5) ActiveCell = Val(TextBox5) Range("b" + fila) = Val(NumeroFac) Range("c" + fila) = CDate(TextBox9) Range("d" + fila) = ComboBox2 Range("e" + fila) = Val(ComboBox1 * 1) Range("f" + fila) = Val(Label48) Range("g" + fila) = Label40 Range("h" + fila) = Val(Exento * 1) Range("i" + fila) = Val(Neto * 1) Range("j" + fila) = Val(Iva * 1) Range("k" + fila) = Val(Total * 1) Range("l" + fila) = TextBox6 Range("m" + fila) = CDate(Vencimiento) Range("o" + fila) = Val(TextBox13) Range("p" + fila) = Val(TextBox20) Range("s" + fila) = DateValue(Now) Range("t" + fila) = TimeValue(Now) Range("B13").Select Unload UserForm1 Worksheets("LibrodeCompras").Activate Exit Sub seguir: CommandButton1.SetFocus End Sub Private Sub CommandButton2_Click() Unload UserForm1 End Sub '************************************ INICIO DEL SISTEMA ************************************************** Private Sub UserForm_Initialize() ComboBox2. AddItem "ENERO" ComboBox2. AddItem "FEBRERO" ComboBox2. AddItem "MARZO" ComboBox2. AddItem "ABRIL" ComboBox2. AddItem "MAYO" ComboBox2. AddItem "JUNIO" ComboBox2. AddItem "JULIO" ComboBox2. AddItem "AGOSTO" ComboBox2. AddItem "SEPTIEMBRE" ComboBox2. AddItem "OCTUBRE" ComboBox2. AddItem "NOVIEMBRE" ComboBox2. AddItem "DICIEMBRE" Dim fecha, MiHora As Date Dim opera As String Range("D13").Select ComboBox2 = ActiveCell.Value Range("a13").Select TextBox5 = ActiveCell.Value + 1 TextBox21 = ActiveCell.Value + 1 fecha = DateValue(Now) MiHora = TimeValue(Now) Vencimiento = DateValue(Now) Exento = 0 Neto = 0 Iva = 0 Total = 0 TextBox9 = fecha End Sub
Este código te sirve para modificar, si te darás cuanta es algo similar, debes crear otro userform similar al del ingreso, pero para modificación, este código te muestra la idea de ubicar la fila que vas a modificar y va subiendo dato por dato al userform, una vez que lo carga con los datos queda a la espera de modificaciones y al presionar el botón command de ingreso vuelve a grabar los datos nuevos. Ademas que quiero contar que la idea de modificar debe tener un dato para encontrar la información, de esta manera se crea otro userform que pide el dato, por ejemplo el numero de factura, un correlativo, una fecha lo que sea más importante en tus datos y obviamente que no se repita en el rango de información. Velo y me cuentas como te va ' *********************************** INICIO DE FORMULARIO ******************************** Private Sub UserForm_Initialize() Worksheets("LibrodeCompras").Activate 'Cargamos los Meses ComboBox2. AddItem "ENERO" ComboBox2. AddItem "FEBRERO" ComboBox2. AddItem "MARZO" ComboBox2. AddItem "ABRIL" ComboBox2. AddItem "MAYO" ComboBox2. AddItem "JUNIO" ComboBox2. AddItem "JULIO" ComboBox2. AddItem "AGOSTO" ComboBox2. AddItem "SEPTIEMBRE" ComboBox2. AddItem "OCTUBRE" ComboBox2. AddItem "NOVIEMBRE" ComboBox2. AddItem "DICIEMBRE" Worksheets("LibrodeCompras"). Activate Range("A13").Select While ActiveCell.Value <> modifica If ActiveCell.Value <> Empty Then ActiveCell.Offset(1, 0).Select Else MsgBox "No existe la Operacion Ingresada" GoTo Salir Exit Sub End If Wend TextBox5 = ActiveCell.Value TextBox5 = UserForm4.TextBox5.Value TextBox21 = TextBox5 ActiveCell.Offset(0, 1).Select NumeroFac = ActiveCell.Value NumeroFac = UserForm4.NumeroFac.Value ActiveCell.Offset(0, 1).Select TextBox9 = ActiveCell.Value TextBox9 = UserForm4.TextBox9.Value ActiveCell.Offset(0, 1).Select ComboBox2 = ActiveCell.Value ComboBox2 = UserForm4.ComboBox2.Value ActiveCell.Offset(0, 1).Select ComboBox1 = ActiveCell.Value ComboBox1 = UserForm4.ComboBox1.Value UserForm4.ComboBox1.Value = FormatNumber(ComboBox1, 0) ActiveCell.Offset(0, 1).Select Label48 = ActiveCell.Value Label48 = UserForm4.Label48 ActiveCell.Offset(0, 1).Select Label40 = ActiveCell.Value Label40 = UserForm4.Label40 ActiveCell.Offset(0, 1).Select Exento = ActiveCell.Value Exento = UserForm4.Exento.Value ActiveCell.Offset(0, 1).Select Neto = ActiveCell.Value Neto = UserForm4.Neto.Value UserForm4.Neto.Value = FormatNumber(Neto, 0) ActiveCell.Offset(0, 1).Select Iva = ActiveCell.Value Iva = UserForm4.Iva.Value UserForm4.Iva.Value = FormatNumber(Iva, 0) ActiveCell.Offset(0, 1).Select Total = ActiveCell.Value Total = UserForm4.Total.Value TextBox22 = Total UserForm4.Total.Value = FormatNumber(Total, 0) ActiveCell.Offset(0, 1).Select TextBox6 = ActiveCell.Value TextBox6 = UserForm4.TextBox6 ActiveCell.Offset(0, 1).Select Vencimiento = ActiveCell.Value Vencimiento = UserForm4.Vencimiento.Value ActiveCell.Offset(0, 1).Select TextBox12 = ActiveCell.Value TextBox12 = UserForm4.TextBox12 ActiveCell.Offset(0, 1).Select TextBox13 = ActiveCell.Value TextBox13 = UserForm4.TextBox13.Value UserForm4.TextBox13.Value = FormatNumber(TextBox13, 0) ActiveCell.Offset(0, 1).Select TextBox20 = ActiveCell.Value TextBox20 = UserForm4.TextBox20 ActiveCell.Offset(0, 1).Select TextBox17 = ActiveCell.Value TextBox17 = UserForm4.TextBox17 ActiveCell.Offset(0, 1).Select ActiveCell.Offset(0, -16).Select Exit Sub ActiveCell.End(xlToLeft).Select Salir: Unload UserForm5 End Sub Private Sub CommandButton1_Click() 'activamos la hoja 1 donde se encuentran los datos Worksheets("LibrodeCompras").Activate Dim fila As String fila = ActiveCell.Row ActiveCell = Val(TextBox5) Range("b" + fila) = Val(NumeroFac) Range("c" + fila) = CDate(TextBox9) Range("d" + fila) = ComboBox2 Range("e" + fila) = Val(ComboBox1 * 1) Range("f" + fila) = Val(Label48) Range("g" + fila) = Label40 Range("h" + fila) = Val(Exento * 1) Range("i" + fila) = Val(Neto * 1) Range("j" + fila) = Val(Iva * 1) Range("k" + fila) = Val(Total * 1) Range("l" + fila) = TextBox6 Range("m" + fila) = CDate(Vencimiento) Unload UserForm4 Worksheets("LibrodeCompras").Activate Exit Sub seguir: TextBox2.SetFocus End Sub Private Sub CommandButton2_Click() Unload UserForm4 End Sub
Tal vez se ve largo pero lo deje con bastante información, ya que así uno puede sacar ideas para otras cosas. Solo debes ocupar los Textbox y combobox, que necesites.