Visual Basic: conceptos esenciales y ejemplo práctico

Cuando hablamos de Visual Basic, muchos lo asocian a un lenguaje antiguo. Sin embargo, este lenguaje de Microsoft sigue vivo y presente en muchas aplicaciones, automatizaciones y desarrollos de escritorio. Desde macros avanzadas en Excel hasta sistemas completos de gestión, VB.NET continúa siendo un aliado de programadores y empresas que buscan soluciones rápidas y eficientes.

En este artículo vamos a ver los conceptos esenciales de Visual Basic, esos pilares que te permitirán crear desde scripts simples hasta aplicaciones robustas. Además, vamos a cerrar con un ejemplo práctico resuelto paso a paso, para que no solo lo leas, sino que puedas ponerlo en práctica desde hoy mismo.


Introducción a Visual Basic

Este lenguaje nació con un objetivo claro: simplificar la programación sin perder potencia. Hoy en día, su versión moderna (VB.NET) integra todo el ecosistema .NET, lo que permite crear aplicaciones para Windows, manejar bases de datos, automatizar procesos o interactuar con APIs.

Si vienes del mundo de Excel y has usado macros, sabrás que Visual Basic for Applications (VBA) es su hermano directo. Incluso, si has leído Cómo crear macros en Excel 2024 paso a paso, ya conocerás que en muchos casos el motor que hay detrás es este entorno de desarrollo.


Conceptos esenciales de Visual Basic

Para trabajar con este lenguaje, hay una serie de fundamentos que conviene dominar. Vamos a repasarlos, añadiendo ejemplos y buenas prácticas.

Tipos de datos en Visual Basic y uso de Option Strict/Explicit

En VB.NET, los tipos de datos definen qué clase de información puede almacenar una variable. Usar Option Strict On y Option Explicit On es vital para evitar errores silenciosos.
Por ejemplo:

Option Strict On
Option Explicit On

Dim nombre As String = "Enrique"
Dim edad As Integer = 30

Con estas opciones activadas, si intentas asignar un número a una cadena o viceversa sin conversión explícita, el compilador te avisará.

Control de flujo en Visual Basic: If, Select, For y While

El control de flujo te permite tomar decisiones y repetir acciones según condiciones:

  • If…Else: perfecto para evaluaciones simples.
  • Select Case: ideal para múltiples condiciones ordenadas.
  • For / While: para recorrer listas o ejecutar bloques repetitivos.

Ejemplo:

For i = 1 To 5
Console.WriteLine($"Número: {i}")
Next

Procedimientos y funciones en Visual Basic

Dividir el código en Sub y Function facilita la organización:

  • Sub: ejecuta acciones, pero no devuelve valor.
  • Function: ejecuta acciones y devuelve un resultado.
Function Suma(a As Integer, b As Integer) As Integer
Return a + b
End Function

Colecciones y listas en Visual Basic

Las colecciones genéricas como List(Of T) son más flexibles que los arrays. Permiten agregar, eliminar y buscar elementos fácilmente:

Dim lista As New List(Of String) From {"Uno", "Dos", "Tres"}

Programación orientada a objetos

VB.NET soporta OOP: encapsulación, herencia y polimorfismo. Esto ayuda a crear estructuras de código más escalables y fáciles de mantener.

Class Producto
Public Property Nombre As String
Public Property Precio As Decimal
End Class

Eventos y manejo en interfaces gráficas

En aplicaciones de escritorio, los eventos son la base. Por ejemplo, el evento Click de un botón:

Private Sub BtnCalcular_Click(...) Handles BtnCalcular.Click
' Acción al hacer clic
End Sub

Manejo de errores con Try…Catch

Nunca confíes en que todo saldrá bien. Controla las excepciones para evitar que la app se cierre inesperadamente:

Try
' Código riesgoso
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try

Entrada y salida de datos

Leer y escribir archivos es común en casi cualquier aplicación:

Using sw As New StreamWriter("datos.txt")
sw.WriteLine("Hola mundo")
End Using

Fechas, cadenas y conversiones

Usar DateTime y Decimal es esencial cuando trabajas con fechas y dinero, evitando errores de formato o redondeo.

Integración con la biblioteca .NET

Con este lenguaje tienes acceso completo a System.IO, System.Text, System.Linq y muchas otras librerías.


