Como incluir Ñ en bucle For Next con letras




Anteriormente se presentó un post que mostraba como realizar un bucle For Next con letras; dicho ejemplo presenta un problema a los hispano parlantes ya que no incluía la Ñ; el cual recomiendo usar si no es necesario incluir esta letra en lo que requieren, ya que mucho más sencilla la codi
ficación; pero si necesita que en el bucle esté la Ñ también, en este post te presento la solución al inconveniente planteado; es decir en el ejemplo se mostrara como realizar un blucle con la instrucción For Next con letras del abecedario incluyendo la letra Ñ.

Como es sabido For Next se usa para repetir una tareas o realizar un bucle una x cantidad de veces, es decir solo sirve si se expresa un rango de números; pero en cientos de casos requerimos realizar el bucle entre letras por orden alfabético, lo cual no esta permitido por la instrucción For Next, permitiendo sólo la siguiente estrucutura.

For x= 1 to 20

Instrucciones

Next x

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


Es inválida la estructura: For x = A to Z; ya que en su sintaxis se debe indicar el primer número del bucle y el último número del mismo; para evitar se tiene que apelar a variables y la tabla del código Ascii para recorrer con la instrucción For ...Next todas las letras del abecedario incluyendo la Ñ.

En dicha tabla, la letra A esta representada por el número 60, la B por el 61, la C por el 62 y así sucesivamente hasta la Z que es representada por el número 90; por ello es posible realizar un bucle utilizando la sintaxis correcta de la instrucción For Next, es decir que recorre desde el número 60  al 90; a su vez ir cargando en una variable la letra que se forma con el código Ascii representado por el número que se recorre en ese momento.

He aquí el problema con la letra Ñ que en la tabla mencionada es representada por 165, probemos presionar Alt + 165 y en pantalla aparecerá donde estemos escribiendo la letra Ñ

En el ejemplo anterior donde no se incluía la Ñ, basta con realizar un bucle entre el 60 y 90; pero en este caso como la Ñ es representada por el 165, debemos forzar a que sea teñida en cuenta; para ello apelamos a la instrucción IF, que va verificando que la letra del bucle en cada momento sea igual a O, en es ese caso para el bucle e introduce la letra Ñ en forma forzada; luego se sigue con el bucle con el resto de las letras, esto se realiza con esta parte del código.

If Chr(i) = "O" And conta = 0 Then
letra = "Ñ"
i = 78
conta = 1
End If

En el ejemplo las instrucciones contenidas en el bloque For ... Next simplemente es escribir en las celdas de Excel las letras del abecedario, pero se podría incorporar cualquier código o procedimiento, el ejemplo aquí presentado sólo controla que el bucle se realice entre tal y tal letra; pero que se debe realizar dentro de la instrucción For ... Next es cuestión de lo que requiera cada uno.

Te invito a descargar el ejemplo denominado como incluir la letra Ñ en un bucle For ... Next para recorrer las letras del abecedario; desde el link del final, en el vídeo siguiente verás una explicación y funcionamiento de la macro en forma más detallada por lo que sugiero lo visualices.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub LetrasConÑ()
Dim conta As Boolean, fila As Long, letra As String
Set A = Sheets(ActiveSheet.Name)
conta = 0
fila = 2
For i = 65 To 90
letra = Chr(i)
If Chr(i) = "O" And conta = 0 Then
letra = "Ñ"
i = 78
conta = 1
End If
A.Cells(fila, "A") = letra
fila = fila + 1
Next i
End Sub

Sub Borra()
Range("A:A").Clear
End Sub




Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends