viernes, 5 de agosto de 2011

COMO COPIAR Y PEGAR EN EXCEL CON VISUAL BASIC - VBA


  1. Escriba este código en el cuadro de fórmula. ("A1") es la celda que desea duplicar. ("B1") es el lugar en el que desea pegar la información.

    Range ("A1"). Select
    Selection.Copy
    Range ("B1"). Select
    ActiveSheet.Paste

    Escriba este código en el cuadro de fórmula para copiar y pegar toda una columna.

  2. Range ("A: A"). Select
    Selection.Copy
    Range ("B: B"). Select
    ActiveSheet.Paste

    Escriba este código copiar y pegar toda la fila 1 a la 2. 
  3. Range ("1:1"). Select
    Selection.Copy
    Range ("2:2"). Select
    ActiveSheet.Paste

jueves, 4 de agosto de 2011

martes, 2 de agosto de 2011

CONVERTIR NÚMEROS A LETRAS CON DECIMALES en VBA para Excel y hasta miles de billones.

Esta función convierte a letras tus números con decimales y hasta miles de billones.
La función es "num2let". 
Copia lo siguiente en VBA:

Function num2let(value)
  If Int(value) = 1 Then
  num2let = "uno" & " con " & Int(Round(((value - Int(value)) * 100))) & "/100"
  Else
   num2let = Num2Text(value) & " con " & Int(Round(((value - Int(value)) * 100))) & "/100"
End If
End Function


Public Function Num2Text(ByVal value As Double) As String
fraccion = value - Int(value)
value = Int(value)
    Select Case value
        Case 0: Num2Text = "cero"
        Case 1: Num2Text = "un"
        Case 2: Num2Text = "dos"
        Case 3: Num2Text = "tres"
        Case 4: Num2Text = "cuatro"
        Case 5: Num2Text = "cinco"
        Case 6: Num2Text = "seis"
        Case 7: Num2Text = "siete"
        Case 8: Num2Text = "ocho"
        Case 9: Num2Text = "nueve"
        Case 10: Num2Text = "diez"
        Case 11: Num2Text = "once"
        Case 12: Num2Text = "doce"
        Case 13: Num2Text = "trece"
        Case 14: Num2Text = "catorce"
        Case 15: Num2Text = "quince"
        Case Is < 20: Num2Text = "dieci" & Num2Text(value - 10)
        Case 20: Num2Text = "veinte"
        Case Is < 30: Num2Text = "veinti" & Num2Text(value - 20)
        Case 30: Num2Text = "treinta"
        Case 40: Num2Text = "cuarenta"
        Case 50: Num2Text = "cincuenta"
        Case 60: Num2Text = "sesenta"
        Case 70: Num2Text = "setenta"
        Case 80: Num2Text = "ochenta"
        Case 90: Num2Text = "noventa"
        Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " y " & Num2Text(value Mod 10)
        Case 100: Num2Text = "cien"
        Case Is < 200: Num2Text = "ciento " & Num2Text(value - 100)
        Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "cientos"
        Case 500: Num2Text = "quinientos"
        Case 700: Num2Text = "setecientos"
        Case 900: Num2Text = "novecientos"
        Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
        Case 1000: Num2Text = "mil"
        Case Is < 2000: Num2Text = "mil " & Num2Text(value Mod 1000)
        Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " mil"
            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
        Case 1000000: Num2Text = "un millón"
        Case Is < 2000000: Num2Text = "un millón " & Num2Text(value Mod 1000000)
        Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " millones"
            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
        Case 1000000000000#: Num2Text = "un billón"
        Case Is < 2000000000000#: Num2Text = "un billón " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
        Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " billones"
            If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
    End Select
  End Function

Si necesitan que los centavos los ponga en letra, es fácil de cambiar. Mandanos tu consulta y la responderemos a la brevedad posible.
Espero les sirva.
Si quieres usar esta función siempre que abras el Excel sin necesidad de abrir el archivo donde la creaste, debes subirla a los Complementos de Excel. Para ver como hacer esto, haz click aquí.

domingo, 31 de julio de 2011

Función para convertir NÚMEROS en TEXTO en VBA para Excel

