VENTANA DEL EDITOR DEL VBA

Volvamos al último procedimiento (Ejemplo02)

En esta macro, codificada en la sección anterior, ingresamos un dato numérico para A y otra para B. Supongamos que se ingresó 120 para A y 50 para B. Luego calculamos la suma y la depositamos en C (C = A+B); el producto D = A*B. Habrá podido notar que el producto y el cociente fueron correcto pero la suma no. La suma se emite como 12050. El 120 corresponde al contenido en A y 50 al de B.

¿Qué ha pasado? La función InputBox(...) entrega el dato ingresado en forma de texto; es decir, si digitamos 120, A recibe a 120 como texto, no como valor numérico. Lo mismo pasó con 50 para B. La operación (o función) sumar o "+", cuando no son valores numéricos, a la expresión A+B, el VBA lo toma como una concatenación; es decir, los "junta", por eso es que se tiene 12050. Pero eso no ocurre con el producto ni con el cociente, en donde, siendo operaciones aritméticas, convierte a A y B en valor numérico y luego ejecuta la operación indicada.

Es eso lo que debemos hacer toda vez que ingresemos datos numéricos que deban ser usados como valores numéricos: convertirlos a números antes de usarlos en operaciones aritméticas.

La conversión de un dato numérico que está como texto a valor numérico se hace mediante la función Val(...).

Sintaxis:
NomVar = VAL(NomVar)
NomVarX = VAL(NomVar)
La primera convierte a la variable numérico de tipo texto a valor numérico y lo deja en la misma variable. La segunda lo deja en otra variable.

Nota:
Hacemos notar que, toda línea de código que se inicia con un apóstrofe es considerado un comentario. Los comentarios son útiles en muchos casos.
 

Veamos el siguiente ejemplo.

Ejemplo 3

Cargue a memoria el Excel, estando en la hoja 1, vaya al editor ( [Alt]+[F11]). Inserte un módulo usando [Insertar] - [Módulo].
 

Vamos a codificar una macro que reciba lo siguiente:

- Nombre de producto .......... Usaremos la variable NomProd
- Cantidad del producto ...... Usaremos la variable Cant
- Precio del producto ........... Lo guardaremos en PrecioUnit
- Calcularemos el monto de la venta ....... guardaremos en MontoVenta
- Calcularemos el monto neto .......... lo dejaremos en MontoNeto (aquí aplicaremos el Igv que será una constante igual a 0.17, llamada Igv)
- Finalmente imprimiremos el contenido de NomPr, Cant, PrecioUnit, MontoVenta, MontoNeto.

Nota:
Todo lo que se va a imprimir debe estar separado (o unido) usando el carácter & (ampersand), porque no se puede concatenar valores numéricos y menos valores de tipo texto (NomProd y los otros).
 

El procedimiento es el siguiente:

' -------------------------------------------------------- Aquí se inicia
Dim NomProd As String
Dim Cant, PreciUnit, MontoVenta, MontoNeto As Double
Const Igv = 0.17

' Ingreso de datos
NomProd = InputBox("Nombre del producto")
' Vamos a ingresar la cantidad vendida pero no va a ser valor numérico
Cant = InputBox("Cantidad vendida")
' Ahora lo convertimos en valor numérico
Cant = Val(Cant)

' Pero también podemos convertir en valor numérico lo que se ingresa, los dos a la vez
PrecioUnit = Val(InputBox("Precio por unidad"))

'Calculamos la venta
MontoVenta = Cant * PrecioUnit
' Aplicamos el impuesto a las ventas de 17%
MontoNeto = MontoVenta + MontoVenta * Igv
' Imprimir resultado
MsgBox (NomProd & Cant & PrecioUnit & MontoVenta & MontoNeto)
' Entre un valor y otro insertamos espacio en blanco, una coma y espacio en blanco

MsgBox (NomProd & " , " & Cant & " , " & PrecioUnit & " , " & MontoVenta & " , " & MontoNeto)

' Las siguientes líneas pueden tener mejor presentación de los resultados:
MsgBox ("Nombre del producto: " & NomProd)
MsgBox ("Cantidad vendida: " & Cant)
MsgBox ("Precio unitario: " & PrecioUnit)
MsgBox ("Monto de la venta: " & MontoVenta)
MsgBox ("Monto neto: " & MontoNeto)

' ------------------------------------- Aquí termina

En el lado derecho del editor ingrese el nombre de nuestro procedimiento o macro (cabecera del procedimiento): Sub MiMac03 y presione [Intro]

Si desea copie y pegue al interior el procedimiento.

La siguiente imagen muestra este procedimiento.


Ahora guarde su libro como un archivo habilitado para macros. El nombre debe ser "MisMacros.xlsm". Asegúrese de que el tipo sea: "Libro de Excel habilitado para macros".

En la siguiente sesión veremos cómo repetir un grupo de sentencias usando la declaración FOR ... NEXT. Para ello haga clic aquí