Mostrando entradas con la etiqueta VBA. Mostrar todas las entradas
Mostrando entradas con la etiqueta VBA. Mostrar todas las entradas

martes, 25 de octubre de 2022

Cómo hacer una Base de Datos en Excel con Macros VBA - Parte 03 Botón Imprimir - Preguntas y Respuestas

Cómo hacer una Base de Datos en Excel con Macros VBA - Parte 03 Botón Imprimir - Preguntas y Respuestas


Hola estimados seguidores de la página Excel Cuántico, continuamos desarrollando nuestro proyecto "BASE DE DATOS EN EXCEL", en la primera parte vimos como codificar los botones: "Buscar, Guardar, Modificar y Eliminar", si todavía no lo revisaste presiona aquí. En la segunda parte vimos la programación de los Botones " Siguiente, Anterior, Inicio y Final", si todavía no lo revisaste presiona aquí.

En esta oportunidad vamos a responder las consultas que nos hicieron nuestros suscriptores de canal.



Iniciamos respondiendo a una de las consultas más realizadas, que es acerca del botón buscar, muchos de nuestros suscriptores tuvieron problemas con la búsqueda de información de la base de datos, esto es porque a un inicio realizamos la búsqueda utilizando la función "BUSCARV" en VBA, pero en esta ocasión lo vamos a reemplazar por un recorrido "FOR NEXT" como mostramos a continuación.

--------------------------------------------------------------------------------------------------------------------------
Private Sub CmdBuscar_Click()
'On Error Resume Next
'
'Me.TxtDni.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 2, 0)
'Me.TxtApellidos.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 3, 0)
'Me.TxtNombres.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 4, 0)
'Me.CmbGrado.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 5, 0)
'Me.CmbSeccion.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 6, 0)
'
'Me.TxtCodigo.Enabled = False

Dim X As Long, uFila As Long

uFila = nReg(Hoja1, 4, 1) - 1

For X = 4 To uFila
    If Hoja1.Cells(X, 1) = Me.TxtCodigo.Text Then
        Me.TxtDni.Text = Hoja1.Cells(X, 2)
        Me.TxtApellidos.Text = Hoja1.Cells(X, 3)
        Me.TxtNombres.Text = Hoja1.Cells(X, 4)
        Me.CmbGrado.Text = Hoja1.Cells(X, 5)
        Me.CmbSeccion.Text = Hoja1.Cells(X, 6)
    End If
Next X

End Sub

------------------------------------------------------------------------------------------------------------------------

Como vemos pusimos la anterior codificación en modo de comentario para poder realizar la nueva búsqueda con el recorrido "FOR NEXT". Ahora responderemos a la siguiente consulta: "Como hacer para que no borre los ceros delante del DNI", para ello lo que haremos es darle formato a la celda antes de guardar la información.

------------------------------------------------------------------------------------------------------------------------

With Hoja1.Cells(uFila, 2)
    .NumberFormat = "@"
End With
Hoja1.Cells(uFila, 2) = Me.TxtDni.Text

-----------------------------------------------------------------------------------------------------------------------

Con la codificación "NumberFormat" elegimos el formato de la celda, en este caso lo pusimos como formato de texto para que no elimine los ceros delante del DNI. Debemos hacer lo mismo en el botón "MODIFICAR".

Otra de las consultas es la siguiente "Como hacer para que no me permita agregar un alumno duplicado", para ello tenemos que hacer un recorrido en nuestra base de datos y validar si el alumno que queremos agregar no se encuentre ya registrado. La codificación que mostraremos a continuación la deben agregar en el botón "GUARDAR".

------------------------------------------------------------------------------------------------------------------------

For X = 4 To uFila - 1
    If Hoja1.Cells(X, 2) = Me.TxtDni.Text Then
        MsgBox ("El número de DNI ya fue registrado"), vbExclamation, "Excel Cuantico"
        Exit Sub
    End If
Next X

-----------------------------------------------------------------------------------------------------------------------

Si hasta el momento tienes dudas de como agregar la codificación que vamos mostrando no te preocupes al final del presente articulo vas a poder encontrar el video tutorial.

Otra consulta que nos hicieron fue "Que podamos imprimir el formulario", para ello tuvimos que agregar un botón y en dicho botón vamos a poner la siguiente codificación

----------------------------------------------------------------------------------------------------------------------

Private Sub BtnImprimir_Click()
On Error Resume Next
Me.CmdBuscar.Visible = False
Me.CmdGuardar.Visible = False
UserForm1.PrintForm
Me.CmdBuscar.Visible = True
Me.CmdGuardar.Visible = True
End Sub

------------------------------------------------------------------------------------------------------------------------

Con esto llegamos al final del presente artículo, espero que estemos aportando un granito en tu aprendizaje, bendiciones.

VER VÍDEO TUTORIAL


Aquí puedes ver el vídeo tutorial de "Como hacer una base de datos - Parte 03 Botón Imprimir - Preguntas y Respuestas". Si deseas encontrar más vídeos tutoriales presiona aquí.



DESCARGAR MATERIAL DE TRABAJO


Para descargar el material de trabajo PRESIONA AQUÍ o puedes encontrar en nuestra pestaña DESCARGAS

Si te gusto el presente articulo no te olvide de compartir en tus redes sociales, suscribirte al blog para que te llegue las novedades y suscribirte a nuestro canal de YouTube es completamente "GRATIS" SUSCRIBETE.

jueves, 11 de agosto de 2022

Cómo hacer una Base de Datos en Excel con Macros VBA - Parte 02 agregamos los botones Siguiente, Anterior, Inicio y Final

Cómo hacer una Base de Datos en Excel con Macros VBA - Parte 02 agregamos los botones Siguiente, Anterior, Inicio y Final


Hola estimados seguidores de la página Excel Cuántico, continuamos desarrollando nuestro proyecto "BASE DE DATOS EN EXCEL", en la primera parte vimos como codificar los botones: "Buscar, Guardar, Modificar y Eliminar", si todavía no lo revisaste presiona aquíEn esta oportunidad vamos a continuar agregando más botones a nuestro formulario.



Iniciamos agregando lo botones a nuestro formulario, para ello hacemos uso del "Cuadro de Herramientas" dentro de ello elegimos la opción "Botón de Comando" y arrastramos a nuestro formulario, seguido agregaremos iconos a los botones de esta manera obtenemos el siguiente resultado.



Ahora iniciaremos agregando la codificación a cada botón, nuestro primer botón a programar es "HABILITAR", que nos servirá para mostrar los botones que estamos agregando al formulario.

--------------------------------------------------------------------------------------------------------------------------

Private Sub CmdHabilitar_Click()
Dim uFila As Long

uFila = nReg(Hoja1, 4, 1) - 1

Call Inicio

Me.LblRegistro.Caption = 1
Me.LblTotal.Caption = uFila - 3
Me.Width = 389.25

End Sub

--------------------------------------------------------------------------------------------------------------------------

Como podemos ver en el procedimiento estamos llamando a la macro "INICIO", esta macro nos ayudará a mostrar los datos de nuestra hoja en el formulario, detallamos la codificación a continuación.

--------------------------------------------------------------------------------------------------------------------------

Sub Inicio()

Me.TxtCodigo.Text = Hoja1.Cells(M, 1)
Me.TxtDni.Text = Hoja1.Cells(M, 2)
Me.TxtApellidos.Text = Hoja1.Cells(M, 3)
Me.TxtNombres.Text = Hoja1.Cells(M, 4)
Me.CmbGrado.Text = Hoja1.Cells(M, 5)
Me.CmbSeccion.Text = Hoja1.Cells(M, 6)

End Sub

-------------------------------------------------------------------------------------------------------------------------

