Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

VBA en Excel

¿Qué es VBA ?

Microsoft VBA (Visual Basic for Applications ) es un lenguaje de macros que se emplea para crear aplicaciones que permiten ampliar la funcionalidad de programas de la suite Microsoft Office. Se puede señalar que Visual Basic para Aplicaciones es un subconjunto casi completo de Visual Basic, Microsoft VBA al estar incluido dentro del Microsoft Office, puede emplearse tanto en Word, Excel, Access así como en Powerpoint.

¿Cuál es la utilidad de Visual Basic para Aplicaciones?

La principal utilidad es radica en poder automatizar tareas frecuentes o cotidianas , algunas otras utilidades son:

- Crear sus propias funciones (funciones definidas por el usuario), que puedan ser invocadas de forma similar a las ya existentes, extendiendo las más de 300 funciones de Excel que vienen por defecto.

- Crear pantallas (por medio de formularios), para la ejecución de procesos o rutinas frecuentes.

- Lograr ahorros de tiempo considerables por medio de la automatización de las tareas frecuentes.

- Automatizar la interacción con otras herramientas de la familia Office (Word, PowerPoint, etc)

Curso de VBA en Excel

Si estas empezando, y deseas conocer todos sobre  VBA , te invitamos a revisar la https://www.excel-avanzado.com/introduccion-a-las-macros

En esa página introductoria podrás aprender a:

- Aprender VBA desde cero.

- Programar en Excel, utilizar la programación en VBA con facilidad.

- Utilizar Visual Basic en Excel 2019, 2016, y versiones previas.

- Usar el editor de VBA con destreza

- Usar los códigos de VBA, reconocer las instrucciones en VBA Excel

Uno de los aspectos mas importantes para dominar el lenguaje son las funciones que puedes emplear para las diversas macros a elaborarse visita Macros Funciones

Código en VBA en Excel

Si ya conoces algo y deseas revisar los mejores códigos VBA que tenemos por aquí te invitamos a revisar cualquiera de los siguientes artículos.

  1. Ejercicios resueltos de VBA
  2. Validar datos en VBA
  3. Sorteo en Excel con Macros
  4. RemoveDuplicates VBA Excel
  5. Uso de fechas en VBA
  6. Doble condicional en VBA
  7. Manipular Formatos en VBA
  8. Proceso Masivo de Datos
  9. Fechas en Formulario con VBA
  10. Simular usuario y Password en VBA
  11. El Modelo de Objetos de Excel
  12. VBA Guardar Como
  13. Quitar duplicados en VBA
  14. Macro para abrir y cerrar archivos en Excel
  15. Generar números primos en Excel
  16. Pantalla completa en Excel (VBA)
  17. Ventajas de usar Macros en Excel
  18. Personajes Principales de SAILOR MOON
  19. Lista Pokemon Excel
  20. Seleccionar rango en VBA
  21. 5 tips de macros recomendables
  22. 5 conceptos básicos de VBA
  23. 5 ejemplos de Macros con FOR
  24. Cinco conceptos para aprender VBA
  25. Mis cinco ejemplos “if…then…else” favoritos
  26. Mis 5 ejemplos favoritos de Macros
  27. 5 trucos de Macros recomendables
  28. 5 ejemplos de gráficos con macros
  29. 5 Funciones en VBA imprescindibles
  30. 5 Mejores ejemplos de tablas dinámicas con macros
  31. 5 ejemplos de uso de Loop
  32. 5 macros para el manejo de hojas en Excel
  33. 5 Ejemplos de macros con Select Case
  34. 5 Ejemplos de Macros con For
  35. Mis 5 ejercicios favoritos de userforms
  36. 5 macros para el manejo de rangos en Excel
  37. 5 Ejercicios de Funciones definidas por el usuario
  38. 5 Trucos de VBA necesarios
  39. 5 ejemplos favoritos de Userforms
  40. 5 ejemplos de macros con With
  41. 5 ejemplos para comenzar a usar Macros
  42. Ejemplos de funciones definidas por el usuario
  43. 5 macros para el manejo de libros en Excel
  44. ¿Qué es el WACC?
  45. Suma de decibeles
  46. Números Primos
  47. Catálogos de imágenes con Macros

 

Principales características de VBA en Excel

Automatización: VBA se utiliza principalmente para automatizar tareas repetitivas o complejas en Excel. Puedes escribir scripts para realizar acciones como cálculos avanzados, formateo personalizado, importación y exportación de datos, interacción con otras aplicaciones y mucho más.

Personalización: VBA permite la personalización de Excel. Puedes crear funciones personalizadas, agregar botones y formularios, modificar la interfaz de usuario y ajustar el comportamiento de Excel según tus necesidades específicas.

Programación orientada a objetos: VBA en Excel se basa en una programación orientada a objetos, lo que significa que puedes trabajar con objetos como hojas de cálculo, celdas, gráficos y otros elementos de Excel. Esto facilita la manipulación y gestión de datos y elementos en una hoja de cálculo.

Eventos: Puedes escribir código VBA que responda a eventos específicos, como cambios en celdas, clics de botones, apertura y cierre de libros, y más. Esto permite una mayor interactividad en las hojas de cálculo.

Acceso a funciones de Windows: VBA en Excel te permite acceder a funciones de Windows y a otros componentes de la suite de Office, lo que permite la integración de datos y la creación de soluciones más completas.

Creación de aplicaciones personalizadas: Con VBA, puedes desarrollar aplicaciones personalizadas en Excel que van más allá de las capacidades de una hoja de cálculo tradicional. Esto es útil para la creación de herramientas específicas para tu negocio.

Proceso por lotes: Puedes usar VBA para realizar procesos por lotes que involucren grandes conjuntos de datos o tareas repetitivas. Esto puede ahorrar tiempo y mejorar la eficiencia.

VBA en Excel es una herramienta poderosa que permite a los usuarios extender significativamente la funcionalidad de Excel y crear soluciones personalizadas. Sin embargo, también requiere conocimientos de programación y un enfoque cuidadoso, ya que un código incorrecto o inadecuado puede causar problemas en las hojas de cálculo. Es una habilidad valiosa para aquellos que desean automatizar tareas y personalizar Excel.

13 comentarios

  1. Gracias por la ayuda a distancia porque en las universidades de El Salvador esto no se enseña en curriculum de grado en informatica (5 años)

    Ok

  2. Buenos días.

    Tengo un archivo Excel con una lista de empresas ordenadas por su Número de Registro, Nombre Empresa, Dirección y otros datos.

    En otro archivo Excel, en la HOJA 1 inserté un TextBox en el cual ingreso el número de registro de una empresa.

    Como puedo hacer para que un segundo TextBox me aparezca el nombre de la empresa asociado a ese numero de registro (si es que existe).

    Desde ya muy agradecido por la ayuda que me puedan brindar.

    • Hola David

      Este ejemplo te puede servir
      https://www.excel-avanzado.com/22399/busqueda-de-datos.html

  3. Tengo un Libro Excel, en Hoja "Datos", con todos los datos del personal, en Hoja "Puestos2" los empleados que a su vez, también tienen un SEGUNDO cargo y función, y otra Hoja "Sucursales" todas las sucursales, Al utilizar Macro y crear otro Libro con un Listado, carga los datos que quiero mostrar, y todas las Sucursales, pero no logro hacer mostrar los empleados con SEGUNDO cargo y función de la Hoja"Puestos2"

    Do While Sheets("Sucursales").Cells(filaD, 2) Empty
    'Nombre del Destino
    wbListado.Sheets("Hoja1").Cells(filaN, 1) = Sheets("Sucursales").Cells(filaD, 3)
    filaN = filaN + 1
    VarSuc = Sheets("Sucursales").Cells(filaD, 2)

    Do While Sheets("Datos").Cells(fila, 13) = VarSuc
    If Sheets("Datos").Cells(fila, 13) Empty And Conta = 0 Then
    wbListado.Sheets("Hoja1").Cells(filaN, 1) = Sheets("Datos").Cells(fila, 1)
    wbListado.Sheets("Hoja1").Cells(filaN, 2) = Sheets("Datos").Cells(fila, 2)
    wbListado.Sheets("Hoja1").Cells(filaN, 3) = Sheets("Datos").Cells(fila, 8)
    End If
    Loop
    Do While Sheets("Puestos2").Cells(fila, 15) = VarSuc
    If Sheets("Puestos2").Cells(fila, 15) Empty And Conta = 0 Then
    wbListado.Sheets("Hoja1").Cells(filaN, 1) = Sheets("Puestos2").Cells(fila, 1)
    wbListado.Sheets("Hoja1").Cells(filaN, 2) = Sheets("Puestos2").Cells(fila, 2)
    wbListado.Sheets("Hoja1").Cells(filaN, 3) = Sheets("Puesto2").Cells(fila, 8)
    End If.
    Loop
    Loop

  4. Hola,

    Gracias por las muchas aportaciones, sois un pilar básico en mi progresión en el aprendizaje de creación de macros con las que estoy sacando un partido al excel que ni imaginaba un año atrás.

    Os quería preguntar si hay alguna forma de editar un código vba en excel mediante una macro, es decir si por ejemplo tengo varios archivos excel que todos contienen una misma macro y las quisiera editar todas... ¿hay alguna forma de hacerlo en bloque o de forma automatizada que me evitara entrar de una en una manualmente y hacer un copiar / pegar?.

    Saludos y gracias por anticipado,

  5. Buenos días. Mi inquietud es la siguiente
    Quiero realizar un formulario que tenga los siguientes botones; cerrar, guardar, buscar y editar. Pero cuando le de buscar me traiga los datos de la hoja y los pueda editar y pueda guardar los cambios pero directamente desde el formulario.
    Muchas gracias

  6. Hola , necesito ayuda , tengo una macro en el libro1 , el cual realiza la copia de la hoja1 de otro libro en una carpeta en el escritorio
    todo lo hace ok pero solo con archivos con formato .xlsx , como hago para que lea tambien el formato SCV???

    Este es el codigo:

    Sub Buscar_bases() 'Data Canal
    Application.ScreenUpdating = False
    With Sheets("Data")
    'verificamos si hay datos en la hoja donde se almacenaran los resultados
    datos = Application.CountA(.Range("A2:A9"))
    'insertamos una linea para poder limpiar el rango
    .Range("A1:I1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    'si hay datos en la hoja donde se almacenaran los resultados los borramos para actualizarla
    With .Range("A2:I5000")
    If datos > 0 Then .ClearContents
    'definimos de que libro extraeremos los datos
    ruta_libro = Cells(15, 4)
    nombre_libro = Cells(1, 23)
    nombre_hoja = "Hoja1"
    'insertamos las formulas
    .Formula = "='" & ruta_libro & "\[" & _
    nombre_libro & "]" & nombre_hoja & "'!a1"
    'dejamos solo los valores
    .Value = .Value
    .HorizontalAlignment = xlCenter
    End With
    'recorremos el rango para eliminar ceros
    For b = 1 To 9
    With .Columns(b)
    .AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=00"
    .SpecialCells(xlCellTypeVisible).ClearContents
    .AutoFit
    End With
    Next
    'eliminamos la linea que habiamos inssertado
    .Range("A1:I1").Delete Shift:=xlUp
    End With

    Application.ScreenUpdating = True
    End Sub

  7. HOLA, BUENAS TARDES! TENGO UNA DUDA CON RESPECTO A LA FORMULA SUMAR.SI

    En un reporte de caja que llevo por ventas, quiero sumar lo que tengo de venta en dinero del concepto de Diesel, incluyendo si fue en efectivo, transferencia o cheque. use la funcion sumar si, donde pongo en rango, donde estan los conceptos, en criterio pongo el concepto que quiero sumar osea Diesel, y en rango de suma los importes, seleccionado tres columnas. Y el problema aqui es que solo me suma lo de una columna... le estare haciendo mal? no me explico

  8. Unas las primeras cosas a aprender es el manejo de funciones, tanto las correspondientes al propio lenguaje, VBA o macros, como a las funciones definidas por el usuario.

  9. Hola

    Gracias por tu valiosa plataforma. Quisiera saber cual seria el codigo para hacer un cambio de contraseña. Es decir, que el usuario tenga la posibilidad de cambiar su contraseña sin necesidad de entrar a VB. Gracias de antemano.

  10. Buen dia

    este es mi codigo para buscar en una base de datos, pero quiero hacerlo para que al modificar algun dato de la busqueda se guarde con los nuevos datos capturados

    Sub Buscarrack()
    Dim celda As Range

    If Hoja1.Range("E9") = "" Then
    MsgBox "Escriba un Num de RACK para buscar."

    Else
    Set celda = Hoja2.Range("A:A").Find(What:=Hoja1.Range("E9").Value, _
    After:=Hoja2.Range("A1"))

    If celda Is Nothing Then
    Hoja1.Range("E9").Value = ""
    MsgBox "Este RACK no ah sido capturado"
    Else
    Hoja1.Range("E5").Value = celda.Offset(0, 1).Value 'mostrar fecha
    Hoja1.Range("I5").Value = celda.Offset(0, 2).Value 'mostrar usuario
    Hoja1.Range("E7").Value = celda.Offset(0, 3).Value 'mostrar Area
    Hoja1.Range("I7").Value = celda.Offset(0, 4).Value 'mostrar ubicacion
    Hoja1.Range("E11").Value = celda.Offset(0, 5).Value 'mostrar 11s
    End If
    End If

    End Sub

  11. Hola . Buenos dias desde Colombia. Por favor me pueden ayudar con una macro que cree en excel. Se trata de un listbox que me carga un listado con los nombres de unos archivos de imagenes y al ir seleccionando cada uno muestra la imagen en un control Image. Este control Image tiene asigando el evento click que al darle click sobre la imagen llama a un nuevo formulario en el cual se le puede dar zoom a la imagen para obsservar detalles de la imagen solamente. El problema que tengo es que al cerrar el formulario de zoom a la imagen cuando vuelvo al formulario anterior y continuo recorriendo el listado de fotos no se me actualiza el control Image y queda la ultima foto cuando le habia dado click para hacer zoom. Para probar coloque un control label para ver si cambiaba la imagen al ir recorriendo el listbox y si cambia y si le vuelvo a dar click sobre el control Image llama al formulario de zoom con esa otro foto pero como tal el control Image se queda congelado en la primera foto a la que le di click. Ya no se que hacer...por favor me pueden ayudar con esto?. Gracias

  12. Necesito un código que me marque los valores duplicados tanto en las columnas como en las filas de color amarillo y ordene los valores duplicados en columnas

Deja una respuesta

Los campos requeridos estan marcados con *.