Macros en Excel

C贸mo forzar la escritura en may煤sculas, usando VBA

Raymundo Ycaza
#Ingreso de Datos#Macros (VBA)#馃 Automatizaci贸n con Excel

La validaci贸n de datos siempre ha sido una de las principales preocupaciones (y dificultades) en nuestros archivos de Excel. Tanto as铆, que a veces se nos escapan peque帽os detalles que pueden llegar a causar grandes molestias.

Por ejemplo, est谩 el caso que ya te mostr茅, en el que se presenta la situaci贸n de necesitar聽de聽bloquear ciertas celdas en Excel, si no se han llenado otras.

Tambi茅n se nos puede presentar la necesidad de obligar al usuario (incluso a nosotros mismos) a escribir siempre en may煤sculas un dato determinado. O lo que es lo mismo,聽forzar la escritura en may煤sculas.

Forzar la escritura en may煤sculas usando VBA

Pero resulta que no quieres obligar a nuestro, ya de por s铆 ocupado, usuario a repetir el dato si se equivoc贸. Entonces la opci贸n ser铆a corregir autom谩ticamente el texto ingresado y transformarlo a may煤sculas.

Forzar la escritura en may煤sculas, usando Macros.

Para este proceso automatizado utilizaremos a nuestras ya conocidas amigas: Las Macros.

Primero, vas a crear un m贸dulo en el que colocar谩s una funci贸n que se encargue de transformar cualquier texto a may煤sculas. Si no recuerdas c贸mo se hace todo esto, p谩sate por aqu铆:聽Escribe tu primera Macro en Excel.

En el m贸dulo vas a insertar la siguiente funci贸n:

Option Explicit

Public Function AMayusculas(strTexto As String) As String AMayusculas = UCase(strTexto) End Function

De manera que hasta el momento debes tener algo parecido a esto:

Forzar la escritura en may煤sculas usando VBA

Ahora, la explicaci贸n

Como ves en el c贸digo, solo estoy pasando un argumento a la funci贸n聽que ser谩 el texto que deseo convertir a may煤sculas. Luego, lo devuelvo a la funci贸n AMayusculas, a trav茅s de un 鈥渢ratamiento鈥 聽que le doy usando la funci贸n UCase que ya viene incorporada en Excel.

Nota que tambi茅n llamo a la funci贸n UCase pas谩ndole como argumento el texto (strTexto)

Con esta sencilla funci贸n podr谩s convertir cualquier cadena de texto a may煤sculas y reutilizar谩s este c贸digo, en lugar de andar repitiendo lo mismo por aqu铆 y por all谩鈥

Y finalmente, la implementaci贸n

Para llamar a la funci贸n desde cualquier hoja de trabajo, deber谩s utilizar un c贸digo similar al que te dejo a continuaci贸n y lo colocar谩s dentro del objeto Hoja.

驴Cu谩l hoja? Pues la que vayas a utilizar. En este caso, la hoja en la que trabajar茅 es la Hoja 1, as铆 que all铆 colocar茅 el c贸digo:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range(鈥 E4鈥)) Is Nothing Then Target.Value = AMayusculas(Target.Value) End If End Sub

F铆jate que el c贸digo debes colocarlo dentro del evento Worksheet_Changet de la hoja. Puedes copiar y pegar todo el c贸digo para no hacerte l铆os; pero recuerda que es mejor que entiendas el por qu茅 de cada cosa.

Explicando un poco.

El evento Worksheet_Change indica que el c贸digo se ejecutar谩 solo cuando haya alg煤n cambio en nuestra hoja (es decir cuando escribamos algo o editemos una celda)

Dentro de la funci贸n, ya de entrada, nos encontramos con una condici贸n que 鈥榩regunta鈥: Si el rango de la celda que sufri贸 el cambio, se cruza聽con el rango E4, entonces contenido聽de la celda que ha cambiado ser谩 igual al mismo contenido, pero en may煤sculas.

Fin de la historia.

Pr谩ctico, 驴no lo crees?

Ahora ya puedes guardar tu archivo (no olvides guardarlo como .xlsm) y ver谩s c贸mo trabaja la macro y autom谩ticamente cambia el texto a may煤sculas, sin importar c贸mo lo escribas.

Forzar la escritura en may煤sculas usando VBA

驴Quieres descargar el archivo terminado?

Solo tienes que hacer clic en el siguiente bot贸n. 隆Es Gratis!

驴Qu茅 te parece esta soluci贸n?

Ahora te toca a ti, cu茅ntame tu opini贸n sobre esta soluci贸n a un problema sencillo; pero de consecuencias peliagudas en ciertas ocasiones.

驴Te has topado con esta necesidad en alguna ocasi贸n?

Te espero en los comentarios.

隆Nos vemos!

[firma]

鈫 Regresar al Blog