Para que no genere ningún tipo de error vamos agregar lo siguiente:

  1. Debemos declarar la Variable "M" como pública, para poder utilizar en todos los controles (Public M As Long)
  2. Asimismo, debemos agregar en el evento "UserForm_Initialize" lo siguiente: 
    1. Me.Width = 312 (Le asignamos el valor de 312 porque es el ancho del formulario al inicio)
    2. M = 4 (Le asignamos el valor de 4 porque es la fila donde inicia los datos)
Si te queda la duda en donde agregar esta codificación no te preocupes al final del articulo vamos a agregar el Video Tutorial donde te enseñaremos paso a paso.

Continuando nos toca programar el botón "SIGUIENTE", este botón nos ayudará visualizar los datos del siguiente alumno.

------------------------------------------------------------------------------------------------------------------------

Private Sub CmdSiguiente_Click()
Dim uFila As Long

uFila = nReg(Hoja1, 4, 1) - 1

M = M + 1

If uFila >= M Then
    Call Inicio
    Me.LblRegistro.Caption = M - 3
Else
    MsgBox ("Este es el último registro"), vbInformation, "Excel Cuantico"
End If

End Sub

-------------------------------------------------------------------------------------------------------------------------

Ahora veremos la programación del botón "ANTERIOR", este botón nos ayuda a visualizar los datos del alumno anterior, de esta forma podemos movernos dentro de nuestra base de datos.

-------------------------------------------------------------------------------------------------------------------------

Private Sub CmdAnterior_Click()

M = M - 1

If 4 <= M Then
    Call Inicio
    Me.LblRegistro.Caption = M - 3
Else
    MsgBox ("Este es el primer registro"), vbInformation, "Excel Cuantico"
End If

End Sub

------------------------------------------------------------------------------------------------------------------------

Seguimos programando los botones que agregamos a nuestro formulario "BASE DE DATOS", ahora nos toca el botón "INICIO", con este botón podremos ver el primer alumno de nuestra base de datos.

--------------------------------------------------------------------------------------------------------------------------

Private Sub CmdInicio_Click()
Dim uFila As Long

M = 4
uFila = nReg(Hoja1, 4, 1) - 1

Call Inicio

Me.LblRegistro.Caption = 1
Me.LblTotal.Caption = uFila - 3

End Sub

---------------------------------------------------------------------------------------------------------------------------

Continuando nos toca programar el botón "FINAL", con este botón podremos visualizar al último alumno de nuestra base de datos.

--------------------------------------------------------------------------------------------------------------------------

Private Sub CmdUltimo_Click()
Dim uFila As Long

uFila = nReg(Hoja1, 4, 1) - 1

M = uFila

Call Inicio

Me.LblRegistro.Caption = uFila - 3
Me.LblTotal.Caption = uFila - 3

End Sub

--------------------------------------------------------------------------------------------------------------------------

Por ultimo y no menos importante programaremos el botón "DESHABILITAR", este botón nos ayudará a ocultar los botones que acabamos de agregar y regresar el ancho del formulario a como estaba al inicio.

-------------------------------------------------------------------------------------------------------------------------

Private Sub CmdDeshabilitar_Click()

Me.Width = 312
Call Limpiar
Me.LblRegistro.Caption = ""
Me.LblTotal.Caption = ""

End Sub

--------------------------------------------------------------------------------------------------------------------------

Como observamos dentro del procedimiento llamamos a la macro "LIMIPIAR", esta macro ya la programamos en el artículo anterior, si deseas ver presiona aquí. Con esto llegamos al final del presente artículo, espero que estemos aportando un granito en tu aprendizaje, bendiciones.

VER VÍDEO TUTORIAL


Aquí puedes ver el vídeo tutorial de "Como hacer una base de datos - Part 02 con los botones "Siguiente, Anterior, Inicio y Último". Si deseas encontrar más vídeos tutoriales presiona aquí.



DESCARGAR MATERIAL DE TRABAJO


