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

martes, 2 de agosto de 2016

Crear una Macro, Nivel Manco.

Hoy vamos a crear una pequeña macro, para quienes no han realizado nunca alguna.

1. Primero deben abrir Excel
 

2.- Presionen la combinación de teclas ALT + F11, aquí una imagen


3.- Se les abrirá una pantalla de Visual Basic, deberán agregar un módulo, tal como se ve en la imagen:


4.- Luego de agregar un módulo les aparecerá la siguiente pantalla en blanco, hasta aquí todo bien...


5.- Luego en la sección en blanco, escribimos una pequeña función que nos abrirá un mensaje "Hola Mundo", para programar macros, Excel utiliza lenguaje VBScript.

Public Sub HolaMundo()
    MsgBox ("Hola Mundo")
End Sub

6.- Después de agregar la función, guardamos y regresamos a la plantilla en Excel, estando ahí agregamos un recuadro, para que nos sirva de botón:


7.- Luego presionamos botón derecho encima y seleccionamos "Asignar macro"

8.- Nos aparecerá un listado con todas las macros disponibles, seleccionamos HolaMundo y presionamos Aceptar.


9.- Completado, ahora al presionar el botón, nos desplegará el mensaje que pusimos en la macro.



lunes, 15 de diciembre de 2008

Convertir números a letras en Excel

Con esta pequeña macro podrán convertir números en letras

Ejemplo

1002 --> mil dos

Para utilizarla ingresar el siguiente código en una macro. (En Excel presionar alt+F11 luego [Insertar] módulo y pegas lo siguiente)
Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "cero"
Numeros(1) = "uno"
Numeros(2) = "dos"
Numeros(3) = "tres"
Numeros(4) = "cuatro"
Numeros(5) = "cinco"
Numeros(6) = "seis"
Numeros(7) = "siete"
Numeros(8) = "ocho"
Numeros(9) = "nueve"
Numeros(10) = "diez"
Numeros(11) = "once"
Numeros(12) = "doce"
Numeros(13) = "trece"
Numeros(14) = "catorce"
Numeros(15) = "quince"
Numeros(20) = "veinte"
Numeros(30) = "treinta"
Numeros(40) = "cuarenta"
Numeros(50) = "cincuenta"
Numeros(60) = "sesenta"
Numeros(70) = "setenta"
Numeros(80) = "ochenta"
Numeros(90) = "noventa"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= _
100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero _
- (Int(Numero / 100000000) * 100000000)) < _
1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And _
(Int(Numero / 100000000) <> 5) And (Int( _
Numero / 100000000) <> 7) And _
(Int(Numero / 100000000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * _
100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) _
Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / _
1000000))
Letras = Letras & " millones "
Numero = Numero - (Int(Numero / 1000000) _
* 1000000)
Else
Letras = Letras & Numeros(Int(Numero / _
10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) _
* 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) _
Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " un millón "
Else
Letras = Letras & Numeros(Int(Numero _
/ 1000000))
Letras = Letras & " millones "
End If
Numero = Numero - (Int(Numero / 1000000) _
* 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero _
- (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "cien mil "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int _
(Numero / 100000) <> 5) And (Int(Numero _
/ 100000) <> 7) And (Int(Numero / 100000) _
<> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * _
100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero _
/ 1000))
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * _
1000)
Else
Letras = Letras & Numeros(Int(Numero / _
10000) * 10)
Numero = Numero - (Int((Numero / 10000)) _
* 10000)
If Numero > 1000 Then
Letras = Letras & " y "
Else
Letras = Letras & " mil "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & "un"
Else
Letras = Letras & Numeros(Int(Numero / _
1000))
End If
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - _
(Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "cien "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100))
End Select
If (Int(Numero / 100) <> 1) And (Int _
(Numero / 100) <> 5) And (Int(Numero / _
100) <> 7) And (Int(Numero / 100) <> 9) _
Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 16 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero _
/ 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales > 0) Then
Letras = Letras & " con "
Letras = Letras & Format(Decimales * 100, "00") _
& "/100 centavos"
End If
num_letras = Letras
End Function

Luego para llamarla desde una celda de Excel lo haces con la siguiente función "=num_letras(B11)", donde B11 es la dirección de celda que tiene el número.

viernes, 12 de diciembre de 2008

Utilizar Asistente(Assistant) de Excel

A veces resulta entretenido utilizar el asistente de Excel para enviar mensajes, alertas o ayuda al usuario


Algunos ejemplos de utilización del Assistant

1.- Para abrir el asistente
With Application.Assistant
.On = True
.Visible = True
.Animation = msoAnimationWritingNotingSomething
End With
Visualización:
2.- Para ocultarlo:
With Application.Assistant
.Visible = False
End With

3.-Para enviar un mensaje desde el asistente:
Application.Assistant.Visible = True
Application.ScreenUpdating = True
Application.Assistant.DoAlert _
"CasosResueltos.BlogSpot.com", _
"Gracias por tu visita", _
msoAlertButtonOK, _
msoAlertIconInfo, _
msoAlertDefaultFirst, _
msoAlertCancelFirst, False

Visualización:

Etas son solo algunas de las configuraciones del Assistant de Excel, espero ustedes descubran las demás.

Maximizar un UserForm

Un ejemplo siempre útil que nos permite maximizar un UserForm al tamaño de la pantalla del usuario.

Para esto tenemos dos opciones:

1.- Maximiza el UserForm a la zona que abarcan las celdas de Excel.
With UserForm1
.Width = Application.UsableWidth
.Height = Application.UsableHeight
End With
Application.WindowState = xlMaximized

2.- Maximiza el UserForm a la resolución de la pantalla.
With UserForm1
.Width = Application.Width
.Height = Application.Height
End With