sábado, 25 de febrero de 2017

registro de datos con VBA



Diseño del formulario


Diseño en la hoja1



Private Sub CmdNuevo_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
ComboBox1.Text = ""
Me.OptionButton1.Value = True
TextBox1.SetFocus
End Sub

Private Sub CmdGrabar_Click()
Dim xfil As Integer

If Len(TextBox1.Text) <> 11 Then
    MsgBox "Verificar el Nº de Ruc ", vbInformation, "Aviso !!!!"
    TextBox1.SetFocus
    Exit Sub
End If


Range("A6").Activate
xfil = ActiveCell.CurrentRegion.Rows.Count
ActiveCell.Offset(xfil, 0) = TextBox1.Text
ActiveCell.Offset(xfil, 1) = TextBox2.Text
ActiveCell.Offset(xfil, 2) = TextBox3.Text
ActiveCell.Offset(xfil, 3) = ComboBox1.Text
If CheckBox1.Value = True Then
   ActiveCell.Offset(xfil, 4) = "Lima"
Else
   ActiveCell.Offset(xfil, 4) = "Provincia"
End If

If OptionButton1.Value = True Then
   ActiveCell.Offset(xfil, 5) = "Bueno"
Else
   ActiveCell.Offset(xfil, 5) = "Excelente"
End If

ActiveCell.Offset(xfil, 6) = TextBox4.Text

End Sub

Private Sub CmdSalir_Click()
Unload Me
End Sub

Private Sub UserForm_Activate()
ComboBox1.RowSource = "ListaDistritos"
End Sub