Para descargar el material de trabajo PRESIONA AQUÍ o puedes encontrar en nuestra pestaña DESCARGAS

Si te gusto el presente articulo no te olvide de compartir en tus redes sociales, suscribirte al blog para que te llegue las novedades y suscribirte a nuestro canal de YouTube es completamente "GRATIS" SUSCRIBETE.

jueves, 14 de julio de 2022

Cómo hacer una Base de Datos con los botones Buscar, Guardar, Modificar y Eliminar en Excel con Macros VBA

¿Cómo hacer una Base de Datos con los botones Buscar, Guardar, Modificar y Eliminar en Excel con Macros? 


Hola estimados seguidores de la página Excel Cuántico, nos volvemos a encontramos después de un buen tiempo, esta vez vamos aprender como crear una Base de Datos en excel con Macros (VBA - Excel), en esta primera parte la base de datos que crearemos tendrá los siguientes botones: Buscar, Guardar, Modificar y Eliminar, como nos caracterizamos lo desarrollaremos desde cero, así que pongamos manos a la obra.

Este será el resultado que obtendremos al final de esta primera parte del proyecto, ¿A que no se ve que esta muy COOL?.



Entonces no se diga más y comencemos,

Primero iniciamos diseñando nuestro formulario, para ello hacemos uso del "Cuadro de Herramientas" y utilizamos los diferentes "Controles", en esta oportunidad usaremos "Textbox", "Combobox" y "Botones de Comando", asimismo, agregaremos iconos a los botones para que se vean profesionales, este es el resultado del diseño del formulario.



Ahora nos toca cambiar el nombre (name) de cada control para que se mas fácil identificar al momento de programar. (Si no sabes donde hacerlo no te preocupes al final del articulo publicaremos el video tutorial).


Seguido vamos a ingresar la siguiente codificación en el evento "Initialize" del Userform, esto nos servirá para agregar datos al listado de los Combobox Grado y Sección.

------------------------------------------------------------------------------------------------------------------------

Private Sub UserForm_Initialize()
With Me.CmbGrado
    .AddItem "1º", 0
    .AddItem "2º", 1
    .AddItem "3º", 2
    .AddItem "4º", 3
    .AddItem "5º", 4
    .AddItem "6º", 5
End With

With Me.CmbSeccion
    .AddItem "A", 0
    .AddItem "B", 1
    .AddItem "C", 2
    .AddItem "D", 3
    .AddItem "E", 4
End With

End Sub

--------------------------------------------------------------------------------------------------------------------------

Para seguir programando necesitamos hacer una pausa y hablar acerca del famoso "nREG", que como indique en varias ocasiones esta codificación la obtuve del canal "Excel y Mas", que por cierto es buenísimo. Con esta codificación nos ayudaremos a encontrar la ultima fila en blanco (pega la siguiente codificación en un "Módulo").

-------------------------------------------------------------------------------------------------------------------------

Option Explicit
Option Private Module
Public Function nReg(Hoja As Worksheet, nFila As Long, nColumna As Integer)
    Do Until IsEmpty(Hoja.Cells(nFila, nColumna))
        nFila = nFila + 1
    Loop
    nReg = nFila
End Function

------------------------------------------------------------------------------------------------------------------------

Continuando empezaremos a programar los "Botones de Comando", nuestro primer botón elegido a ser programado es......... "BUSCAR". 

----------------------------------------------------------------------------------------------------------------------

Private Sub CmdBuscar_Click()
On Error Resume Next

Me.TxtDni.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 2, 0)
Me.TxtApellidos.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 3, 0)
Me.TxtNombres.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 4, 0)
Me.CmbGrado.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 5, 0)
Me.CmbSeccion.Text = Application.WorksheetFunction.VLookup(Me.TxtCodigo.Text, Hoja1.Range("A:F"), 6, 0)

Me.TxtCodigo.Enabled = False

End Sub

---------------------------------------------------------------------------------------------------------------------------

