Este documento describe varios conceptos relacionados con cadenas, entrada y salida de datos en VBA. Explica cómo manipular cadenas mediante funciones como Len, Mid, Left, Right, UCase, LCase, InStr y Replace. También cubre temas como debug, salida de datos usando MsgBox, entrada de datos con InputBox, y conversión de tipos al manipular datos.
CULTURA NAZCA, presentación en aula para compartir
Entrada y salida, manejo de cadenas de texto
1.
2. Cadenas, Entrada y Salida
Debug
Manipulación de cadenas
Salida, impresión de datos
Optimización de la salida de datos
Formato de datos
Entrada de datos
Manipulación y conversión de tipos
3. Debug
Se refiere al proceso de validación de un algoritmo
implementado en un lenguaje de programación.
Antes de escribir el código se recomienda hacer una prueba
de escritorio manual, de tal forma que se pueda revisar
como funciona la solución planteada.
Luego cuando se escribe el programa, VBA dispone de
algunas herramientas para poder hacer seguimiento al
programa en el momento de construcción.
4. Debug
Debug.print: Propiedad de VBA que permite imprimir
datos en la ventana de inmediato (CTRL + G)
Modo de uso:
For i = 1 To Len(str)
Debug.Print "i " & i & " caracter " & Mid(str, i, 1)
Next
En la imagen se muestra, el resultado de evaluar cada paso de un ciclo for
5. Debug
También se puede hacer debug, ejecutando instrucción por
instrucción el programa.
Usando la opción del menú Depuración / Paso a paso por
instrucciones cada vez que se quiera saltar a una nueva
instrucción o presionar f8 para cambiar de instrucción.
La instrucción que se esta ejecutando se subraya con un color
amarillo y se puede usar el mouse pasándolo por encima de las
variables para saber su valor.
6. Debug
Al presionar cuatro veces F8 la
ejecución llega hasta las
instrucciones del ciclo donde es
posible validar el valor de la i para
cada bucle.
De esta forma se pueden detectar y corregir errores en tiempo de ejecución,
detectar errores lógicos y al empezar a programar es una buena forma de
entender el funcionamiento de un programa.
Se recomienda al probar usar rangos de datos pequeños, para que los ciclos
terminen rápido
7. Manipulación de cadenas
Una cadena de caracteres se puede ver como una variable
que guarda un conjunto de datos alfanuméricos.
Es posible por medio de la programación, modificar, examinar
y controlar que pasa con la variable que representa la cadena.
Gráficamente una cadena se ve así:
8. Manipulación de cadenas
Cada carácter de una cadena ocupa una posición
identificada por medio de un índice, el primer dato tiene
índice 1, el total de datos en la cadena se llama longitud.
Es un error en tiempo de ejecución tratar de acceder a una
posición menor a 1 y mayor que la longitud. Para conocer la
longitud se puede usar la función, Len.
9. Manipulación de cadenas
Conocer la longitud de una cadena
Dim str As String
str = "Hola Mundo"
Debug.Print Len(str)
Imprime : 10
10. Manipulación de cadenas
Acceder a un dato de la cadena
Dim str As String
str = "Hola Mundo"
Debug.Print Mid(str, 1, 1)
Imprime : H
La función Mid, retorna el conjunto de caracteres solicitados entre
un rango de valores validos. Para el ejemplo se extrae a partir del
primer elemento y el total de elementos a extraer es uno.
11. Manipulación de cadenas
El resultado anterior también se puede calcular usando la función
Left, así:
Dim str As String
str = "Hola Mundo"
Debug.Print Left(str, 1)
Imprime: H
Retorna el total de datos a partir del inicio, en este caso un
caracter. La función Right(str, 1) retorna o, se comporta igual pero
de atrás hacia adelante
12. Manipulación de cadenas
Convertir a mayúscula/minúsculas una cadena
Dim str As String
str = "Hola Mundo"
Debug.Print UCase(str) & " " & LCase(str)
Imprime: HOLA MUNDO hola mundo
13. Manipulación de cadenas
Buscar una cadena en otra
Dim str As String
str = "Hola Mundo"
Debug.Print InStr(str, "Mundo")
Imprime: 6 (Índice de la primera coincidencia)
Busca en la cadena str, la cadena “Mundo”, esta función es
case sensitive
14. Manipulación de cadenas
Remplazar datos de una cadena por otro e invertir la cadena
Dim str As String
str = "Hola Mundo"
Debug.Print Replace(str, "o", "*") & " "
_ & StrReverse(str)
Imprime: H*la Mund* odnuM aloH
El carácter _ se usa para saltar de línea al escribir código en VBA
15. Manipulación de cadenas
Agregar espacios a una cadena
Dim str As String
str = "Hola Mundo"
Debug.Print Left(str, 4) & "" & Space(5) & Mid(str, 6, Len(str))
Imprime: Hola Mundo
‘se agregan 5 espacios en la mitad de la cadena.
Observe el uso de varias funciones en una misma instrucción
para llegar al resultado esperado.
16. Manipulación de cadenas
Remover espacios de una cadena
Dim str As String
str = " Hola Mundo “
Debug.Print "|" & LTrim(str) & "|“
Imprime :
|Hola Mundo |
Debug.Print "|" & RTrim(str) & "|“
Imprime:
| Hola Mundo|
Debug.Print "|" & Trim(str) & "|“
Imprime:
|Hola Mundo|
17. Manipulación de cadenas
Preguntar si una cadena guarda un dato que se puede
convertir a número
Dim str As String, str2 As String
str = "1234“
str2 = " Hola Mundo “
Debug.Print IsNumeric(str) & " " & _IsNumeric(str2)
Imprime: Verdadero Falso
18. Salida, impresión de datos
Se refiere a la interfaz de datos que se le presenta al
usuario para mostrarle las respuestas del programa.
Dim str As String
str = " Hola Mundo "
MsgBox str
19. Salida, impresión de datos
Dim str As String
Dim i As Integer
str = " Hola Mundo "
i = MsgBox(str, vbYesNo)
Debug.Print "i = vbYes " & (i = vbYes) & " i= vbNO " & (i = vbNo)
Imprime i = vbYes Falso i= vbNO Verdadero
Si el usuario presiona el botón No
20. Salida, impresión de datos
Las ventanas de mensaje se pueden personalizar usando
unas constantes de VBA, que indican cuales botones debe
mostrar la ventana, como lo indica la siguiente tabla:
21. Salida, impresión de datos
Y además se puede cambiar el icono que se muestra en la
ventana, los iconos disponibles son:
22. Salida, impresión de datos
Dim str As String
Dim i As Integer
str = " Hola Mundo "
i = MsgBox(str, vbRetryCancel Or vbExclamation)
Debug.Print "i = vbRetry " & (i = vbRetry) & " i= vbCancel " & (i = vbCancel)
Imprime:
i = vbRetry Verdadero i= vbCancel
Falso si el usuario presiona el botón retry
23. Optimización - Salida de datos
Cuando se van a
presentar datos al
usuario, se recomienda
mostrar un solo cuadro
con la información, así:
24. Optimización - Salida de datos
Ejemplo:
Dim str As String
Dim i As Integer
For i = 1 To 10
str = str & i & vbNewLine
Next
MsgBox str
Observe el uso de la constante vbNewLine para crear un salto de línea,
similar a vbCrlf. Además mire que solo se llama una vez la función MsgBox
25. Formato de datos
Para mostrar la salida al usuario se recomienda darle
formato a la salida, por ejemplo:
Dim devuelta As Double
devuelta = 2500
MsgBox "La devuelta es $: " & devuelta
MsgBox "Ingrese una opción así: " & vbCrLf _
& "1.Buscar" & vbCrLf & "2.Agrear" & vbCrLf _
& "3.Pagar" & vbCrLf & "4.Salir"
26. Entrada de datos
Para pedir al usuario que ingrese un dato, se usa la
función InputBox, así:
Dim ans As String
ans = InputBox("Ingrese un dato", “Captura de datos", "valor por defecto")
Nota: Esta función siempre retorna una cadena.
27. Manipulación y conversión de tipos
Al pedir un dato al usuario usando la función InputBox, siempre se devuelve un dato de
tipo String (cadena), se debe convertir el dato a su equivalente numérico antes de
poder realizar operaciones aritméticas.
Dim a As String
Dim dato As Double
a = InputBox("Ingrese un dato para elevar al cuadrado")
If IsNumeric(a) Then
dato = CDbl(a)
MsgBox "El cuadrado de " & dato & " es " & (dato * dato)
Else
MsgBox "Error el dato ingresado no es un número", _ vbOKOnly Or vbCritical
End If
29. Práctica en parejas
Escriba un programa en VBA, que permita calcular las siguientes
operaciones, suma, resta, multiplicación, división, raíz, potencia, factorial,
Fibonacci.
Presente un menú de selección en una ventana al usuario donde se debe
seleccionar la operación. Sobra decir que se deben tener en cuenta los
casos especiales.
30. Escriba un programa que elimine las vocales de una cadena.
Escriba un programa que permita calcular si una palabra es
palíndroma. Una palabra es palíndroma si se lee igual de izquierda a
derecha y de derecha a izquierda. (ejemplo: Ana, arenera, anilina,
anana,oruro, oso, radar, reconocer…)
Escriba un programa que convierta un número binario a su equivalente
decimal y un decimal a su equivalente a binario. Solo números enteros
positivos.