Hojas de cálculo en Excel - página principal

Pasar a mayúsculas o minúsculas

Este macro nos permitirá poner en mayúsculas un rango continuo de celdas. Si en alguna de las celdas tenemos una fórmula, y ejecutamos el macro sin evaluar si se trata o no de una fórmula, obtendríamos como resultado, el valor devuelto por la fórmula que teníamos inicialmente, es decir, perderíamos la propia fórmula ya que nos presentaría el resultado de la misma.

Para evitar eso, pondremos un condicional que mirará si el primer carácter de la cadena es un igual (signo igual), lo cual indicará que se trata de una fórmula. En caso de ser distinto, es decir, en caso de no ser una fórmula, entonces la pasaremos a mayúsculas.

Para obtener un rango de celdas en mayúsculas, nos situaremos en cualquier celda del mismo, y ejecutaremos este macro que tendremos previamente copiado y pegado en un módulo:


Sub Mayusculas()
'Nos desplazamos a la primera celda del rango
Selection.End(xlUp).Select
'Recorremos todo el rango de celdas hacia abajo,
'y las ponemos en mayúsculas

Do While Not IsEmpty(ActiveCell)
If Left(ActiveCell.Formula, 1) <> "=" Then
ActiveCell = UCase(ActiveCell)
End If
'pasamos a la siguiente fila
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Si por el contrario, lo que deseamos es pasar un rango de celdas a minúsculas, nos situaremos en cualquier celda del rango, y ejecutaremos este otro macro, que es parecido al anterior. Tan solo tendremos que cambiarle el nombre al macro, y el Ucase, pasará a ser ahora un Lcase:

Sub Minusculas()
'Nos desplazamos a la primera celda del rango
Selection.End(xlUp).Select
'Recorremos todo el rango de celdas hacia abajo,
'y las ponemos en minúsculas

Do While Not IsEmpty(ActiveCell)
If Left(ActiveCell.Formula, 1) <> "=" Then
ActiveCell = LCase(ActiveCell)
End If
'pasamos a la siguiente fila
ActiveCell.Offset(1, 0).Select
Loop
End Sub



10 comentarios:

Anónimo dijo...

Muy buen aporte, felicitaciones por compartir, me fue muy util y muy sencillo de entender, un abrazo y continua de esta manera, estoy muy agradecido.

Javier Marco dijo...

Muchas gracias por tu comentario :-)

Anónimo dijo...

Justo necesitaba una macro como esta.....mil gracias por facilitar dicha información.

Muy buen la pagina

Saludos desde Santiago de Chile

Anónimo dijo...

Sorry,pero a mi no me sirvió, encontre uno mas facil y mejor...

Anónimo dijo...

UN CORDIAL SALUDO Y FELICITACIONES POR TU EXCELENTE TRABAJO
ME HAN GUSTADO MUCHO TUS ESPLICACIONES.
NECESITO UN FAVOR TUYO ES QUE DESDE HACE RATO ESTOY TRABAJANDO EN EXCEL Y ME HA TOCADO CORTAR Y PEGAR DE UNA HOJA A OTRA PERO GRASIAS A ESTE PORTAL SE ME HA FACILITADO EL TRABAJO PERO AUN TENGO UN PROBLEMA NECESITO TOMAR SIERTOS DATOS DE UNA HOJA Y PASARLOS A OTRA DE SIERTA FORMA. EJEMPLO.
LLENO UNAS PROGRAMACIONES EN EXCEL ASI.
FECHA 10/05/10 (EN PRIMERA COLUMNA)
LUGAR BUENOS AIRES(SEGUNDA COLUMNA)
CATEGORIA ADMINISTRACION (TERCERA COLUMNA)
DIRECTOR JUAN CASTRO (CUARTA COLUMNA)
ASIT1 MIGUEL HOYOS (QUINTA COLUMNA)
ASIT2 RAFA MONTES (SEXTA COLUMNA)
PRACTICANTE MIGUEL CASTRO (OCTAVA COLUMNA)
Y DE ESTA LISTA SACO PARA IMPRIMIR CADA PROGRAMACION INDIVIDUAL ASI.
JUAN CASTRO
FECH LUG CAT DIR ASIT1 ASIT2 PRACT
10/05 buen abm x
ASI CON LOS DEMAS
\\TE RESUMI LOS NOMBRES POR QUE NO ME CABEN EN EL MENSAJE//
CADA PERSONA POR LO MUCHO TIENE 10 PROGRAMACIONES Y EL PROBLEMA ESTA EN QUE NO PUEDO SACAR LOS DATOS Y PONERLOS COMO LA SEGUNDA HOJA PARA TODOS LOS EMPLEADOS E IMPRIMIRLOS TODOS POR LO MENOS 3 POR HOJAS AL IMPRIMIR TE AGRADECERIA SI ME AYUDARAS ES QUE ME TOCA COPIAR HASTA 50 PROGRAMACIONES COPIANDO Y PEGANDO EL DIREC, ASIT1 Y ASIT2 Y PRACT BAN CHULEDO(X) EN LA PROGRAMACION A IMPRIMIR GRASIAS DE ANTEMANOS

Javier Marco dijo...

Mírate el artículo del estreno del blog, y más concretamente los comentarios. Hay un comentario con un macro llamado "copiarypegar" que hace algo muy parecido a eso que buscas, pero con un listado de clientes. Solo tendrás que adaptarlo a tus necesidades, pero creo que la idea te puede servir.

Saludos.

Anónimo dijo...

hola no he podido encontrar cortarypegar ¿me ayudarias?
donde puedo encontrar todos los mensajes o por fechas

Anónimo dijo...

buenas tardes necesito un favor de ustedes
utilice el codigo siquiente
Sub selecciono17()
Dim filalibre As Integer
ActiveWorkbook.Sheets(1).Activate 'selecciona la Hoja 1
Range("A1").Select
'el control se hará sobre la columna A, a partir de la fila
While ActiveCell.Value = ""
ActiveCell.Offset(0, 0).Select
'si la celda contiene datos, pasa a la fila siguiente
filalibre = ActiveCell.Row
'guarda en la variable filalibre el número de la primer fila sin datos.
'muestra el valor en celda "B2"
Range("B2") = filalibre
End Sub
Sub selecciono18()
Dim sd As Variant

Range("A1").Select
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
sd = tbl

End Sub
para recorrer celdas y seleccionar rango pero quiero uno que me recorra un rango que nose o rango con datos (porque actualizo el rango y despues no sirve)
me haga un filtro donde aparesca datos de una persona que no se (es decir ej. cuando filtro el me muestra una ventana para que escoja el campo por el que quiero filtrar yo quiero que el programa escoja el filtro por el primer criterio de una celda establecida y siga para los demas criterios)
el filtra por criterios y copia siertas celdas que yo le indique en el codigo y las pega en otra hoja
de antemano les agradesco si me ayudan necesito esa ayuda gracias

Anónimo dijo...

Muy Bueno.Quisiera saber si es posible hacer busqueda de un codigo alfanumerico y que contiene mayusculas y minusculas dentro del codigo Por ejemplo : A15bj78
Alguien Sabe como se hace esto?

Moises dijo...

Hola a todos
Como hacer una macro en Excel que me permita hacer la siguiente función

Ejemplo: SALAS ROJAS EDUARDO MANUEL

Que la macro haga la siguiente función:

SALAS Rojas Eduardo Manuel