33 comentarios:

  1. amigo me gusto todo eso pero tengo una pregunta, que pasa si mi botón está en otra hoja y la informacion que quiero poner quiero que se encientre en otra hoja???, que tengo que modificar???

    ResponderBorrar
    Respuestas
    1. no es para mi la pregunta pero te puedo decir con certeza que solo debes de escriber la siguiente linea, supongamos que la hoja donde quieres agregar la informacion se llama

      datos"




      ESO ES TODO. LO DEMAS LO HACE LA OTRA INSTRUCCION

      ENTONCES SERIA


      SHEETS("DATOS").SELECT

      Range("A6").Activate
      xfil = ActiveCell.CurrentRegion.Rows.Count

      Borrar
    2. SI ME FUNCIONO MI HOJA SE LLAMA DATA Y SOLO COPIE:
      Private Sub CommandButton2_Click()
      Dim XFILL As Integer
      Sheets("DATA").Select
      Range("A1").Activate
      XFIL = ActiveCell.CurrentRegion.Rows.Count
      ActiveCell.Offset(XFIL, 0) = TextBox1.Text
      ActiveCell.Offset(XFIL, 1) = TextBox2.Text
      ActiveCell.Offset(XFIL, 2) = TextBox3.Text
      ActiveCell.Offset(XFIL, 3) = TextBox4.Text
      ActiveCell.Offset(XFIL, 4) = TextBox5.Text
      ActiveCell.Offset(XFIL, 5) = TextBox6.Text
      ActiveCell.Offset(XFIL, 6) = TextBox7.Text
      ActiveCell.Offset(XFIL, 7) = TextBox8.Text
      ActiveCell.Offset(XFIL, 8) = TextBox9.Text
      ActiveCell.Offset(XFIL, 9) = TextBox10.Text

      End Sub

      Borrar
  2. SI TE CONTESTA ME AVISAS
    yo queiro usar un mismo formulario para varias tablas osea crear boton1 que me guarde en la tabla 1, boton2 que me guarde en la tabla2 y asi sucesivamente

    ResponderBorrar
    Respuestas
    1. creas un formulario con distintos botones para cada tabla.

      Borrar
    2. NO AMIGO, SOLO DEBES INDICARLE LA HOJA


      SHEETS("DATOS").SELECT

      ESO ES TODO

      Borrar
    3. yo tambien necesito hacer eso urgente ahora , de acasualidad lo lograste hacer? si es asi contactame conmigo porfa:c

      Borrar
  3. Estupendo el tutorial me gusta la sencillez de la programación y la explicación. Saludos

    ResponderBorrar
  4. Yo tengo la misma duda, en mi caso solo para practicar. cree un formulario para datos mensuales. Pero necesito definir como programar para que si marco un chek en el mes de enero. Los datos se generen en la hoja 1 que corresponde al mes. Si marco febrero cumpla los comandos para la hoja 2 y así sucesivamente. Si alguien me pudiera ayudar

    ResponderBorrar
  5. Estimado el rango de celda activado no me funciona, me arroja los resultados 6 celdas mas abajo, que puedo hacer?

    ResponderBorrar
  6. BUENAS TARDES PRIMERO DARTE LAS GRACIAS POR TUS APORTES A LOS QUE ESTAMOS APRENDIENDO A PROGRAMAR EN EXCEL.
    EL DIA DE HOY TE PIDO AYUDA PORQUE MI FORMULARIO ME ESTA DANDO UN ERROR 424 EN EL COMBOBOX1
    Private Sub UserForm_Activate()
    ComboBobox1.RowSource = "CursoRealizar"
    ComboBobox2.RowSource = "EscP.N."
    ComboBobox3.RowSource = "INSTMP"
    ComboBobox4.RowSource = "ERD,ERD,FARD,PN"
    ComboBobox5.RowSource = "NivelAcademico"
    ComboBobox6.RowSource = "DirP.N."
    ComboBobox7.RowSource = "FormacionMP"
    ComboBobox8.RowSource = "Pais"
    End Sub
    Y GRACIAS POR ANTE MANOS POR TU AYUDA

    ResponderBorrar
  7. Hola, Soy Pedro de Costa Rica, me encantó el vídeo y me fue muy útil. Tengo una pregunta, donde puedo estudiar el vocabulario de programación de VBA?? Te lo pregunto porque me gustaría entrarle de lleno a aprender a programar con dicha herramienta

    ResponderBorrar
  8. Me podrías ayudar fíjate que hice lo que aprendí en el vídeo pero hay un pequeño detalle que cada vez que ingresó datos se queda en las mismas celdas no va en forma de lista por favor dime que puedo hacer!!!

    ResponderBorrar
  9. hola un pregunta me sale error en esta parte
    Private Sub CommandButton1_Click()
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    ComboBox1.Text = ""
    ComboBox2.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
    TextBox7.Text = ""
    y quiero saber porque si me base en tu programa y cuando quiero ingresar mas datos solo queda una persona y las demas no registran
    ayuda urg!!!

    ResponderBorrar
  10. cambia las "" por Empty, esto te limpia los campos

    Ivan Araujo

    ResponderBorrar
  11. BUENAS TARDES, ME FUE MUY BIEN CON EL VIDEO PERO CUANDO LE DOY A GRABAR ME SOBRE ESCRIBE LOS NOMBRES Y NO SE ME CORRE HACIA ABAJO COMO SE VE EN EL VIDEO QUE PUEDO HACER?

    ResponderBorrar
    Respuestas
    1. el mismo problema, lo solucionaste?

      Borrar
    2. SI ME FUNCIONO MI HOJA SE LLAMA DATA Y SOLO COPIE:
      Private Sub CommandButton2_Click()
      Dim XFILL As Integer
      Sheets("DATA").Select
      Range("A1").Activate
      XFIL = ActiveCell.CurrentRegion.Rows.Count
      ActiveCell.Offset(XFIL, 0) = TextBox1.Text
      ActiveCell.Offset(XFIL, 1) = TextBox2.Text
      ActiveCell.Offset(XFIL, 2) = TextBox3.Text
      ActiveCell.Offset(XFIL, 3) = TextBox4.Text
      ActiveCell.Offset(XFIL, 4) = TextBox5.Text
      ActiveCell.Offset(XFIL, 5) = TextBox6.Text
      ActiveCell.Offset(XFIL, 6) = TextBox7.Text
      ActiveCell.Offset(XFIL, 7) = TextBox8.Text
      ActiveCell.Offset(XFIL, 8) = TextBox9.Text
      ActiveCell.Offset(XFIL, 9) = TextBox10.Text

      Borrar
    3. A NO ES OTRO PROBLEMA EL QUE TIENEN USTEDES. LO SIENTO

      Borrar
  12. Y SI EL FORMULARIO LO TENGO EN HOJA UNO Y LA BASE DE DATOS EN HOJA 2???

    ResponderBorrar
  13. Como guardaste? Acabo de hacerlo igual todo me salio exacto pero no solo guarde en excel y el de visual no aparece nada

    ResponderBorrar
  14. hola que tal espero que estés bien una consulta como puedo guardar datos de un visual basic 6.0 a una hoja de excel 2013... espero su respuesta te agradezco antemanos si me puedes ayudar gracias excelente tutorial

    ResponderBorrar
  15. Buenas noches
    en la parte de insertar botón y poner el nombre de la tabla (userForm1.Show
    me sale depurar al principio y final

    ResponderBorrar
  16. Hola muy buenas tardes, solicito su apoyo con una duda. Me guié de los pasos para generar un formulario, es un muy buen vídeo. En mi formulario le indico que me cuente a partir de la celda A7

    Range("A7").Activate
    xfil = ActiveCell.CurrentRegion.Rows.Count

    sin embargo los datos me los coloca a partir de la celda A11 y posteriormente los remplaza.

    Si yo coloco la instrucción que inicie de la A12

    Range("A12").Activate
    xfil = ActiveCell.CurrentRegion.Rows.Count

    El código funciona correctamente y comienza a colocar los datos de la A12 en adelante.

    A que se debe ese error?

    Saludos.

    ResponderBorrar
  17. De casualidad no tiene las imagenes para los botones? Gracias

    ResponderBorrar
  18. Excelentemente explicado, un gran abrazo

    ResponderBorrar
  19. Hola, una pregunta, hago todo paso a paso, pero en vez de completarse la base de datos desde el rango que le pongo, me lo comienza a completar desde el final de la tabla, es decir, en vez de comenzar en la celda C6, comienza en la celda C2236 que es donde termina la tabla. podras ayudarme a saber donde esta el problema?


    ResponderBorrar
  20. Excelente todo, le consulto no me esta funcionando bien el grabado, no me salta una fila abajo, y me sobreescribe la que grabe inicialemnte. No encuentro el error

    ResponderBorrar
    Respuestas
    1. Hola, yo también tuve el mismo problema, pero lo solucioné quintando una letra que tenía demás (ActiveCell.Offset(xfil, 0) = TextBox1.Text) esto es lo q escribí y anduvo de diez.

      Borrar