You are on page 1of 3

Forzar la escritura en maysculas (o minsculas)

En otro artculo del blog expliqu como pasar un rango de celdas de maysculas a minsculas (o viceversa). Evidentemente no coment la posibilidad de utilizar la funcin =MAYUSC(texto), porque el macro solventaba todos los problemas que esa funcin no contempla, como por ejemplo que esa funcin debes utilizarla en otra celda, para luego hacer un copiado y pegado especial (pegando valores) en la celda de origen (siempre que lo que haya en la celda no sea una funcin, porque entonces la liaremos ms todava). Pues bien, ese macro solucionaba el tema de pasar un rango de celdas escrito en minsculas, a maysculas, o viceversa. Tambin contemplaba el hecho de que si lo que haba en la celda era una funcin, entonces no deba hacer nada, pues solo nos interesaba el texto.

El macro deberemos copiarlo en la hoja que queramos controlar para que todo lo que se escriba en ella, se pase a maysculas (o bien a minsculas):

Lo que tendremos que copiar es esto, si deseamos convertir todo lo que escribamos, automticamente en maysculas:

Private Sub Worksheet_Change(ByVal Target As Range) 'Si hay errores, que contine On Error Resume Next 'pasamos los datos a variables fila = Target.Row columna = Target.Column 'reescribimos el dato introducido en la celda pasndolo 'a maysculas siempre que no sea una frmula If Left(Cells(fila, columna).Formula, 1) <> "=" Then Cells(fila, columna) = UCase(Cells(fila, columna)) End Sub

Si por el contrario, lo que queremos es que todo lo que escribamos se convierta automticamente en minsculas, lo que tendremos que poner es esto:

Private Sub Worksheet_Change(ByVal Target As Range) 'Si hay errores, que contine On Error Resume Next 'pasamos los datos a variables fila = Target.Row columna = Target.Column 'reescribimos el dato introducido en la celda pasndolo 'a minsculas siempre que no sea una frmula If Left(Cells(fila, columna).Formula, 1) <> "=" Then Cells(fila, columna) = LCase(Cells(fila, columna)) End Sub

Si en cambio, lo que queremos es que estos cambios automticos sucedan en todas las hojas del libro, deberemos cambiar la primera lnea:

Private Sub Worksheet_Change(ByVal Target As Range)

Por esta otra, y adems, pegar el cdigo en ThisWorkbook:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Si ponis en prctica este sencillo ejemplo, veris como todo lo que escribis en la hoja (o en el libro, si lo habis aplicado a ThisWorkbook) se convierte automticamente en maysculas (o minsculas, dependiendo de lo que hayis elegido), pero que las funciones os las va a respetar dejndolas como siempre las trata Excel (normalmente siempre las pone en maysculas). Si no hubisemos puesto ese condicional en el macro que evala si se trata de una frmula o no, al cambiar o introducir una frmula en una celda, lo que obtendramos es el resultado de la citada funcin, como si hubisemos hecho un pegado especial de valores, pues no nos respetara la funcin introducida. Como veis, se trata de un macro muy sencillo, al que en alguna ocasin seguramente le daris buen uso.

You might also like