Ahora nuestro segundo botón elegido a ser programado es.............."GUARDAR". Que nos sirve para almacenar los datos del formulario en un hoja de excel.

---------------------------------------------------------------------------------------------------------------------------

Private Sub CmdGuardar_Click()
Dim uFila As Long

uFila = nReg(Hoja1, 4, 1)

Hoja1.Cells(uFila, 1) = Me.TxtCodigo.Text
Hoja1.Cells(uFila, 2) = Me.TxtDni.Text
Hoja1.Cells(uFila, 3) = Me.TxtApellidos.Text
Hoja1.Cells(uFila, 4) = Me.TxtNombres.Text
Hoja1.Cells(uFila, 5) = Me.CmbGrado.Text
Hoja1.Cells(uFila, 6) = Me.CmbSeccion.Text

Call Limpiar
Me.TxtCodigo.SetFocus

MsgBox ("Datos guardados con éxito"), vbInformation, "Excel Cuantico"

End Sub

-------------------------------------------------------------------------------------------------------------------------

Todavía queda "Botones de Comando" por programar, ahora es el turno del botón ................."MODIFICAR". Que nos sirve para modificar los datos guardados en la hoja de excel.

-------------------------------------------------------------------------------------------------------------------------

Private Sub CmdModificar_Click()
Dim uFila, X As Long

uFila = nReg(Hoja1, 4, 1) - 1

For X = 4 To uFila
    If Me.TxtCodigo.Text = Hoja1.Cells(X, 1) Then
        Hoja1.Cells(X, 2) = Me.TxtDni.Text
        Hoja1.Cells(X, 3) = Me.TxtApellidos.Text
        Hoja1.Cells(X, 4) = Me.TxtNombres.Text
        Hoja1.Cells(X, 5) = Me.CmbGrado.Text
        Hoja1.Cells(X, 6) = Me.CmbSeccion.Text
        Exit For
    End If
Next X

Call Limpiar
Me.TxtCodigo.Enabled = True

End Sub

---------------------------------------------------------------------------------------------------------------------------

Hey ya estamos cerca de terminar de programar todos lo botones, ahora sigamos con ............ exacto como lo pensaste, toca al botón "ELIMINAR". Con este botón podremos eliminar la información ingresada con los anteriores botones en nuestra hoja de excel.

---------------------------------------------------------------------------------------------------------------------------

Private Sub CmdEliminar_Click()
Dim uFila, X As Long

uFila = nReg(Hoja1, 4, 1) - 1

For X = 4 To uFila
    If Me.TxtCodigo.Text = Hoja1.Cells(X, 1) Then
        Hoja1.Cells(X, 1).EntireRow.Delete
        Exit For
    End If
Next X

Call Limpiar
Me.TxtCodigo.Enabled = True

End Sub

----------------------------------------------------------------------------------------------------------------------------

Y sin pensarlo llegamos al ultimo botón, que es el más sencillo de programar y el más utilizado, así es, es el botón "SALIR".

----------------------------------------------------------------------------------------------------------------------------

Private Sub CmdSalir_Click()
Unload Me
End Sub

---------------------------------------------------------------------------------------------------------------------------

Antes de mostrarles el video donde se explica detalladamente la programación de todo el formulario, debemos de agregar un procedimiento(Macro) con el nombre "Limpiar", que nos servirá para dejar todos los campos en blanco.

----------------------------------------------------------------------------------------------------------------------------

Sub Limpiar()
Me.TxtCodigo.Text = Empty
Me.TxtDni.Text = Empty
Me.TxtApellidos.Text = Empty
Me.TxtNombres.Text = Empty
Me.CmbGrado.Text = Empty
Me.CmbSeccion.Text = Empty
End Sub

-----------------------------------------------------------------------------------------------------------------------------

VER VÍDEO TUTORIAL


