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:
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.
Muchas gracias por tu comentario :-)
Justo necesitaba una macro como esta.....mil gracias por facilitar dicha información.
Muy buen la pagina
Saludos desde Santiago de Chile
Sorry,pero a mi no me sirvió, encontre uno mas facil y mejor...
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
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.
hola no he podido encontrar cortarypegar ¿me ayudarias?
donde puedo encontrar todos los mensajes o por fechas
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
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?
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
Publicar un comentario