Escribir en una celda usando VBA

Cómo escribir en una celda, usando Macros (VBA)

En esta entrada te muestro un ejemplo sencillo de cómo lograr escribir en una celda, a través de las macros, para que comiences a dominar a la fiera.

A estas alturas ya no estás para cursos básicos y quieres ir a por todas. Te interesa entrar en el mundo de las macros y quieres un ejemplo sencillo y concreto, para comenzar con pie derecho

¡Muy bien! Vas por buen camino.

Lo que te mostraré hoy será un ejemplo muy básico y sencillo, que te permitirá comprender cómo usar VBA para escribir en una celda (es decir, escribir algo sin utilizar el teclado).

¿Y eso? ¿Para qué me sirve escribir en una celda con VBA?

¡Hey! Si estás leyendo esto, imagino que vienes con algo concreto en mente, o de lo contrario estás navegando sin rumbo.

La mejor forma de aprender a usar Excel, es usándolo con un objetivo específico.

Pero, ¡vamos! Si aprendes a utilizar las macros para escribir en las celdas de Excel, habrás dado tu primer paso en la construcción de tu propia aplicación a medida, la que te servirá como un asistente digital en tus labores cotidianas.

  • Puedes, por ejemplo, armar una factura y que guarde todos los datos de los clientes y sus compras en una base de datos.
  • También puedes crear tu sistema de tickets  con su respectivo seguimiento.
  • Incluso puedes crear un sistema generador de reportes que construya la información automáticamente desde los datos almacenados en tu BD.

¡Eh! Tranquil@

Vamos paso a paso, que así se llega lejos.

¿Has notado que a veces me extiendo un poco más en cosas sencillas?

Esto es porque quiero que prestes más atención y corras menos.

 Cómo escribir en una celda con VBA, en palabras planas

Primero y, como siempre, vas ingresar al editor de VBA y crearás un módulo (solo para no perder la costumbre)

Para escribir en la celda que esté seleccionada en ese momento (no importa cuál), este código será suficiente:

Option Explicit

Public Sub escribirConVBA()
    ActiveCell.Value = "¡Estoy aprendiendo VBA!"
End Sub

Explicación.

Nota que he creado la función escribirConVBA() dentro de la cual está el código que escribe en la celda activa.

La primera parte: ActiveCell, hace referencia a la celda activa o lo que es lo mismo, la celda que está seleccionada en el momento en el que se ejecuta la macro.

La parte que viene después del punto, es decir Value hace referencia al valor de la celda o el contenido en su interior.

Ésto quiere decir que ActiveCell.Value = , significa algo así como:

El valor de la celda activa será igual a…

Y la segunda parte, la que está entre comillas, será el valor que se ‘escribirá’ en la celda activa. Puede ser lo que tú quieras, desde un texto como en este ejemplo, un número, una fecha o el valor de otra celda. Incluso el resultado de un cálculo.

¿Vas viendo por dónde van los tiros?

¡Sí! Podrías hacer muchas cosas partiendo de ésto.

Copiar el valor de otra celda.

Vamos a hacer un pequeño cambio. Tratemos ahora de copiar el contenido de la celda A1, en la celda activa. Ésto se logra con el siguiente cambio en el código.

Option Explicit
Public Sub escribirConVBA()
    ActiveCell.Value = Range("A3").Value
End Sub

Verás que ahora no uso el texto entre comillas, sino que en su lugar uso una referencia a la celda A3.

Una vez más el atributo ‘Value’ aparece, para indicarnos que el nuevo valor de la celda activa, será el valor que tenga la celda A3.

Si quisieras copiar el valor de otra celda, cualquiera que esta sea, solo tendrías que cambiar la referencia A3 por la que tú necesitas. Verás que después de ejecutar el código, tendrás una copia del valor de dicha celda, en la celda activa.

Escribir el resultado de un cálculo.

Hagamos una combinación del ejemplo anterior con un cálculo incluido. Ésto es muy común en aplicaciones como las que se usan para crear facturas.

Imagina que en la celda A3 tienes el precio de un artículo y quieres calcular el IVA.

Una vez calculado el IVA, quieres escribir el resultado en la celda activa. Por supuesto, ésto no lo quieres hacer con fórmulas sino con macros.

El ejemplo, para un IVA de 12%, quedaría más o menos así:

Option Explicit

Public Sub escribirConVBA()
    ActiveCell.Value = Range("A3").Value * 0.12
End Sub

¡Ajá! Ya se va poniendo interesante.

Con lo que has visto hasta ahora, ya tienes para ir haciendo tus pruebas y concretando ideas que tenías guardadas por ahí.

Pero, vamos viendo un último ejemplo, ¿qué dices?

Escribir en una celda específica.

Supongamos que no quieres escribir en cualquier celda que esté activa, sino que quieres elegir (mediante el código) en qué celda específica quieres escribir.

¿Se puede?

Si.

Veamos:

Option Explicit

