Autor: Pere Manel Verdugo Zamora Web: http://www.peremanelv.com/pere3/Sitio_web_2/Bienvenida.html E-Mail: pereverdugo@gmail.com 1 Este tutorial te guiará paso a paso como crear una aplicación de Visual Basic para Excel. Para realizar este proyecto vamos a realizar los siguientes pasos: Abriremos una nueva hoja de Excel. El siguiente paso será guardar el proyecto, lo hacemos al principio porque así cada modificación importante que realícelos la iremos guardando. Seleccionaremos la pestaña “ARCHIVO”. Seleccionaremos la opción “Guardar”. 2 Seleccionaremos el botón “Examinar”. Como “Nombre de archivo:” pondremos “Proyecto de economía doméstica”. Como “Tipo” seleccionaremos “Libro de Excel habilitado para macros”. Lo guardamos con este tipo ya que el proyecto tendrá macros en Visual Basic y para que se puedan guardar hay que utilizar este tipo. El proyecto tiene que contener cuatro hojas tal como se muestra en la siguiente figura: Seleccionaremos la hoja “Portada”. 3 Seleccionaremos las columnas desde “A” hasta la “G”. De la pestaña “INSERTAR” seleccionaremos “Imágenes”. Seleccionaremos una imagen que tenemos guardada en nuestro ordenador (Las puedes descargar desde Internet). De la pestaña “INSERTAR” seleccionaremos “WordArt”. 4 Seleccionaremos el tipo de letra que más nos guste. Agregaremos el siguiente texto: Vamos a dibujar un botón: De la pestaña “INSERTAR” seleccionaremos “Formas”. Este será el resultado después de poner el texto “EMPEZAR”. 5 El siguiente paso será agregarle un Hipervínculo para decirle que se desplace a la pestaña “Cuentas”. Seleccionaremos la figura y de la pestaña “Insertar seleccionaremos “Hipervínculo”. En el apartado “Vincular a: seleccionaremos “Lugar de este documento” En el apartado “Escriba la referencia de celda:” escribiremos “B2”. En el apartado “Seleccione un lugar de este documento:” seleccionaremos “Cuentas”, seguido del botón “Aceptar”. 6 El siguiente paso será seleccionar la hoja “Cuentas”. Seleccionaremos las columnas “A, B y C” y las pintaremos de negro, como el la hoja “Portada”. De la pestaña “INSERTAR” seleccionaremos “SmartArt”. Del apartado “Lista” seleccionaremos el que tenemos seleccionado en la imagen. 7 Seleccionaremos donde pone [Texto] para cambiarlo. Seleccionaremos donde se encuentra la flecha de la última imagen para seleccionar imágenes que tenemos guardadas en nuestro ordenador. 8 Seleccionaremos el botón “Examinar”. Seleccionaremos la imagen, y a continuación el botón “Insertar”. Repetiremos este proceso con el apartado “Apuntes” y “Resultado”. Teniendo seleccionada dicha figura de la pestaña “HERRAMIENTAS DE SMARTART” seleccionaremos “Cambiar colores”. 9 Este será el resultado: 10 Seleccionaremos “Cuentas” y crearemos el siguiente “Hipervínculo”. Seleccionaremos “Apuntes” y crearemos el siguiente “Hipervínculo”. 11 Seleccionaremos “Resultado” y crearemos el siguiente “Hipervínculo”. Este será el resultado: El siguiente paso será seleccionar toda la hoja y copiar. 12 Seleccionaremos “Copiar”. Seleccionaremos toda la hoja “Apuntes” y de este pegar. Seleccionaremos toda la hoja “Resultados” y de este pegar. Ya puedes probar estos enlaces y podrás ver cómo nos desplazamos de una hoja a otra. 13 En la Hoja “Cuentas” escribiremos en las siguientes celdas. Las celdas en negro, las letras en blanco y Negrita y por último centrado. Seleccionaremos el rango (E3:F103) De la pestaña “Inicio” seleccionaremos “Bordes” y de este “Todos los bordes”. Este será el resultado: Para poder programar en Visual Basic y confeccionar los correspondientes formularios vamos a realizar los siguientes pasos: De la pestaña “DESARROLLADOR” seleccionaremos “Visual Basic”. 14 Este será el resultado: Vamos a crear nuestro primer formulario: Del menú “Insertar” seleccionaremos “UserForm”. 15 Etiqueta Caja de texto Cuadro combinado Botón Estos son los objetos que vamos a utilizar con todos los formulario. Diseñaremos el correspondiente formulario. Una vez seleccionada la Etiqueta en la ventana de Propiedades en apartado “Caption” escribiremos “CUENTA:”. 16 Seleccionaremos el primer botón y en “Propiedades” en el apartado “Caption” escribiremos “AGREGAR”. Esto lo repetiremos con el resto de botones. El siguiente paso será hacer doble cli sobre el botón “AGREGAR”, escribiremos el siguiente código: Private Sub CommandButton2_Click() For I = 1 To 100 If Cells(I + 2, 6).Value = TextBox1.Text Then MsgBox ("ESTA CUENTA YA EXISTE") TextBox1.Text = "" Exit Sub End If Next For I = 1 To 100 If Cells(I + 2, 6) = "" Then Cells(I + 2, 5).Value = I Cells(I + 2, 6).Value = TextBox1.Text Exit For End If Next TextBox1.Text = "" End Sub Haremos doble clic sobre el botón “BORRAR” y escribiremos el siguiente código: Private Sub CommandButton3_Click() TextBox1.Text = "" End Sub Haremos doble clic sobre el botón “SALIR” y escribiremos el siguiente código: Private Sub CommandButton1_Click() UserForm1.Hide End Sub 17 Vamos a crear un segundo formulario: Código del botón “BUSCAR” Private Sub CommandButton4_Click() For I = 1 To 100 If TextBox1.Text = Cells(I + 2, 5).Value Then TextBox2.Text = Cells(I + 2, 6).Value Exit For End If Next End Sub Código del botón “ELIMINAR” Private Sub CommandButton1_Click() For I = 1 To 100 If TextBox1.Text = Cells(I + 2, 5).Value Then Exit For End If Next Range(Cells(I + 2, 5), Cells(I + 2, 6)).Select Selection.ClearContents valor = I For A = valor To 100 Cells(A + 2, 5).Value = Cells(A + 3, 5).Value Cells(A + 2, 6).Value = Cells(A + 3, 6).Value Next 18 For I = 1 To 100 If Cells(I + 2, 6).Value <> "" Then Cells(I + 2, 5).Value = I End If Next TextBox1.Text = "" TextBox2.Text = "" End Sub Código del botón “BORRAR” Código del botón “SALIR” Private Sub CommandButton3_Click() UserForm2.Hide End Sub Dibujaremos los dos botones en la hoja de cálculo “Cuentas”. 19 Cambiaremos el nombre de los dos botones desde la ventana “Propiedades” el parámetro “Caption”. Escribiremos el código del botón “AGRAGAR CUENTA”. Private Sub CommandButton1_Click() UserForm1.Show End Sub Seleccionaremos la hoja “Apuntes”. El siguiente paso es desactivar el “Modo diseño” de la pestaña “DESARROLLADOR”, para probar el funcionamiento de los botones. Prueba de agregar alguna cuenta, como Sueldo, Electricidad, Gas, Teléfono. Elimina la cuenta 2 “Electricidad”. 20 En el Código escribiremos el número 2 que es el número de cuenta, seleccionaremos el botón “BUSCAR” y veremos la descripción de la cuenta. A continuación el botón “ELIMINAR” y el botón “SALIR”. Este será el resultado: Seleccionaremos la pestaña “DESARRILLADOR” y de este la opción “Visual Basic”. Haremos doble clic sobre el formulario, según imagen, no seleccionar ningún objeto. Escribiremos el siguiente código: 21 Seleccionaremos “Activate” es decir este código se ejecuta cada vez que se llama al formulario. Este código almacena a un cuadro combinado los meses del año. En el botón “AGREGAR APUNTE” escribiremos el siguiente código: Private Sub CommandButton1_Click() For I = 1 To 500 If Cells(I + 2, 9).Value = "" Then Cells(I + 2, 5).Value = I Cells(I + 2, 6).Value = TextBox1.Text Cells(I + 2, 7).Value = ComboBox1.Text Cells(I + 2, 8).Value = TextBox2.Text Cells(I + 2, 9).Value = ComboBox2.Text Cells(I + 2, 10).Value = TextBox3.Text Cells(I + 2, 11).Value = TextBox4.Text Cells(I + 2, 12).Value = TextBox5.Text 22 TextBox1.Text = "" ComboBox1.Text = "" TextBox2.Text = "" ComboBox2.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" Exit For End If Next End Sub En el botón “BORRAR” escribiremos el siguiente código: Private Sub CommandButton4_Click() TextBox1.Text = "" ComboBox1.Text = "" TextBox2.Text = "" ComboBox2.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" End Sub En el botón “SALIR” escribiremos el siguiente código: Private Sub CommandButton3_Click() UserForm3.Hide End Sub Escribiremos el código del botón “ELIMINAR CUENTA”. Private Sub CommandButton2_Click() UserForm2.Show End Sub 23 Vamos a realizar otro formulario: Vamos a desactivar algunos campos. Enabled = False, a los campos se pueden consultar pero no se pueden introducir texto, están protegidos. El código para el botón “BUSCAR”. Private Sub CommandButton1_Click() REGISTRO = "NO" For I = 1 To 500 If TextBox1.Text = Cells(I + 2, 5).Value Then TextBox2.Text = Cells(I + 2, 6).Value TextBox3.Text = Cells(I + 2, 7).Value TextBox4.Text = Cells(I + 2, 8).Value TextBox5.Text = Cells(I + 2, 9).Value TextBox6.Text = Cells(I + 2, 10).Value 24 TextBox7.Text = Cells(I + 2, 11).Value TextBox8.Text = Cells(I + 2, 12).Value REGISTRO = "SI" End If Next If REGISTRO = "NO" Then MsgBox ("ESTE REGISTRO NO EXISTE") TextBox1.Text = "" End If End Sub El código para el botón “ELIMINAR”. Private Sub CommandButton2_Click() For I = 1 To 500 If TextBox1.Text = Cells(I + 2, 5).Value Then Exit For End If Next Range(Cells(I + 2, 5), Cells(I + 2, 12)).Select Selection.ClearContents valor = I For A = valor To 500 Cells(A + 2, 5).Value = Cells(A + 3, 5).Value Cells(A + 2, 6).Value = Cells(A + 3, 6).Value Cells(A + 2, 7).Value = Cells(A + 3, 7).Value Cells(A + 2, 8).Value = Cells(A + 3, 8).Value Cells(A + 2, 9).Value = Cells(A + 3, 9).Value Cells(A + 2, 10).Value = Cells(A + 3, 10).Value Cells(A + 2, 11).Value = Cells(A + 3, 11).Value Cells(A + 2, 12).Value = Cells(A + 3, 12).Value Next For I = 1 To 50 If Cells(I + 2, 5).Value <> "" Then 25 Cells(I + 2, 5).Value = I End If Next TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox8.Text = "" End Sub El código para el botón “BORRAR”. Private Sub CommandButton3_Click() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox7.Text = "" TextBox8.Text = "" End Sub El Código para el botón “SALIR”. Private Sub CommandButton4_Click() UserForm4.Hide End Sub 26 Agregar los dos botones con los que hicimos en la página “Cuentas”. Código para el botón “AGREGAR APUNTES”. Private Sub CommandButton1_Click() UserForm3.Show End Sub Código para el botón “ELIMINAR APUNTES”. Private Sub CommandButton2_Click() UserForm4.Show End Sub 27 Seleccionaremos la pestaña “RESULTADOS”. Diseñaremos la correspondiente tabla y botones. Vamos a crear los correspondientes formularios: Haremos doble clic sobre el formulario sin seleccionar ningún objeto. Con el fin de asignar valores a los dos cuadros combinados del formulario “ComboBox1” y “ComboBox2”. 28 Escribiremos el código del botón “CONSULTAR”: Private Sub CommandButton1_Click() A=0 For I = 1 To 500 If ComboBox1.Text = Sheets("Apuntes").Cells(I + 2, 7).Value And ComboBox2.Text = Sheets("Apuntes").Cells(I + 2, 8) Then A=A+1 Cells(A + 10, 5) = Sheets("Apuntes").Cells(I + 2, 5) Cells(A + 10, 6) = Sheets("Apuntes").Cells(I + 2, 6) Cells(A + 10, 7) = Sheets("Apuntes").Cells(I + 2, 7) Cells(A + 10, 8) = Sheets("Apuntes").Cells(I + 2, 8) Cells(A + 10, 9) = Sheets("Apuntes").Cells(I + 2, 9) Cells(A + 10, 10) = Sheets("Apuntes").Cells(I + 2, 10) Cells(A + 10, 11) = Sheets("Apuntes").Cells(I + 2, 11) Cells(A + 10, 12) = Sheets("Apuntes").Cells(I + 2, 12) End If 29 Next Cells(3, 8).Value = "CONSULTA POR MES Y AÑO" UserForm5.Hide End Sub Vamos a crear otro formulario: Haremos doble clic sobre el formulario sin seleccionar ningún objeto y escribiremos el siguiente código: El código que tiene que ir al botón “CONSULTAR”: Private Sub CommandButton1_Click() A=0 For I = 1 To 500 If ComboBox1.Text = Sheets("Apuntes").Cells(I + 2, 8).Value And ComboBox2.Text = Sheets("Apuntes").Cells(I + 2, 9).Value Then A=A+1 Cells(A + 10, 5) = Sheets("Apuntes").Cells(I + 2, 5) 30 Cells(A + 10, 6) = Sheets("Apuntes").Cells(I + 2, 6) Cells(A + 10, 7) = Sheets("Apuntes").Cells(I + 2, 7) Cells(A + 10, 8) = Sheets("Apuntes").Cells(I + 2, 8) Cells(A + 10, 9) = Sheets("Apuntes").Cells(I + 2, 9) Cells(A + 10, 10) = Sheets("Apuntes").Cells(I + 2, 10) Cells(A + 10, 11) = Sheets("Apuntes").Cells(I + 2, 11) Cells(A + 10, 12) = Sheets("Apuntes").Cells(I + 2, 12) End If Next Cells(3, 8).Value = "CONSULTA POR AÑO Y CUENTA" UserForm6.Hide End Sub Vamos a realizar el último formulario: Haremos doble clic sobre el formulario, sin seleccionar ningún objeto y escribiremos el siguiente código: 31 En el botón “CONSULTAR” escribiremos el siguiente código: Private Sub CommandButton1_Click() A=0 For I = 1 To 500 If ComboBox1.Text = Sheets("Apuntes").Cells(I + 2, 7).Value And ComboBox2.Text = Sheets("Apuntes").Cells(I + 2, 9).Value Then A=A+1 Cells(A + 10, 5) = Sheets("Apuntes").Cells(I + 2, 5) Cells(A + 10, 6) = Sheets("Apuntes").Cells(I + 2, 6) Cells(A + 10, 7) = Sheets("Apuntes").Cells(I + 2, 7) Cells(A + 10, 8) = Sheets("Apuntes").Cells(I + 2, 8) Cells(A + 10, 9) = Sheets("Apuntes").Cells(I + 2, 9) Cells(A + 10, 10) = Sheets("Apuntes").Cells(I + 2, 10) Cells(A + 10, 11) = Sheets("Apuntes").Cells(I + 2, 11) Cells(A + 10, 12) = Sheets("Apuntes").Cells(I + 2, 12) End If Next Cells(3, 8).Value = "CONSULTA POR MES Y CUENTA" UserForm7.Hide End Sub 32 Estos son los botones que hemos agregado a la página “Resultados”. Código para el botón “CONSULTA POR MES/CUENTA”. Private Sub CommandButton4_Click() UserForm7.Show End Sub Código para el botón “CONSULTA POR AÑO / CUENTA” Private Sub CommandButton2_Click() UserForm6.Show End Sub Código para el botón “CONSULTA POR MES / AÑO” Private Sub CommandButton1_Click() UserForm5.Show End Sub Código para el botón “BORRAR”. Private Sub CommandButton3_Click() Range(Cells(11, 5), Cells(111, 12)).Select Selection.ClearContents Cells(3, 8).Value = "" End Sub Ahora solo te que probar el proyecto, realiza una simulación de tu contabilidad doméstica, agregando aquellas cuentas como Salarios, Gastos de Electricidad, Gas, Teléfono, Alimentación etc. Realiza los correspondientes apuntes y para finalizar realizar los resultados para saber el estado de tus cuentas. Tú puedes agregar más botones con diferentes consultas guiándote con el código de un botón. En la misma página web donde has descargado este tutorial podrás descargar el proyecto en Excel por si me he dejado algún detalle y tú lo puedas averiguar. Si puedes mándame un comentario al correo pereverdugo@gmail.com 33