Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

String en vba

| 8 comentarios

Una variable es un dato o un conjunto de datos almacenados con una definición determinada. VBA permite la definición de muchas variables, las mismas que, de acuerdo al tipo de dato o valor almacenado, se denominan de manera distinta. Existen, entre otras, las variables Integer (para almacenar números enteros), Double (números con hasta dos cifras decimales) y String, para almacenar datos como texto.

La función String permite almacenar desde 0 hasta 2x10^9 caracteres, ya sean letras o números, siempre serán leídos como texto.

Declarar un String en VBA

La fórmula general para definir variables es la siguiente:

Dim [Nombre de la variable] As [Tipo de Variable]

-En el caso de una variable tipo String, que llamaremos "Ejemplo1" se pondría el siguiente comando:

Dim [Ejemplo1] as String

-Y una vez insertado el comando, se procederá a definir la variable "Ejemplo1", de la forma estándar de VBA:

Ejemplo1="Este es un ejemplo del uso de String para la Tarea 1 de Excel Avanzado".

De esta forma, cada vez que se quiera usar el texto, en vez de escribir todo el texto, invocaremos la variable "Ejemplo1", ahorrando asì tiempo.

Ejemplo de String en VBA

De una base de datos de notas de un curso, deseamos que Excel haga aparecer una ventana, indicando la nota que ha obtenido cada alumno.

Imagen1 1 300x242 String en vba

Base de datos de alumnos.
Elaboración propia.

(Para mayor visualización de  la imagen, hacer click en la misma)

Ahora, definimos la macro, de tal forma que queremos que salga un mensaje que nos indique que el alumno X ha obtenido la nota Y:

Imagen2 2 300x209 String en vba

Elaboración de la Macro.

(Para mayor visualización de  la imagen, hacer click en la misma)

En este caso, como el mensaje hace referencia a dos celdas distintas (la celda de alumno y la celda de nota), creamos dos variables String: "El alumno " y "ha obtenido en el curso la nota de ". Al ejecutar la macro, se obtiene el siguiente resultado. Luego, se define el mensaje con Msg.Box y se incluye entre las dos variables string los datos de las celdas que queremos mostrar. El resultado se muestra como sigue:

 

Imagen3 300x224 String en vba

Resultado de la macro.

(Para mayor visualización de  la imagen, hacer click en la misma)

No obstante, solo nos está botando el resultado del primer alumno. La macro debería repetir este ejercicio las cuatro veces para los cuatro alumnos, por lo que debemos indicar que repita la acción con el "For i = 2 to 5", para automatizar en cada una de las celdas donde hay información. De este modo, la versión final de la macro es:

Imagen4 300x207 String en vba

(Para mayor visualización de  la imagen, hacer click en la misma)

De esta forma, una vez que haya mostrado el mensaje del primer alumno, la macro pasará a la siguiente fila y mostrará los mensajes de los siguientes alumnos, hasta culminar.

Por: Daniel Oporto Patroni

8 comentarios

  1. Gracias, por la explicación.
    Muy didactico y entendible.

    saludos desde Perú.

  2. buenas tardes...

    soy nuevo en esto de programacion de macros..(bueno novato)

    quiero iniciarme para aprender lo basico primeramente--

    que recomientas leer o que paginas visitar!

    Saludos

    • Estimado Francisco

      Te recomiendo comenzar por:
      https://www.excel-avanzado.com/introduccion-a-las-macros

      Saludos

  3. hola alguien que me ayude con la siguiente pregunta[
    necesito sacar el porcentaje de un valor variable y sumarlo y que el resultado quede en la misma celda ejemplo
    si tengo en a1 un valor x necesito sacar el 12 % de ese valor y sumarlo al valor de a1 pero quede en la misma celda.
    muchas gracias por la ayuda

    • Multiplica el valor de A1 * 1.12

  4. Hola una pregunta, cuando yo tengo un valor que son números y letras, existe algún tipo de variable que permita realizar operaciones como multiplicación y división con este valor.

  5. Sub prueba()

    Dim xActivoNO As String

    Sheets("Filtro").Range("B2").Select

    For i = 2 To 3

    xActivoNO& i = ActiveCell.Value

    ActiveCell.Offset(1, 0).Select

    Next i

    End sub

    No puedo darle al nuevo nombre xActivoNO dependiendo de i, ya que necesito que quede en la memoria.

  6. Sub test()
    'La celda A1 es igual a A11
    'Cómo puedo hacer para que el resultado sea 2? Gracias
    A11 = 2
    R = "A" & 1 & 1
    Cells(1, 1) = R
    End Sub

Deja una respuesta

Los campos requeridos estan marcados con *.