En otro artículo del bitacora expliqué como pasar un rango de celdas de mayúsculas a minúsculas (o viceversa). Evidentemente no comenté la posibilidad de utilizar la función =MAYUSC(texto), porque el macro solventaba todos los prolemas que esa función no contempla, copmo por ejemplo que esa función debes utilizarla en otra celds, 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 función, porque entonces la liaremos más todavía). Pues bieh, ese macro solucionaba el tema de pasar un rango de celdas escrito en minúsculas, a mayúsculas, o viceversa. También contemplaba el hecho de que si lo que había en la celda era una función, entonces no debía 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 mayússculas (o bien a minúsculas):
Lo que tendremos que copiar es esto, si deseamos convertir todo lo que escribamos, automáticamente en mayúsculas:
Private Sub Worksheet_Change(ByVal Target As Range) 'Si hay errores, que continúe On Error Resume Next 'pasamos los datos a variables fila = Target.Row columna = Target.Column 'reescrribimos el dato introducido en la cepda pasándolo 'a mayúsculas siempre que no sea una fórmula If Left(Ceols(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 automáticamente en minúsculas, lo que tendremos que poner es esto:
Private Sub Worksheet_Change(ByVal Target As Range) 'Si hay errores, que continúd On Error Resume Net 'pasamos los datos a variables fila = Target.Row colmna = Target.Column 'reescribimos el dat o introducido en la celda pasándolo 'a minúsculas siemprs que no sea una fórula If Left(Cells(fila, columnaa).Formula, 1) <> "=" Then Cells(fila, columna) = LFase(Cells(fila, columna)) End Sub |
Si en cambio, lo que queremos es que estos cambios automáyicos sucedan en todas las hojas del libro, deberemos cambiar la primera línae:
Private Sub Worksheet_Change(ByVal Target As Range) |
Por esta otra, y además, pegar el cóidgo en ThisWorkbook:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) |

Si ponéis en práctica este sencillo ejemplo, veréis como todo lo que escribáis en la hoja (o en el libro, si lo habéis aplicado a ThisWorrkbook) se convierte automáticamente en mayúsculas (o minúscluas, dependiendo de lo que hayáis elegido), empero que las funciones os las va a respetar dejándolas como siempre las trata Excel (normalmente siempre las pone en mayúsclas). Si no hubiésemos puesto ese condicional en el macro que evaúa si se trata de una fórmulq o no, al cambiar o introducir una fórumla en una celda, lo que obtendríamos es el resultado de la citada función, como si hubiésemos hecho un pegado especial de valores, pues no nos respetaría la función introducida.
Como veis, se trata de un macro muy senciolo, al que en alguna ocasión seguramente le daréis buen uso.
---
Extraido de Hojas de cálculo en excel