Public Sub escribirConVBA()
    Range("D6").Value = Range("A3").Value * 0.12
End Sub

En este último ejemplo, hemos seleccionado la celda D6, en la cual escribimos el resultado de calcular el IVA del precio escrito en la celda A3.

Si quieres escribir en otra celda, bastará con que cambias la referencia D6 por la que tú necesites.

Concluyendo.

Aprender macros es ahora tu meta. ¡Felicitaciones por ello!

Pero recuerda ir con calma y atendiendo a cada detalle. Deja de estar revisando cientos y cientos de artículos y ponte a practicar. No desesperes por ver ejemplos muy básicos, ya vendrá el tiempo en que sufrirás con los difíciles 😀

Es muy importante que te familiarices con los conceptos básicos y con estos temas que son los pilares sobre los cuales construirás tus propias aplicaciones o soluciones, porque el objetivo final, es resolver un problema (o satisfacer un requerimiento si la palabra problema te causa un conflicto filosófico 😀 )

Mi consejo, es el de siempre: Practica, practica y practica. Pon tus conocimientos al servicio de alguien más, así ayudarás a otros, tendrás ocasión de practicar y aprenderás mucho y más rápido.

¡Nos vemos!

Raymundo

5 thoughts on “Cómo escribir en una celda, usando Macros (VBA)”

  1. ¿Qué podría hacer si para empezar la solución de un problema necesitara una tabla de datos de “n” personas para las cuales hay que capturar, digamos “nombre” “edad” “altura” “peso”? La idea sería que el usuario introdujera los datos guiado por Message boxes que dijeran por ejemplo “cuántas personas participaron en el estudio?” de modo que el usuario introdujera el número, por ejemplo “30” en un cuadrito de la message box y al dar aceptar apareciera otro mensaje “nombre de la persona 1” el usuario lo introdujera y se grabara en alguna celda definida para hacer los cálculos posteriormente; después otra message box con el mensaje “edad de la persona 1” … y así sucesivamente hasta llegar al messagebox “peso de la persona 30″…

  2. Marco Venegas

    Hola Raymundo
    Soy nuevo en código VBA, y necesito hacer lo siguiente:
    En un rango de celdas (A3:A500) mostrar un menú contextual que muestre algunas opciones predefinidas (no las normales) que se ejecute con el botón derecho del mouse, de modo tal que al seleccionar algunas de esas opciones ingrese el dato en la celda activa, por ejemplo si estoy en A4, presiono botón derecho y aparece el menú (como en la imagen) selecciono la opción 13 Factura manual con un click izquierdo que ingresa el valor 13 en la celda activa (A4).

    Será posible esto?

    1. esto lo envié hace 10 meses, todavía no tengo respuesta

      • Reply•Share ›
      Avatar
      Marco Venegas • hace 10 meses
      Hola Raymundo
      Soy nuevo en código VBA, y necesito hacer lo siguiente:
      En un rango de celdas (A3:A500) mostrar un menú contextual que muestre algunas opciones predefinidas (no las normales) que se ejecute con el botón derecho del mouse, de modo tal que al seleccionar algunas de esas opciones ingrese el dato en la celda activa, por ejemplo si estoy en A4, presiono botón derecho y aparece el menú (como en la imagen) selecciono la opción 13 Factura manual con un click izquierdo que ingresa el valor 13 en la celda activa (A4).

      Será posible esto?
      https://uploads.disquscdn.com/images/6fc61efc50eb7168b41add9587202383cc1e35e9dbbdf6f4ed88ce6757ff749c.jpg

      Miniaturas

  3. Dany Mtz Enriqz Spelera

    Hola que tal ,si tuviera que poner una secuencia de datos de una columna a un campo,por ejemplo la columna A2 tiene estos datos en distintos campos:1,2,3 y quiero que cada uno se vaya escribiendo en el campo B2,tengo este código. Dim x
    Dim i As Integer, j As Integer
    For i = 0 To 200
    ‘i = (“A2:A200”)’
    myarray = ActiveSheet.Range(“A2:A200”)
    myarray = (i) = Worksheets(“DIDI2”).Cells(3 + i).Value
    Range(“A2:A200”).Value = Range(“AO13:AP13”).Value
    Next i
    ‘i = (“A2:A200”)’
    ‘[AO13:AP13] = i(1, 1)’
    ‘myarray = ActiveSheet.Range(“A2:A200”)’

    ‘Dim i As Integer’

    ‘For i = 1 To 200’

    ‘If Cells(2, “A2”).Value > 0 Then’
    ‘Range(Cells(2, “A2”)).Copy’
    ‘Sheets(“DIDI2”).Activate’
    ‘Cells(i, “AO:AP”).Select’
    ‘ActiveSheet.Paste’
    ‘i = i + 1’
    ‘End If’
    ‘Next’
    ‘Range(“AO13:AP13”).Value = Range(“A2:A200”).Value’

    End Sub
    Me podrías ayudar?

Leave a Comment

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