Ejemplo práctico: resumen de gastos en un CSV

Vamos a resolver un problema real: resumir gastos de un archivo CSV por mes y categoría.

Escenario del problema

Disponemos de un archivo gastos.csv con columnas: Fecha, Concepto, Categoria, Importe. Queremos generar un resumen ordenado por año, mes y categoría.

Razonamiento y enfoque

  1. Leer el archivo CSV de forma robusta.
  2. Parsear fechas e importes con cuidado de culturas y formatos.
  3. Agrupar datos por año, mes y categoría con LINQ.
  4. Exportar el resultado a un nuevo CSV.

Código completo en VB.NET

Option Strict On
Option Explicit On
Imports System
Imports System.IO
Imports System.Globalization
Imports Microsoft.VisualBasic.FileIO
Imports System.Linq

Module Program
Sub Main()
Dim ruta As String = "gastos.csv"
If Not File.Exists(ruta) Then
Console.WriteLine("Archivo no encontrado")
Return
End If

Dim gastos = New List(Of Gasto)()
Dim cultureEs = New CultureInfo("es-ES")

Using parser As New TextFieldParser(ruta)
parser.SetDelimiters(",")
parser.HasFieldsEnclosedInQuotes = True
parser.ReadFields()
While Not parser.EndOfData
Dim campos = parser.ReadFields()
Dim fecha As DateTime
If DateTime.TryParse(campos(0), cultureEs, DateTimeStyles.None, fecha) Then
Dim categoria = campos(2).Trim()
Dim importe As Decimal
If Decimal.TryParse(campos(3), NumberStyles.Any, cultureEs, importe) Then
gastos.Add(New Gasto With {.Fecha = fecha, .Categoria = categoria, .Importe = importe})
End If
End If
End While
End Using

Dim resumen = gastos.
GroupBy(Function(g) New With {Key .Year = g.Fecha.Year, Key .Month = g.Fecha.Month, Key .Categoria = g.Categoria}).
Select(Function(grp) New With {
.Year = grp.Key.Year,
.Month = grp.Key.Month,
.Categoria = grp.Key.Categoria,
.Total = grp.Sum(Function(g) g.Importe)
}).
OrderBy(Function(r) r.Year).
ThenBy(Function(r) r.Month)

Using sw As New StreamWriter("resumen_gastos.csv")
sw.WriteLine("Año,Mes,Categoría,Total")
For Each r In resumen
sw.WriteLine($"{r.Year},{r.Month:00},{r.Categoria},{r.Total:F2}")
Next
End Using
End Sub

Class Gasto
Public Property Fecha As DateTime
Public Property Categoria As String
Public Property Importe As Decimal
End Class
End Module

Explicación del código

  • TextFieldParser: gestiona delimitadores y comillas.
  • CultureInfo: asegura que fechas y números se lean correctamente.
  • LINQ: agrupa y ordena sin bucles complejos.

Posibles mejoras

  • Añadir interfaz gráfica para seleccionar el archivo.
  • Exportar también a JSON o XML.
  • Validar filas con Regex antes de procesarlas.

Conclusión y próximos pasos para seguir aprendiendo Visual Basic

Ahora que ya conoces los conceptos esenciales de Visual Basic y has visto cómo resolver un caso práctico, el siguiente paso es practicar creando tus propios proyectos. Puedes empezar con utilidades para el trabajo diario, como automatizadores de procesos, conversores de formatos o pequeños paneles de control.

Además, te recomiendo explorar:

  • Documentación oficial en Microsoft Learn sobre VB.NET.
  • Integrar Visual Basic con bases de datos como SQL Server.
  • Técnicas avanzadas con LINQ y programación asíncrona.

Si te interesa llevar estas ideas al mundo de Excel, recuerda que ya hemos explicado en detalle cómo usar Visual Basic para macros en el artículo de crear macros en Excel 2024.

En definitiva, Visual Basic sigue siendo un lenguaje muy útil y versátil. Con una base sólida y práctica constante, podrás desarrollar soluciones que realmente marquen la diferencia.

Compartir:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tabla de contenidos

Más posts

Categorías

Contáctame

Escríbeme a través del formulario. Estoy encantado de ayudarte con diseño web, contenido visual, redes o cualquier duda.