sábado, 11 de febrero de 2012

Factorial con Macros en Visual Basic y Excel 2007

hola como estan, aqui les traigo un ejemplo de como calcular un factorial de un numero utilizando visual basic en Excel, para los que aun no se hayan animado por utilizar Visual podrian empezar por este pequeño ejemplo que hice, se que hay una funcion que tambien lo hace pero esto lo hice para gente que intente aprender a usar Visual Basic en Excel.
Lo que vamos a hacer en este ejemplo es a partir de un numero que se ingrese en una celda vamos a calcular su factorial pulsando un boton, en Excel 2003 recuerdo que era mas sencillo colocar un boton, para Office 2007 lo que tienen que hacer es ir al simbolo que esta en la esquina superior izquierda(el que esta al costado del diskette), le dan click y se van a opciones de excel
ahora en la ventana que les aparece se van a Personalizar y en el combo eligen todos los comandos, una vez aqui les va a salir una lista y se van al que dice Boton de Comando Control de Active X.
bueno hasta aqui lo que hemos logrado es mostrar el boton jajaj, pero aun no hace nada lo que vamos a hacer es Presionar ALT+F11 y nos va a salir el Editor de Visual Basic para Aplicaciones, una vez aqui vamos a declarar unas variables que vamos a usar para este programa, asi que en la primera linea pondremos
Option Explicit
con esto estamos forzando a definir el tipo de todas las variables(esto por las buenas practicas de programacion), ahora declaramos variables ya que al declararlas las macros se ejecutaran mas rapido y usaran menos memoria.
Ahora la sintaxis para declarar variables en VBA es:
Dim varname As type, varname As type,...
una buena practica que se hace al programar es ubicar todas las declaraciones Dim al principio del programa y agruparlas por el mismo tipo, mas abajo entenderan a lo que me refiero.
Bueno esto seguro lo habran visto en varios foros o pdfs de programacion en c o en otro lenguaje pero aqui lo citare rapido y fugaz los tipos de variables numericas:
  • Integers
    • tipo Integer (el rango va de -32 768 a 32767 o 2 bytes)
    • tipo Long (el rango va de -2 147 483 648 a 2 147 483 647 o 4 bytes)
  • Real o floating point
    • Tipo single (cerca de 7 digitos significativos de precision o 4 bytes)
    • Tipo double (cerca de 15 digitos significativos de preicion o 8 bytes)
Ahora para este ejemplo no necesitamos variables tipo double o long asi que con declararlas de tipo Single sera suficiente.
Option Explicit
Sub factorialconmacro()
    Dim n As Single, c As Single, initial As Single
    Dim i As Integer
    'input data
    'Application.Workbooks("Libro1.xls").Worksheets("Hoja1").
    Sheets("Hoja1").Select
    Range("B4").Select
    n = ActiveCell.Value
    initial = 1
    'calculo
    For i = 1 To n
        'calculamos el factorial
        c = initial * i
        initial = c
    Next i
    'resultado de salida
    Range("B5").Select
    Cells(5, 1) = "El factorial es: "
    
    ActiveCell.Value = c    
    
End Sub

en este codigo estamos eligiendo que el numero se ingresara en la celda B4 de la Hoja1, y su factorial se mostrara en la misma hoja pero en la celda B5 el cual le enviamos con el valor de c.
Ahora para que el boton que pusimos mas arriba ejecute el codigo le damos doble click y les saldra algo asi
Private Sub CommandButton1_Click()

End Sub
lo que tienen que hacer es poner dentro del evento click el nombre de la funcion
Private Sub CommandButton1_Click()
factorialconmacro
End Sub
Como ven aqui cuando pulsen el boton les saldra algo asi:
espero les haya servido este ejemplito, voy a tratar de poner mas y si es que no lo explique muy bien sorry me falta tiempo pero voy a tratar de poner too lo que pueda y si tienen alguna duda escribanmela por el chat que esta a su derecha y yo lo leere gracias por su tiempo :)

0 comentarios:

Publicar un comentario