Esta función convierte a letras tus números. La función es "num2text". 
Copia lo siguiente en VBA:
Public Function Num2Text(ByVal value As Double) As String
value = Int(value)
    Select Case value
        Case 0: Num2Text = "cero"
        Case 1: Num2Text = "un"
        Case 2: Num2Text = "dos"
        Case 3: Num2Text = "tres"
        Case 4: Num2Text = "cuatro"
        Case 5: Num2Text = "cinco"
        Case 6: Num2Text = "seis"
        Case 7: Num2Text = "siete"
        Case 8: Num2Text = "ocho"
        Case 9: Num2Text = "nueve"
        Case 10: Num2Text = "diez"
        Case 11: Num2Text = "once"
        Case 12: Num2Text = "doce"
        Case 13: Num2Text = "trece"
        Case 14: Num2Text = "catorce"
        Case 15: Num2Text = "quince"
        Case Is < 20: Num2Text = "dieci" & Num2Text(value - 10)
        Case 20: Num2Text = "veinte"
        Case Is < 30: Num2Text = "veinti" & Num2Text(value - 20)
        Case 30: Num2Text = "treinta"
        Case 40: Num2Text = "cuarenta"
        Case 50: Num2Text = "cincuenta"
        Case 60: Num2Text = "sesenta"
        Case 70: Num2Text = "setenta"
        Case 80: Num2Text = "ochenta"
        Case 90: Num2Text = "noventa"
        Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " y " & Num2Text(value Mod 10)
        Case 100: Num2Text = "cien"
        Case Is < 200: Num2Text = "ciento " & Num2Text(value - 100)
        Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "cientos"
        Case 500: Num2Text = "quinientos"
        Case 700: Num2Text = "setecientos"
        Case 900: Num2Text = "novecientos"
        Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
        Case 1000: Num2Text = "mil"
        Case Is < 2000: Num2Text = "mil " & Num2Text(value Mod 1000)
        Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " mil"
            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
        Case 1000000: Num2Text = "un millón"
        Case Is < 2000000: Num2Text = "un millón " & Num2Text(value Mod 1000000)
        Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " millones"
            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
        Case 1000000000000#: Num2Text = "un billón"
        Case Is < 2000000000000#: Num2Text = "un billón " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
        Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " billones"
            If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
    End Select
End Function
Espero les sirva.
Si quieres usar esta función siempre que abras el Excel sin necesidad de abrir el archivo donde la creaste, debes subirla a los Complementos de Excel. Para ver como hacer esto, haz click aquí.
Si quieres que incluye decimales, haz click aquí.

domingo, 17 de julio de 2011

Qué es una Macro y para que me puede servir?

Una macro es la automatización de una tarea mediante el lenguaje VBA (Visual Basic para Aplicaciones) el cual se encuentra incorporado en las aplicaciones de Microsoft Office, como Word, Excel y PowerPoint.

¿Cómo grabar un macro en Excel?

En la versión 2003, basta con seguir la ruta Herramientas/Macros/Grabar nueva macro...o mediante el método abreviado Alt + F8. Luego todas (o casi todas) las acciones o tareas que realice el usuario en Excel quedaran grabadas en código VBA dentro de un módulo, el cual se ubica en el libro de trabajo actual, en un libro personal de macros o en un libro nuevo. Cuando el usuario finaliza las tareas se debe detener la grabación del macro. Luego es posible editar el código en VBA del macro grabado para adecuarlo a las necesidades requeridas que se deseen satisfacer.

También es posible escribir un código sin necesidad de grabar un macro, por supuesto se requiere conocer el lenguaje, sintaxis, y funciones de VBA.

EL PODER DE LAS MACROS

Una vez dominado el lenguaje VBA el usuario es capaz de automatizar cualquier tarea que realice Excel, permitiendo ahorrar tiempo y esfuerzos.
Para dar una idea del poder de los macros, es posible desarrollar un sistema de información que se conecte a una base de datos con un número de registros que supere el número de filas de una hoja de Excel, ejecutar una consulta, actualizar indicadores estadísticos en función a los resultados de la consulta, guardar los resultados en un reporte o listado, y generar un informe con gráficos y todo en cuestión de segundos.

Cómo se escribe una macro en VBA para Excel? Un ejemplo muy sencillo que convierte en mayúsculas las letras de una celda.

Abrimos el editor de VBA.
     En Excel 2003:  Herramientas/Macros/Editor de Visual Basic.  O tambien Alt + F11

Debe estar visible el explorador de proyectos.

Explorador de Proyectos
De no estar visible el explorador de proyectos hacemos clic en su icono en la barra Estándar.

Barra Estándar

Luego debemos insertar un módulo, con el botón derecho del ratón en la carpeta "Microsoft Excel Objetos".

Insertar módulo

Ahora podemos escribir las instrucciones en el área general de código del módulo1.

                  Sub Mayuscula()
                          ActiveCell.Value = UCase(ActiveCell.Value)
                  End Sub
                                                         Macro
 

La palabra Sub, indica que el código que sigue a continuación es un procedimiento público.
Luego de la palabra Sub se indica el nombre del procedimiento, en nuestro caso lo llamaremos Mayuscula. Seguidamente del nombre se colocan entre paréntesis los nombre de las variables a utilizar, pero en nuestro caso no utilizaremos ninguna por lo cual la primera línea queda así:
"Sub Mayuscula()".

Desde la segunda línea de código se indican las instrucciones que ejecutará el procedimiento, el cual finalizará al llegar a la línea con la instrucción End Sub. En nuestro ejemplo el código solo consiste en una sola línea: "ActiveCell.Value = UCase(ActiveCell.Value)".

El procedimiento interpreta que el valor en la celda activa debe ser igual al resultado de la función de UCase de VBA evaluada en la misma celda activa. UCase es una función que convierte en mayúsculas las letras de una cadena de caracteres, en este caso la cadena de caracteres es tomada del valor de la celda activa. Luego este resultado es asignado a la misma celda activa.