Aquí puedes ver el vídeo tutorial de "Como hacer una Base de Datos con los Botones "BUSCAR, GUARDAR, MODIFICAR y ELIMINAR". Si deseas encontrar más vídeos tutoriales presiona aquí.




DESCARGAR MATERIAL DE TRABAJO


Para descargar el material de trabajo PRESIONA AQUÍ o puedes encontrar en nuestra pestaña DESCARGAS

Si te gusto el presente articulo no te olvide de compartir en tus redes sociales, suscribirte al blog para que te llegue las novedades y suscribirte a nuestro canal de YouTube es completamente "GRATIS" SUSCRIBETE.

jueves, 9 de julio de 2020

Curso Aplicado de Programación VBA - Excel - Sesión 04 - Como utilizar la codificación "DO WHILE LOOP"

Hola estimado amantes de Microsoft Excel, en el presente artículo continuamos desarrollando nuestro pequeño "Curso Aplicado de Programación VBA - Excel", en esta oportunidad explicamos la codificación "DO WHILE LOOP" de forma sencilla y practica, con esta codificación lograremos realizar una sumatoria dinámica.


UTILIZANDO LA CODIFICACIÓN "DO WHILE LOOP"


Para explicar el funcionamiento de la codificación "DO WHILE LOOP", vamos a trabajar con nuestra tabla que creamos la sesión 03, en esa tabla tenemos una columna de descuentos, lo que haremos sera realizar una sumatoria en la ultima fila sin datos.


Con la tabla ya creada nos vamos al entorno de Visual Basic for Application, para ello seleccionamos la pestaña "Programador" (¿Como activar la pestaña programador?botón "Visual Basic", una vez que nos encontremos en el entorno de VBA, nos vamos al "Modulo 1", debajo de las macros que hemos creado en las sesiones anteriores (sesión 01sesión 02 y sesión 03), ahí ingresaremos una nueva macro, para ello escribimos "sub Suma" y presionamos enter, al momento de presionar enter se completara los datos necesarios para el funcionamiento correcto de una macro, quedando de la siguiente manera.


Ahora vamos a ingresar la codificación para que realice la sumatoria dinámica, para ello utilizaremos la codificación "DO WHILE LOOP", esta codificación nos permitirá hacer un recorrido de todos lo datos de nuestra tabla para que vaya sumando fila por fila.


Macro Suma Dinámica
------------------------------------------------------x----------------------------------------------------
Sub Suma()
Dim X As Long
Dim Sum As Currency

X = 4
Sum = 0

Do While Hoja2.Cells(X, 4)
    Sum = Sum + Hoja2.Cells(X, 4)
    X = X + 1
Loop

Hoja2.Cells(X, 4) = Sum
Hoja2.Cells(X, 3) = "Totales"
End Sub
------------------------------------------------------x----------------------------------------------------

Ahora que tenemos nuestra macro que realiza la suma dinámica, lo asignaremos al botón "Ejecutar" que tenemos en nuestra hoja, este botón lo creamos en la sesión 03. Para poder asignar nuestra macro primero tenemos que activar el modo de diseño luego presionamos doble clic en el botón ejecutar, seguido se nos abrirá el entorno de VBA con una ventana ahí llamaremos a nuestra macro "Suma".


Una vez asignada solo quedaría desactivar el modo de diseño y listo nuestra macro estaría ejecutándose correctamente.

VER VÍDEO TUTORIAL


Aquí puedes ver el vídeo tutorial de nuestra segunda sesión de nuestro "Curso Aplicado de Programación VBA - Excel". Si deseas ver el curso completo presiona aquí



DESCARGAR MATERIAL DE TRABAJO


Para descargar el material de trabajo PRESIONA AQUÍ o puedes encontrar en nuestra pestaña DESCARGAS

Si te gusto el presente articulo no te olvide de compartir en tus redes sociales, suscribirte al blog para que te llegue las novedades y suscribirte a nuestro canal de YouTube es completamente "GRATIS" SUSCRIBETE