Excel VBA macro crear MsgBox con datos de una columna

Estoy intentando hacer un MsgBox con los datos de las celdas de la columna A de la Hoja1. En caso de que existan. El rango podría ser variable cada vez. No encuentro cómo puedo marcar el rango y seleccionar los datos de las celdas para conseguir algo así:

MsgBox "En la columna A están estos datos:" Y que salgan separados por coma los datos de cada celda de la columna A

No sé hacer esto último. ¿Alguna sugerencia?

1 Respuesta

Respuesta
3

Si la col A no tiene otras celdas más que las de la tabla (sin totales u otros textos al final) y las celdas no tienen fórmula (es decir que donde se ven vacías realmente lo están) el fin de rango se puede obtener como:

x = Range("A" & Rows.Count).End(xlUp).Row

En el video 30 de mi canal explico otro modo de encontrar el fin de rangos.

Luego habrá que recorrer desde fila inicio hasta x y evaluar si está vacía o no. Y si no lo está agregar su contenido a una cadena... algo así:

Sub mensaje()
'x Elsamatilde
'final de rango
x = Range("A" & Rows.Count).End(xlUp).Row
'recorrer col A y armar cadena
For i = 6 To x
If Range("A" & i) <> "" Then cadena = cadena & Range("A" & i) & "; "
Next i
'opcional: mostrar el mensaje
MsgBox cadena
End Sub

Notas: Esta macro dará los resultados esperados si la hoja cumple con las primeras condiciones que planteo al inicio. Si tu hoja tiene otra estructura debes dejarlo todo explicado.

Ajusta el inicio de rango para el bucle, en mi ejemplo es 6.

Si nunca habrá celdas vacías entre líneas no hará falta evaluarlo. Directamente será:

cadena = ---------

IMPORTANTE: el límite máximo para un MsgBox es de alrededor de 1024 caracteres pero depende de los saltos de carro, etc. Si vas a superar este número tendrás que optar por otro modo de presentar los datos.

Sdos y no olvides valorar la respuesta.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas